2 # Copyright 2010 by Denys Vlasenko
3 # Licensed under GPL v2, see file LICENSE for details.
7 test -f "$bindir/.config" && . "$bindir/.config"
9 rm -rf ls.testdir >/dev/null
10 mkdir ls.testdir || exit 1
12 # testing "test name" "command" "expected result" "file input" "stdin"
14 # With Unicode provided by libc locale, I'm not sure this test can pass.
15 # I suspect we might fail to skip exactly correct number of bytes
16 # over broked unicode sequences.
17 test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
18 && test x"$CONFIG_LOCALE_SUPPORT" != x"y" \
19 && test x"$CONFIG_SUBST_WCHAR" = x"63" \
20 && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"767" \
21 && testing "ls unicode test with codepoints limited to 767" \
22 "(cd ls.testdir && sh ../ls.mk_uni_tests) && ls -1 ls.testdir" \
23 '0001_1__Some_correct_UTF-8_text___________________________________________|
24 0002_2__Boundary_condition_test_cases_____________________________________|
25 0003_2.1__First_possible_sequence_of_a_certain_length_____________________|
26 0004_2.1.2__2_bytes__U-00000080_:________"?"______________________________|
27 0005_2.1.3__3_bytes__U-00000800_:________"?"______________________________|
28 0006_2.1.4__4_bytes__U-00010000_:________"?"______________________________|
29 0007_2.1.5__5_bytes__U-00200000_:________"?"______________________________|
30 0008_2.1.6__6_bytes__U-04000000_:________"?"______________________________|
31 0009_2.2__Last_possible_sequence_of_a_certain_length______________________|
32 0010_2.2.1__1_byte___U-0000007F_:________"?"______________________________|
33 0011_2.2.2__2_bytes__U-000007FF_:________"?"______________________________|
34 0012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________|
35 0013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________|
36 0014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________|
37 0015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________|
38 0016_2.3__Other_boundary_conditions_______________________________________|
39 0017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_"?"___________________________________|
40 0018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________|
41 0019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"?"___________________________________|
42 0020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________|
43 0021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________|
44 0022_3__Malformed_sequences_______________________________________________|
45 0023_3.1__Unexpected_continuation_bytes___________________________________|
46 0024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________|
47 0025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________|
48 0026_3.1.3__2_continuation_bytes:_"??"____________________________________|
49 0027_3.1.4__3_continuation_bytes:_"???"___________________________________|
50 0028_3.1.5__4_continuation_bytes:_"????"__________________________________|
51 0029_3.1.6__5_continuation_bytes:_"?????"_________________________________|
52 0030_3.1.7__6_continuation_bytes:_"??????"________________________________|
53 0031_3.1.8__7_continuation_bytes:_"???????"_______________________________|
54 0032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___|
55 0033____"????????????????_________________________________________________|
56 0034_____????????????????_________________________________________________|
57 0035_____????????????????_________________________________________________|
58 0036_____????????????????"________________________________________________|
59 0037_3.2__Lonely_start_characters_________________________________________|
60 0038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________|
61 0039________each_followed_by_a_space_character:___________________________|
62 0040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________|
63 0041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
64 0042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________|
65 0043________each_followed_by_a_space_character:___________________________|
66 0044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
67 0045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________|
68 0046________each_followed_by_a_space_character:___________________________|
69 0047____"?_?_?_?_?_?_?_?_"________________________________________________|
70 0048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________|
71 0049________each_followed_by_a_space_character:___________________________|
72 0050____"?_?_?_?_"________________________________________________________|
73 0051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________|
74 0052________each_followed_by_a_space_character:___________________________|
75 0053____"?_?_"____________________________________________________________|
76 0054_3.3__Sequences_with_last_continuation_byte_missing___________________|
77 0055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
78 0056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
79 0057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
80 0058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
81 0059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
82 0060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______|
83 0061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______|
84 0062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______|
85 0063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______|
86 0064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______|
87 0065_3.4__Concatenation_of_incomplete_sequences___________________________|
88 0066____"??????????"______________________________________________________|
89 0067_3.5__Impossible_bytes________________________________________________|
90 0068_3.5.1__fe_=_"?"______________________________________________________|
91 0069_3.5.2__ff_=_"?"______________________________________________________|
92 0070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________|
93 0071_4__Overlong_sequences________________________________________________|
94 0072_4.1__Examples_of_an_overlong_ASCII_character_________________________|
95 0073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________|
96 0074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________|
97 0075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________|
98 0076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________|
99 0077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________|
100 0078_4.2__Maximum_overlong_sequences______________________________________|
101 0079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________|
102 0080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________|
103 0081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________|
104 0082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________|
105 0083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________|
106 0084_4.3__Overlong_representation_of_the_NUL_character____________________|
107 0085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________|
108 0086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________|
109 0087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________|
110 0088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________|
111 0089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________|
112 0090_5__Illegal_code_positions____________________________________________|
113 0091_5.1_Single_UTF-16_surrogates_________________________________________|
114 0092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________|
115 0093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________|
116 0094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________|
117 0095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________|
118 0096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________|
119 0097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________|
120 0098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________|
121 0099_5.2_Paired_UTF-16_surrogates_________________________________________|
122 0100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________|
123 0101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________|
124 0102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________|
125 0103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________|
126 0104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________|
127 0105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________|
128 0106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________|
129 0107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________|
130 0108_5.3_Other_illegal_code_positions_____________________________________|
131 0109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________|
132 0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________|
135 # Currently fails on "0080_4.2.2__U-000007FF_=_e0_9f_bf" line
136 test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
137 && test x"$CONFIG_LOCALE_SUPPORT" != x"y" \
138 && test x"$CONFIG_SUBST_WCHAR" = x"63" \
139 && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"0" \
140 && testing "ls unicode test with unlimited codepoints" \
141 "(cd ls.testdir && sh ../ls.mk_uni_tests) && ls -1 ls.testdir" \
142 '0001_1__Some_correct_UTF-8_text___________________________________________|
143 0002_2__Boundary_condition_test_cases_____________________________________|
144 0003_2.1__First_possible_sequence_of_a_certain_length_____________________|
145 0004_2.1.2__2_bytes__U-00000080_:________"?"______________________________|
146 0005_2.1.3__3_bytes__U-00000800_:________"ࠀ"______________________________|
147 0006_2.1.4__4_bytes__U-00010000_:________"𐀀"______________________________|
148 0007_2.1.5__5_bytes__U-00200000_:________"?"______________________________|
149 0008_2.1.6__6_bytes__U-04000000_:________"?"______________________________|
150 0009_2.2__Last_possible_sequence_of_a_certain_length______________________|
151 0010_2.2.1__1_byte___U-0000007F_:________"?"______________________________|
152 0011_2.2.2__2_bytes__U-000007FF_:________"߿"______________________________|
153 0012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________|
154 0013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________|
155 0014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________|
156 0015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________|
157 0016_2.3__Other_boundary_conditions_______________________________________|
158 0017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_""___________________________________|
159 0018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________|
160 0019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"�"___________________________________|
161 0020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________|
162 0021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________|
163 0022_3__Malformed_sequences_______________________________________________|
164 0023_3.1__Unexpected_continuation_bytes___________________________________|
165 0024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________|
166 0025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________|
167 0026_3.1.3__2_continuation_bytes:_"??"____________________________________|
168 0027_3.1.4__3_continuation_bytes:_"???"___________________________________|
169 0028_3.1.5__4_continuation_bytes:_"????"__________________________________|
170 0029_3.1.6__5_continuation_bytes:_"?????"_________________________________|
171 0030_3.1.7__6_continuation_bytes:_"??????"________________________________|
172 0031_3.1.8__7_continuation_bytes:_"???????"_______________________________|
173 0032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___|
174 0033____"????????????????_________________________________________________|
175 0034_____????????????????_________________________________________________|
176 0035_____????????????????_________________________________________________|
177 0036_____????????????????"________________________________________________|
178 0037_3.2__Lonely_start_characters_________________________________________|
179 0038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________|
180 0039________each_followed_by_a_space_character:___________________________|
181 0040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________|
182 0041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
183 0042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________|
184 0043________each_followed_by_a_space_character:___________________________|
185 0044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
186 0045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________|
187 0046________each_followed_by_a_space_character:___________________________|
188 0047____"?_?_?_?_?_?_?_?_"________________________________________________|
189 0048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________|
190 0049________each_followed_by_a_space_character:___________________________|
191 0050____"?_?_?_?_"________________________________________________________|
192 0051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________|
193 0052________each_followed_by_a_space_character:___________________________|
194 0053____"?_?_"____________________________________________________________|
195 0054_3.3__Sequences_with_last_continuation_byte_missing___________________|
196 0055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
197 0056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
198 0057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
199 0058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
200 0059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
201 0060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______|
202 0061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______|
203 0062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______|
204 0063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______|
205 0064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______|
206 0065_3.4__Concatenation_of_incomplete_sequences___________________________|
207 0066____"??????????"______________________________________________________|
208 0067_3.5__Impossible_bytes________________________________________________|
209 0068_3.5.1__fe_=_"?"______________________________________________________|
210 0069_3.5.2__ff_=_"?"______________________________________________________|
211 0070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________|
212 0071_4__Overlong_sequences________________________________________________|
213 0072_4.1__Examples_of_an_overlong_ASCII_character_________________________|
214 0073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________|
215 0074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________|
216 0075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________|
217 0076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________|
218 0077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________|
219 0078_4.2__Maximum_overlong_sequences______________________________________|
220 0079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________|
221 0080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________|
222 0081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________|
223 0082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________|
224 0083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________|
225 0084_4.3__Overlong_representation_of_the_NUL_character____________________|
226 0085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________|
227 0086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________|
228 0087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________|
229 0088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________|
230 0089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________|
231 0090_5__Illegal_code_positions____________________________________________|
232 0091_5.1_Single_UTF-16_surrogates_________________________________________|
233 0092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________|
234 0093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________|
235 0094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________|
236 0095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________|
237 0096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________|
238 0097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________|
239 0098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________|
240 0099_5.2_Paired_UTF-16_surrogates_________________________________________|
241 0100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________|
242 0101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________|
243 0102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________|
244 0103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________|
245 0104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________|
246 0105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________|
247 0106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________|
248 0107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________|
249 0108_5.3_Other_illegal_code_positions_____________________________________|
250 0109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________|
251 0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________|
255 rm -rf ls.testdir 2>/dev/null