diff options
| author | Gary Linscott <glinscott@gmail.com> | 2013-07-10 17:06:16 -0400 |
|---|---|---|
| committer | Gary Linscott <glinscott@gmail.com> | 2013-07-11 14:23:15 -0400 |
| commit | 5aee5a11e3d4807c6df190e33cc6c4dc81ef7ea3 (patch) | |
| tree | 7a5607a93faa47e6e9b7e519a13b58ce380d3455 /src/test | |
| parent | 179637304a5d913a7ea2dc13cffed6e53f342377 (diff) | |
| download | rust-5aee5a11e3d4807c6df190e33cc6c4dc81ef7ea3.tar.gz rust-5aee5a11e3d4807c6df190e33cc6c4dc81ef7ea3.zip | |
Optimize is_utf8
Manually unroll the multibyte loops, and optimize for the single byte chars.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/utf8_chars.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/test/run-pass/utf8_chars.rs b/src/test/run-pass/utf8_chars.rs index 4364bcc1274..556d7dd521c 100644 --- a/src/test/run-pass/utf8_chars.rs +++ b/src/test/run-pass/utf8_chars.rs @@ -27,9 +27,20 @@ pub fn main() { assert!(s.char_at(1u) == 'é'); assert!((str::is_utf8(s.as_bytes()))); + // invalid prefix assert!((!str::is_utf8(~[0x80_u8]))); + // invalid 2 byte prefix assert!((!str::is_utf8(~[0xc0_u8]))); assert!((!str::is_utf8(~[0xc0_u8, 0x10_u8]))); + // invalid 3 byte prefix + assert!((!str::is_utf8(~[0xe0_u8]))); + assert!((!str::is_utf8(~[0xe0_u8, 0x10_u8]))); + assert!((!str::is_utf8(~[0xe0_u8, 0xff_u8, 0x10_u8]))); + // invalid 4 byte prefix + assert!((!str::is_utf8(~[0xf0_u8]))); + assert!((!str::is_utf8(~[0xf0_u8, 0x10_u8]))); + assert!((!str::is_utf8(~[0xf0_u8, 0xff_u8, 0x10_u8]))); + assert!((!str::is_utf8(~[0xf0_u8, 0xff_u8, 0xff_u8, 0x10_u8]))); let mut stack = ~"a×c€"; assert_eq!(stack.pop_char(), '€'); |
