32 lines
663 B
Rust
32 lines
663 B
Rust
|
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);
|
||
|
|
||
|
assert_eq!(actual.0, expected);
|
||
|
}
|