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