]> git.lizzy.rs Git - rust.git/commitdiff
Make style more uniform, add tests for specialization of .last(), move tests to libco...
authorTicki <Ticki@users.noreply.github.com>
Tue, 12 Jan 2016 13:35:04 +0000 (14:35 +0100)
committerTicki <Ticki@users.noreply.github.com>
Sat, 16 Jan 2016 08:12:09 +0000 (09:12 +0100)
Remove unused import

Fold nth() method into the match expr

src/libcore/char.rs
src/libcoretest/char.rs

index 61f9fa7a2b631b8711424d2be202fceca36a85c0..e3915a701c9de55003d57f527fc27d981f082b5b 100644 (file)
@@ -540,91 +540,46 @@ fn size_hint(&self) -> (usize, Option<usize>) {
 
     fn count(self) -> usize {
         match self.state {
-            EscapeDefaultState::Char(_)       => 1,
+            EscapeDefaultState::Char(_) => 1,
             EscapeDefaultState::Unicode(iter) => iter.count(),
-            EscapeDefaultState::Done          => 0,
-            EscapeDefaultState::Backslash(_)  => 2,
+            EscapeDefaultState::Done => 0,
+            EscapeDefaultState::Backslash(_) => 2,
         }
     }
 
     fn nth(&mut self, n: usize) -> Option<char> {
-        let ch = match self.state {
-            EscapeDefaultState::Backslash(c)       => c,
-            EscapeDefaultState::Char(c)            => c,
-            EscapeDefaultState::Done               => return None,
-            EscapeDefaultState::Unicode(ref mut i) => return i.nth(n),
-        };
-
-        let start = if let Some(x) = self.get_offset() {
-            x
-        } else {
-            return None;
-        };
-        let idx = start + n;
-
-        // Update state
-        self.state = match idx {
-            0 => EscapeDefaultState::Char(ch),
-            _ => EscapeDefaultState::Done,
-        };
+        match self.state {
+            EscapeDefaultState::Backslash(c) if n == 0 => {
+                self.state = EscapeDefaultState::Char(c);
+                Some('\\')
+            },
+            EscapeDefaultState::Backslash(c) if n == 1 => {
+                self.state = EscapeDefaultState::Done;
+                Some(c)
+            },
+            EscapeDefaultState::Backslash(_) => {
+                self.state = EscapeDefaultState::Done;
+                None
+            },
+            EscapeDefaultState::Char(c) => {
+                self.state = EscapeDefaultState::Done;
 
-        match idx {
-            0 => Some('\\'),
-            1 => Some(ch),
-            _ => None,
+                if n == 0 {
+                    Some(c)
+                } else {
+                    None
+                }
+            },
+            EscapeDefaultState::Done => return None,
+            EscapeDefaultState::Unicode(ref mut i) => return i.nth(n),
         }
     }
 
     fn last(self) -> Option<char> {
         match self.state {
-            EscapeDefaultState::Unicode(iter)                              => iter.last(),
-            EscapeDefaultState::Done                                       => None,
+            EscapeDefaultState::Unicode(iter) => iter.last(),
+            EscapeDefaultState::Done => None,
             EscapeDefaultState::Backslash(c) | EscapeDefaultState::Char(c) => Some(c),
         }
     }
 }
-
-#[test]
-fn ed_iterator_specializations() {
-    use super::EscapeDefault;
-
-    // Check counting
-    assert_eq!('\n'.escape_default().count(), 2);
-    assert_eq!('c'.escape_default().count(), 1);
-    assert_eq!(' '.escape_default().count(), 1);
-    assert_eq!('\\'.escape_default().count(), 2);
-    assert_eq!('\''.escape_default().count(), 2);
-
-    // Check nth
-
-    // Check that OoB is handled correctly
-    assert_eq!('\n'.escape_default().nth(2), None);
-    assert_eq!('c'.escape_default().nth(1), None);
-    assert_eq!(' '.escape_default().nth(1), None);
-    assert_eq!('\\'.escape_default().nth(2), None);
-    assert_eq!('\''.escape_default().nth(2), None);
-
-    // Check the first char
-    assert_eq!('\n'.escape_default().nth(0), Some('\\'));
-    assert_eq!('c'.escape_default().nth(0), Some('c'));
-    assert_eq!(' '.escape_default().nth(0), Some(' '));
-    assert_eq!('\\'.escape_default().nth(0), Some('\\'));
-    assert_eq!('\''.escape_default().nth(0), Some('\\'));
-
-    // Check the second char
-    assert_eq!('\n'.escape_default().nth(1), Some('n'));
-    assert_eq!('\\'.escape_default().nth(1), Some('\\'));
-    assert_eq!('\''.escape_default().nth(1), Some('\''));
-}
-
-
-impl EscapeDefault {
-    fn get_offset(&self) -> Option<usize> {
-        match self.state {
-            EscapeDefaultState::Backslash(_) => Some(0),
-            EscapeDefaultState::Char(_)      => Some(1),
-            EscapeDefaultState::Done         => None,
-            EscapeDefaultState::Unicode(_)   => None,
-        }
-    }
-}
index d23442379bcd59095eb10767a480e5567539535f..c1f3ea42ef4f768d9b21e968e7fec2181f9eefd5 100644 (file)
@@ -216,3 +216,43 @@ fn check(s: &[u16], expected: &[Result<char, u16>]) {
     check(&[0xD800, 0x41, 0x42], &[Err(0xD800), Ok('A'), Ok('B')]);
     check(&[0xD800, 0], &[Err(0xD800), Ok('\0')]);
 }
+
+#[test]
+fn ed_iterator_specializations() {
+    // Check counting
+    assert_eq!('\n'.escape_default().count(), 2);
+    assert_eq!('c'.escape_default().count(), 1);
+    assert_eq!(' '.escape_default().count(), 1);
+    assert_eq!('\\'.escape_default().count(), 2);
+    assert_eq!('\''.escape_default().count(), 2);
+
+    // Check nth
+
+    // Check that OoB is handled correctly
+    assert_eq!('\n'.escape_default().nth(2), None);
+    assert_eq!('c'.escape_default().nth(1), None);
+    assert_eq!(' '.escape_default().nth(1), None);
+    assert_eq!('\\'.escape_default().nth(2), None);
+    assert_eq!('\''.escape_default().nth(2), None);
+
+    // Check the first char
+    assert_eq!('\n'.escape_default().nth(0), Some('\\'));
+    assert_eq!('c'.escape_default().nth(0), Some('c'));
+    assert_eq!(' '.escape_default().nth(0), Some(' '));
+    assert_eq!('\\'.escape_default().nth(0), Some('\\'));
+    assert_eq!('\''.escape_default().nth(0), Some('\\'));
+
+    // Check the second char
+    assert_eq!('\n'.escape_default().nth(1), Some('n'));
+    assert_eq!('\\'.escape_default().nth(1), Some('\\'));
+    assert_eq!('\''.escape_default().nth(1), Some('\''));
+
+    // Check the last char
+    assert_eq!('\n'.escape_default().last(), Some('n'));
+    assert_eq!('c'.escape_default().last(), Some('c'));
+    assert_eq!(' '.escape_default().last(), Some(' '));
+    assert_eq!('\\'.escape_default().last(), Some('\\'));
+    assert_eq!('\''.escape_default().last(), Some('\''));
+}
+
+