1 /// A sequence of tests for checking whether lossy decoding uses the maximal 2 /// subpart strategy correctly. Namely, if a sequence of otherwise invalid 3 /// UTF-8 bytes is a valid prefix of a valid UTF-8 sequence, then the entire 4 /// prefix is replaced by a single replacement codepoint. In all other cases, 5 /// each invalid byte is replaced by a single replacement codepoint. 6 /// 7 /// The first element in each tuple is the expected result of lossy decoding, 8 /// while the second element is the input given. 9 pub(crate) const LOSSY_TESTS: &[(&str, &[u8])] = &[ 10 ("a", b"a"), 11 ("\u{FFFD}", b"\xFF"), 12 ("\u{FFFD}\u{FFFD}", b"\xFF\xFF"), 13 ("β\u{FFFD}", b"\xCE\xB2\xFF"), 14 ("☃\u{FFFD}", b"\xE2\x98\x83\xFF"), 15 ("\u{FFFD}", b"\xF0\x9D\x9D\xB1\xFF"), 16 ("\u{FFFD}\u{FFFD}", b"\xCE\xF0"), 17 ("\u{FFFD}\u{FFFD}", b"\xCE\xFF"), 18 ("\u{FFFD}\u{FFFD}", b"\xE2\x98\xF0"), 19 ("\u{FFFD}\u{FFFD}", b"\xE2\x98\xFF"), 20 ("\u{FFFD}", b"\xF0\x9D\x9D"), 21 ("\u{FFFD}\u{FFFD}", b"\xF0\x9D\x9D\xF0"), 22 ("\u{FFFD}\u{FFFD}", b"\xF0\x9D\x9D\xFF"), 23 ("\u{FFFD}", b"\xCE"), 24 ("a\u{FFFD}", b"a\xCE"), 25 ("\u{FFFD}", b"\xE2\x98"), 26 ("a\u{FFFD}", b"a\xE2\x98"), 27 ("\u{FFFD}", b"\xF0\x9D\x9C"), 28 ("a\u{FFFD}", b"a\xF0\x9D\x9C"), 29 ("a\u{FFFD}\u{FFFD}\u{FFFD}z", b"a\xED\xA0\x80z"), 30 ("☃βツ\u{FFFD}", b"\xe2\x98\x83\xce\xb2\xe3\x83\x84\xFF"), 31 ("a\u{FFFD}\u{FFFD}\u{FFFD}b", b"\x61\xF1\x80\x80\xE1\x80\xC2\x62"), 32 ]; 33