| use utf8parse::{Parser, Receiver}; |
| |
| static UTF8_DEMO: &[u8] = include_bytes!("UTF-8-demo.txt"); |
| |
| #[derive(Debug, PartialEq)] |
| struct StringWrapper(String); |
| |
| impl Receiver for StringWrapper { |
| fn codepoint(&mut self, c: char) { |
| self.0.push(c); |
| } |
| |
| fn invalid_sequence(&mut self) {} |
| } |
| |
| #[test] |
| fn utf8parse_test() { |
| let mut parser = Parser::new(); |
| |
| // utf8parse implementation |
| let mut actual = StringWrapper(String::new()); |
| |
| for byte in UTF8_DEMO { |
| parser.advance(&mut actual, *byte) |
| } |
| |
| // standard library implementation |
| let expected = String::from_utf8_lossy(UTF8_DEMO).to_string(); |
| |
| assert_eq!(actual.0, expected); |
| } |