about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2016-05-04 12:08:11 +0200
committerAndrea Canciani <ranma42@gmail.com>2016-05-04 12:23:10 +0200
commit8169fa2fe84b6e3944f7362d3e73ba763a2da1d9 (patch)
tree1fd377e045b352db022571dfa2f3c9cb54f0b280
parent167b510b7c59ad4d87993059401b94a5e1d1f8ff (diff)
downloadrust-8169fa2fe84b6e3944f7362d3e73ba763a2da1d9.tar.gz
rust-8169fa2fe84b6e3944f7362d3e73ba763a2da1d9.zip
Add test for `EscapeUnicode` specializations
-rw-r--r--src/libcoretest/char.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/libcoretest/char.rs b/src/libcoretest/char.rs
index 41fd742c9e0..e959e71daf7 100644
--- a/src/libcoretest/char.rs
+++ b/src/libcoretest/char.rs
@@ -262,4 +262,37 @@ fn ed_iterator_specializations() {
     assert_eq!('\''.escape_default().last(), Some('\''));
 }
 
+#[test]
+fn eu_iterator_specializations() {
+    fn check(c: char) {
+        let len = c.escape_unicode().count();
+
+        // Check OoB
+        assert_eq!(c.escape_unicode().nth(len), None);
+
+        // For all possible in-bound offsets
+        let mut iter = c.escape_unicode();
+        for offset in 0..len {
+            // Check last
+            assert_eq!(iter.clone().last(), Some('}'));
 
+            // Check counting
+            assert_eq!(iter.clone().count(), len - offset);
+
+            // Check nth
+            assert_eq!(c.escape_unicode().nth(offset), iter.next());
+        }
+
+        // Check post-last
+        assert_eq!(iter.clone().last(), None);
+        assert_eq!(iter.clone().count(), 0);
+    }
+
+    check('\u{0}');
+    check('\u{1}');
+    check('\u{12}');
+    check('\u{123}');
+    check('\u{1234}');
+    check('\u{12340}');
+    check('\u{10FFFF}');
+}