diff options
| -rw-r--r-- | src/libcollections/str.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index f1bb3b40804..b0c8f17eecc 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -808,6 +808,7 @@ impl OwnedStr for String { #[cfg(test)] mod tests { use std::iter::AdditiveIterator; + use std::iter::range; use std::default::Default; use std::char::Char; use std::clone::Clone; @@ -1611,6 +1612,30 @@ mod tests { } #[test] + fn test_chars_decoding() { + let mut bytes = [0u8, ..4]; + for c in range(0u32, 0x110000).filter_map(|c| ::core::char::from_u32(c)) { + let len = c.encode_utf8(bytes); + let s = ::core::str::from_utf8(bytes.slice_to(len)).unwrap(); + if Some(c) != s.chars().next() { + fail!("character {:x}={} does not decode correctly", c as u32, c); + } + } + } + + #[test] + fn test_chars_rev_decoding() { + let mut bytes = [0u8, ..4]; + for c in range(0u32, 0x110000).filter_map(|c| ::core::char::from_u32(c)) { + let len = c.encode_utf8(bytes); + let s = ::core::str::from_utf8(bytes.slice_to(len)).unwrap(); + if Some(c) != s.chars().rev().next() { + fail!("character {:x}={} does not decode correctly", c as u32, c); + } + } + } + + #[test] fn test_iterator_clone() { let s = "ศไทย中华Việt Nam"; let mut it = s.chars(); |
