about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrik Sverdrup <bluss@users.noreply.github.com>2016-04-10 20:09:26 +0200
committerUlrik Sverdrup <bluss@users.noreply.github.com>2016-04-10 20:09:26 +0200
commitf0a1ea27ccf17e2f63c496e868aa7614842c077b (patch)
tree6b62129de212567f2c4d082c3b261f37209f40bc
parenta09f386e8d1c31133f0ce1123fbeaedcff40a77d (diff)
downloadrust-f0a1ea27ccf17e2f63c496e868aa7614842c077b.tar.gz
rust-f0a1ea27ccf17e2f63c496e868aa7614842c077b.zip
Add test for is_char_boundary
-rw-r--r--src/libcollectionstest/str.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libcollectionstest/str.rs b/src/libcollectionstest/str.rs
index 1150035eb42..c89972668e9 100644
--- a/src/libcollectionstest/str.rs
+++ b/src/libcollectionstest/str.rs
@@ -346,6 +346,22 @@ fn test_slice_fail() {
     &"中华Việt Nam"[0..2];
 }
 
+
+#[test]
+fn test_is_char_boundary() {
+    let s = "ศไทย中华Việt Nam β-release 🐱123";
+    assert!(s.is_char_boundary(0));
+    assert!(s.is_char_boundary(s.len()));
+    assert!(!s.is_char_boundary(s.len() + 1));
+    for (i, ch) in s.char_indices() {
+        // ensure character locations are boundaries and continuation bytes are not
+        assert!(s.is_char_boundary(i), "{} is a char boundary in {:?}", i, s);
+        for j in 1..ch.len_utf8() {
+            assert!(!s.is_char_boundary(i + j),
+                    "{} should not be a char boundary in {:?}", i + j, s);
+        }
+    }
+}
 const LOREM_PARAGRAPH: &'static str = "\
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse quis lorem sit amet dolor \
 ultricies condimentum. Praesent iaculis purus elit, ac malesuada quam malesuada in. Duis sed orci \