11 'Testing string "' . $this->
escaped( $string ) .
'"' );
21 $length = strlen( $string );
22 for ( $i = 0; $i < $length; $i++ ) {
26 $escaped .=
'\x' . dechex( $val );
46 'some ASCII' => [ $PASS,
'Some ASCII' ],
47 'euro sign' => [ $PASS,
"Euro sign €" ],
49 'first possible sequence 1 byte' => [ $PASS,
"\x00" ],
50 'first possible sequence 2 bytes' => [ $PASS,
"\xc2\x80" ],
51 'first possible sequence 3 bytes' => [ $PASS,
"\xe0\xa0\x80" ],
52 'first possible sequence 4 bytes' => [ $PASS,
"\xf0\x90\x80\x80" ],
53 'first possible sequence 5 bytes' => [ $FAIL,
"\xf8\x88\x80\x80\x80" ],
54 'first possible sequence 6 bytes' => [ $FAIL,
"\xfc\x84\x80\x80\x80\x80" ],
56 'last possible sequence 1 byte' => [ $PASS,
"\x7f" ],
57 'last possible sequence 2 bytes' => [ $PASS,
"\xdf\xbf" ],
58 'last possible sequence 3 bytes' => [ $PASS,
"\xef\xbf\xbf" ],
59 'last possible sequence 4 bytes (U+1FFFFF)' => [ $FAIL,
"\xf7\xbf\xbf\xbf" ],
60 'last possible sequence 5 bytes' => [ $FAIL,
"\xfb\xbf\xbf\xbf\xbf" ],
61 'last possible sequence 6 bytes' => [ $FAIL,
"\xfd\xbf\xbf\xbf\xbf\xbf" ],
63 'boundary 1' => [ $PASS,
"\xed\x9f\xbf" ],
64 'boundary 2' => [ $PASS,
"\xee\x80\x80" ],
65 'boundary 3' => [ $PASS,
"\xef\xbf\xbd" ],
66 'boundary 4' => [ $PASS,
"\xf2\x80\x80\x80" ],
67 'boundary 5 (U+FFFFF)' => [ $PASS,
"\xf3\xbf\xbf\xbf" ],
68 'boundary 6 (U+100000)' => [ $PASS,
"\xf4\x80\x80\x80" ],
69 'boundary 7 (U+10FFFF)' => [ $PASS,
"\xf4\x8f\xbf\xbf" ],
70 'boundary 8 (U+110000)' => [ $FAIL,
"\xf4\x90\x80\x80" ],
72 'malformed 1' => [ $FAIL,
"\x80" ],
73 'malformed 2' => [ $FAIL,
"\xbf" ],
74 'malformed 3' => [ $FAIL,
"\x80\xbf" ],
75 'malformed 4' => [ $FAIL,
"\x80\xbf\x80" ],
76 'malformed 5' => [ $FAIL,
"\x80\xbf\x80\xbf" ],
77 'malformed 6' => [ $FAIL,
"\x80\xbf\x80\xbf\x80" ],
78 'malformed 7' => [ $FAIL,
"\x80\xbf\x80\xbf\x80\xbf" ],
79 'malformed 8' => [ $FAIL,
"\x80\xbf\x80\xbf\x80\xbf\x80" ],
81 'last byte missing 1' => [ $FAIL,
"\xc0" ],
82 'last byte missing 2' => [ $FAIL,
"\xe0\x80" ],
83 'last byte missing 3' => [ $FAIL,
"\xf0\x80\x80" ],
84 'last byte missing 4' => [ $FAIL,
"\xf8\x80\x80\x80" ],
85 'last byte missing 5' => [ $FAIL,
"\xfc\x80\x80\x80\x80" ],
86 'last byte missing 6' => [ $FAIL,
"\xdf" ],
87 'last byte missing 7' => [ $FAIL,
"\xef\xbf" ],
88 'last byte missing 8' => [ $FAIL,
"\xf7\xbf\xbf" ],
89 'last byte missing 9' => [ $FAIL,
"\xfb\xbf\xbf\xbf" ],
90 'last byte missing 10' => [ $FAIL,
"\xfd\xbf\xbf\xbf\xbf" ],
92 'extra continuation byte 1' => [ $FAIL,
"e\xaf" ],
93 'extra continuation byte 2' => [ $FAIL,
"\xc3\x89\xaf" ],
94 'extra continuation byte 3' => [ $FAIL,
"\xef\xbc\xa5\xaf" ],
95 'extra continuation byte 4' => [ $FAIL,
"\xf0\x9d\x99\xb4\xaf" ],
97 'impossible bytes 1' => [ $FAIL,
"\xfe" ],
98 'impossible bytes 2' => [ $FAIL,
"\xff" ],
99 'impossible bytes 3' => [ $FAIL,
"\xfe\xfe\xff\xff" ],
101 'overlong sequences 1' => [ $FAIL,
"\xc0\xaf" ],
102 'overlong sequences 2' => [ $FAIL,
"\xc1\xaf" ],
103 'overlong sequences 3' => [ $FAIL,
"\xe0\x80\xaf" ],
104 'overlong sequences 4' => [ $FAIL,
"\xf0\x80\x80\xaf" ],
105 'overlong sequences 5' => [ $FAIL,
"\xf8\x80\x80\x80\xaf" ],
106 'overlong sequences 6' => [ $FAIL,
"\xfc\x80\x80\x80\x80\xaf" ],
108 'maximum overlong sequences 1' => [ $FAIL,
"\xc1\xbf" ],
109 'maximum overlong sequences 2' => [ $FAIL,
"\xe0\x9f\xbf" ],
110 'maximum overlong sequences 3' => [ $FAIL,
"\xf0\x8f\xbf\xbf" ],
111 'maximum overlong sequences 4' => [ $FAIL,
"\xf8\x87\xbf\xbf" ],
112 'maximum overlong sequences 5' => [ $FAIL,
"\xfc\x83\xbf\xbf\xbf\xbf" ],
114 'surrogates 1 (U+D799)' => [ $PASS,
"\xed\x9f\xbf" ],
115 'surrogates 2 (U+E000)' => [ $PASS,
"\xee\x80\x80" ],
116 'surrogates 3 (U+D800)' => [ $FAIL,
"\xed\xa0\x80" ],
117 'surrogates 4 (U+DBFF)' => [ $FAIL,
"\xed\xaf\xbf" ],
118 'surrogates 5 (U+DC00)' => [ $FAIL,
"\xed\xb0\x80" ],
119 'surrogates 6 (U+DFFF)' => [ $FAIL,
"\xed\xbf\xbf" ],
120 'surrogates 7 (U+D800 U+DC00)' => [ $FAIL,
"\xed\xa0\x80\xed\xb0\x80" ],
122 'noncharacters 1' => [ $PASS,
"\xef\xbf\xbe" ],
123 'noncharacters 2' => [ $PASS,
"\xef\xbf\xbf" ],