diff options
| author | Ulrik Sverdrup <bluss@users.noreply.github.com> | 2016-04-10 20:09:26 +0200 |
|---|---|---|
| committer | Ulrik Sverdrup <bluss@users.noreply.github.com> | 2016-04-10 20:09:26 +0200 |
| commit | f0a1ea27ccf17e2f63c496e868aa7614842c077b (patch) | |
| tree | 6b62129de212567f2c4d082c3b261f37209f40bc | |
| parent | a09f386e8d1c31133f0ce1123fbeaedcff40a77d (diff) | |
| download | rust-f0a1ea27ccf17e2f63c496e868aa7614842c077b.tar.gz rust-f0a1ea27ccf17e2f63c496e868aa7614842c077b.zip | |
Add test for is_char_boundary
| -rw-r--r-- | src/libcollectionstest/str.rs | 16 |
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 \ |
