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);
}
