33# define FNMATCH(pat, str, arg) fnmatch (pat, str, arg)
41test (
int line,
int exp,
const char *pat,
const char *
str)
46 const int native = FNMATCH (pat,
str, 0);
48 const int native = exp;
56 "%d. rw_fnmatch(\"%s\", \"%s\", 0) ==> %d, "
57 "expected (native:own) %d:%d\n",
65#define TEST(exp, pat, str) test (__LINE__, exp, pat, str)
77 TEST (0,
"abc",
"abc");
78 TEST (1,
"xbc",
"abc");
79 TEST (1,
"ayc",
"abc");
80 TEST (1,
"abz",
"abc");
85 TEST (1,
"\\a",
"\\a");
87 TEST (0,
"\\\\",
"\\");
88 TEST (1,
"\\?",
"\\a");
90 TEST (1,
"\\?",
"\\?");
92 TEST (1,
"\\[",
"\\[");
93 TEST (0,
"\\[a",
"[a");
94 TEST (0,
"\\[a]",
"[a]");
95 TEST (0,
"\\[a\\]",
"[a]");
96 TEST (0,
"\\[\\a\\]",
"[a]");
104 TEST (1,
"\\?",
"a");
105 TEST (0,
"\\?",
"?");
107 TEST (0,
"a?",
"ad");
108 TEST (0,
"?b",
"ab");
109 TEST (1,
"?b",
"ac");
110 TEST (0,
"??",
"ae");
111 TEST (1,
"??",
"aef");
113 TEST (0,
"?bc",
"abc");
114 TEST (0,
"a?c",
"abc");
115 TEST (0,
"ab?",
"abc");
117 TEST (0,
"??c",
"abc");
118 TEST (0,
"a??",
"abc");
119 TEST (0,
"?b?",
"abc");
121 TEST (1,
"??c",
"abz");
122 TEST (1,
"a??",
"xbc");
123 TEST (1,
"?b?",
"ayc");
125 TEST (0,
"???",
"abc");
126 TEST (1,
"???",
"ab");
127 TEST (1,
"???",
"abcd");
133 TEST (0,
"*",
"abc");
136 TEST (1,
"\\*",
"a");
137 TEST (0,
"\\*",
"*");
138 TEST (1,
"\\*",
"ab");
139 TEST (1,
"\\*",
"abc");
143 TEST (0,
"**",
"ab");
144 TEST (0,
"**",
"abc");
146 TEST (1,
"*\\*",
"");
147 TEST (1,
"*\\*",
"a");
148 TEST (0,
"*\\*",
"a*");
149 TEST (0,
"*\\*",
"ab*");
153 TEST (0,
"a*",
"ab");
154 TEST (0,
"a*",
"abc");
157 TEST (0,
"a**",
"a");
158 TEST (0,
"a**",
"ab");
159 TEST (0,
"a**",
"abc");
162 TEST (1,
"**c",
"a");
163 TEST (1,
"**c",
"ab");
164 TEST (0,
"**c",
"abc");
165 TEST (1,
"**c",
"abcd");
168 TEST (1,
"a*z",
"a");
169 TEST (1,
"a*z",
"ab");
170 TEST (1,
"a*z",
"abc");
171 TEST (0,
"a*z",
"abcz");
172 TEST (0,
"a*z",
"abcdz");
173 TEST (0,
"a*z",
"abcdez");
175 TEST (1,
"ab*z",
"");
176 TEST (1,
"ab*z",
"a");
177 TEST (1,
"ab*z",
"ab");
178 TEST (1,
"ab*z",
"abc");
179 TEST (0,
"ab*z",
"abcz");
180 TEST (0,
"ab*z",
"abcdz");
181 TEST (0,
"ab*z",
"abcdez");
183 TEST (1,
"a*yz",
"");
184 TEST (1,
"a*yz",
"a");
185 TEST (1,
"a*yz",
"ab");
186 TEST (1,
"a*yz",
"abc");
187 TEST (1,
"a*yz",
"abcz");
188 TEST (0,
"a*yz",
"abcyz");
189 TEST (0,
"a*yz",
"abcdyz");
191 TEST (1,
"ab*yz",
"");
192 TEST (1,
"ab*yz",
"a");
193 TEST (1,
"ab*yz",
"ab");
194 TEST (1,
"ab*yz",
"abc");
195 TEST (1,
"ab*yz",
"abcz");
196 TEST (0,
"ab*yz",
"abcyz");
197 TEST (0,
"ab*yz",
"abcdyz");
198 TEST (0,
"ab*yz",
"abcdeyz");
200 TEST (1,
"ab*x*z",
"");
201 TEST (1,
"ab*x*z",
"a");
202 TEST (1,
"ab*x*z",
"ab");
203 TEST (1,
"ab*x*z",
"abc");
204 TEST (1,
"ab*x*z",
"abcz");
205 TEST (1,
"ab*x*z",
"abcyz");
206 TEST (0,
"ab*x*z",
"abcxyz");
207 TEST (0,
"ab*x*z",
"abcxxyz");
208 TEST (0,
"ab*x*z",
"abcxyyz");
210 TEST (1,
"*b*x*z",
"");
211 TEST (1,
"*b*x*z",
"a");
212 TEST (1,
"*b*x*z",
"ab");
213 TEST (1,
"*b*x*z",
"abc");
214 TEST (1,
"*b*x*z",
"abcz");
215 TEST (1,
"*b*x*z",
"abcyz");
216 TEST (0,
"*b*x*z",
"bcxyz");
217 TEST (0,
"*b*x*z",
"abcxyz");
218 TEST (0,
"*b*x*z",
"aabcxyz");
219 TEST (0,
"*b*x*z",
"abcxxyz");
220 TEST (0,
"*b*x*z",
"abcxyyz");
222 TEST (1,
"abc*klm*xyz",
"");
223 TEST (1,
"abc*klm*xyz",
"a");
224 TEST (1,
"abc*klm*xyz",
"ak");
225 TEST (1,
"abc*klm*xyz",
"akx");
227 TEST (1,
"abc*klm*xyz",
"abkx");
228 TEST (1,
"abc*klm*xyz",
"abklx");
229 TEST (1,
"abc*klm*xyz",
"abklxy");
230 TEST (1,
"abc*klm*xyz",
"abcklxy");
231 TEST (1,
"abc*klm*xyz",
"abcklmxy");
232 TEST (0,
"abc*klm*xyz",
"abcklmxyz");
233 TEST (0,
"abc*klm*xyz",
"abcdklmxyz");
234 TEST (0,
"abc*klm*xyz",
"abcdklmnxyz");
238 TEST (0,
"[a]",
"a");
239 TEST (1,
"[a]",
"b");
240 TEST (1,
"[?]",
"c");
241 TEST (0,
"[?]",
"?");
242 TEST (1,
"[-]",
"d");
243 TEST (0,
"[-]",
"-");
244 TEST (1,
"[]]",
"e");
245 TEST (0,
"[]]",
"]");
246 TEST (1,
"[\\]]",
"f");
247 TEST (1,
"[\\]]",
"\\");
248 TEST (0,
"[\\]]",
"]");
250 TEST (1,
"[\\!a]",
"");
251 TEST (0,
"[\\!a]",
"a");
252 TEST (1,
"[\\!a]",
"b");
253 TEST (0,
"[\\!?]",
"!");
254 TEST (0,
"[\\!?]",
"?");
255 TEST (0,
"[\\!-]",
"-");
256 TEST (0,
"[\\!!]",
"!");
257 TEST (0,
"[\\\\!]",
"\\");
259 TEST (1,
"[ab]",
"");
260 TEST (0,
"[ab]",
"a");
261 TEST (0,
"[ab]",
"b");
262 TEST (1,
"[ab]",
"c");
264 TEST (1,
"[a]b",
"");
265 TEST (1,
"[a]b",
"a");
266 TEST (0,
"[a]b",
"ab");
267 TEST (1,
"[a]b",
"b");
269 TEST (1,
"a[b]",
"");
270 TEST (1,
"a[b]",
"a");
271 TEST (0,
"a[b]",
"ab");
272 TEST (1,
"a[b]",
"b");
274 TEST (1,
"a[bc]",
"");
275 TEST (1,
"a[bc]",
"a");
276 TEST (0,
"a[bc]",
"ab");
277 TEST (0,
"a[bc]",
"ac");
278 TEST (1,
"a[bc]",
"abc");
279 TEST (1,
"a[\\]]",
"ab");
280 TEST (0,
"a[\\]]",
"a]");
282 TEST (1,
"[abc]",
"");
283 TEST (0,
"[abc]",
"a");
284 TEST (0,
"[abc]",
"b");
285 TEST (0,
"[abc]",
"c");
286 TEST (1,
"[abc]",
"ab");
287 TEST (1,
"[abc]",
"ac");
288 TEST (1,
"[abc]",
"abc");
291 TEST (1,
"[!a]",
"");
292 TEST (1,
"[!a]",
"a");
293 TEST (0,
"[!a]",
"b");
294 TEST (1,
"[!?]",
"?");
295 TEST (0,
"[!?]",
"c");
296 TEST (1,
"[!-]",
"-");
297 TEST (0,
"[!-]",
"d");
298 TEST (1,
"[!!]",
"!");
299 TEST (0,
"[!!]",
"e");
301 TEST (1,
"[!ab]",
"");
302 TEST (1,
"[!ab]",
"a");
303 TEST (1,
"[!ab]",
"b");
304 TEST (0,
"[!ab]",
"c");
306 TEST (1,
"[!a]b",
"");
307 TEST (1,
"[!a]b",
"a");
308 TEST (1,
"[!a]b",
"ab");
309 TEST (1,
"[!a]b",
"b");
310 TEST (0,
"[!a]b",
"bb");
312 TEST (1,
"a[!b]",
"");
313 TEST (1,
"a[!b]",
"a");
314 TEST (1,
"a[!b]",
"ab");
315 TEST (1,
"a[!b]",
"b");
316 TEST (0,
"a[!b]",
"ac");
318 TEST (1,
"a[!bc]",
"");
319 TEST (1,
"a[!bc]",
"a");
320 TEST (1,
"a[!bc]",
"ab");
321 TEST (1,
"a[!bc]",
"ac");
322 TEST (0,
"a[!bc]",
"ad");
323 TEST (0,
"a[!!?]",
"ae");
324 TEST (0,
"a[!?!]",
"af");
325 TEST (0,
"a[!?-]",
"ag");
326 TEST (0,
"a[!-?]",
"ah");
327 TEST (1,
"a[!bc]",
"aae");
328 TEST (1,
"a[!bc]",
"abe");
329 TEST (1,
"a[!bc]",
"ace");
331 TEST (1,
"[!abc]",
"");
332 TEST (1,
"[!abc]",
"a");
333 TEST (1,
"[!abc]",
"b");
334 TEST (1,
"[!abc]",
"c");
335 TEST (0,
"[!abc]",
"d");
336 TEST (1,
"[!abc]",
"ab");
337 TEST (1,
"[!abc]",
"ac");
338 TEST (1,
"[!abc]",
"ad");
339 TEST (1,
"[!abc]",
"abc");
340 TEST (1,
"[!abc]",
"abcd");
342 TEST (1,
"[!abc]d",
"");
343 TEST (1,
"[!abc]d",
"a");
344 TEST (1,
"[!abc]d",
"b");
345 TEST (1,
"[!abc]d",
"c");
346 TEST (1,
"[!abc]d",
"d");
347 TEST (0,
"[!abc]d",
"dd");
348 TEST (1,
"[!abc]d",
"ab");
349 TEST (1,
"[!abc]d",
"ac");
350 TEST (1,
"[!abc]d",
"ad");
351 TEST (1,
"[!abc]d",
"abc");
352 TEST (1,
"[!abc]d",
"abcd");
355 TEST (1,
"[a-a]",
"");
356 TEST (0,
"[a-a]",
"a");
357 TEST (1,
"[a-a]",
"b");
358 TEST (1,
"[a-a]",
"ab");
359 TEST (1,
"[a-a]",
"ba");
361 TEST (1,
"[a-b]",
"");
362 TEST (0,
"[a-b]",
"a");
363 TEST (0,
"[a-b]",
"b");
364 TEST (1,
"[a-b]",
"c");
366 TEST (1,
"[a-c]",
"");
367 TEST (0,
"[a-c]",
"a");
368 TEST (0,
"[a-c]",
"b");
369 TEST (0,
"[a-c]",
"c");
370 TEST (1,
"[a-c]",
"d");
372 TEST (1,
"[a-ce]",
"");
373 TEST (0,
"[a-ce]",
"a");
374 TEST (0,
"[a-ce]",
"b");
375 TEST (0,
"[a-ce]",
"c");
376 TEST (1,
"[a-ce]",
"d");
377 TEST (0,
"[a-ce]",
"e");
378 TEST (1,
"[a-ce]",
"f");
380 TEST (1,
"[ac-e]",
"");
381 TEST (0,
"[ac-e]",
"a");
382 TEST (1,
"[ac-e]",
"b");
383 TEST (0,
"[ac-e]",
"c");
384 TEST (0,
"[ac-e]",
"d");
385 TEST (0,
"[ac-e]",
"e");
386 TEST (1,
"[ac-e]",
"f");
388 TEST (1,
"[ac-eg]",
"");
389 TEST (0,
"[ac-eg]",
"a");
390 TEST (1,
"[ac-eg]",
"b");
391 TEST (0,
"[ac-eg]",
"c");
392 TEST (0,
"[ac-eg]",
"d");
393 TEST (0,
"[ac-eg]",
"e");
394 TEST (1,
"[ac-eg]",
"f");
395 TEST (0,
"[ac-eg]",
"g");
397 TEST (1,
"[ac-egk-m]",
"");
398 TEST (0,
"[ac-egk-m]",
"a");
399 TEST (1,
"[ac-egk-m]",
"b");
400 TEST (0,
"[ac-egk-m]",
"c");
401 TEST (0,
"[ac-egk-m]",
"d");
402 TEST (0,
"[ac-egk-m]",
"e");
403 TEST (1,
"[ac-egk-m]",
"f");
404 TEST (0,
"[ac-egk-m]",
"g");
405 TEST (1,
"[ac-egk-m]",
"h");
406 TEST (1,
"[ac-egk-m]",
"i");
407 TEST (1,
"[ac-egk-m]",
"j");
408 TEST (0,
"[ac-egk-m]",
"k");
409 TEST (0,
"[ac-egk-m]",
"l");
410 TEST (0,
"[ac-egk-m]",
"m");
411 TEST (1,
"[ac-egk-m]",
"n");
413 TEST (1,
"[1-9][0-9]",
"");
414 TEST (1,
"[1-9][0-9]",
"0");
415 TEST (1,
"[1-9][0-9]",
"1");
416 TEST (1,
"[1-9][0-9]",
"2");
417 TEST (1,
"[1-9][0-9]",
"00");
418 TEST (1,
"[1-9][0-9]",
"01");
419 TEST (0,
"[1-9][0-9]",
"10");
420 TEST (0,
"[1-9][0-9]",
"11");
421 TEST (0,
"[1-9][0-9]",
"12");
422 TEST (0,
"[1-9][0-9]",
"90");
423 TEST (0,
"[1-9][0-9]",
"99");
424 TEST (1,
"[1-9][0-9]",
"999");
426 TEST (1,
"[1-9].[0-9]",
"0.1");
427 TEST (0,
"[1-9].[0-9]",
"1.0");
428 TEST (1,
"[1-9].[0-9]",
"1.0.0");
431 TEST (1,
"[1-9].[0-9]*",
"1.");
432 TEST (0,
"[1-9].[0-9]*",
"1.2");
433 TEST (0,
"[1-9].[0-9]*",
"1.23");
434 TEST (0,
"[1-9].[0-9]*",
"1.2x");
435 TEST (0,
"[1-9]?[0-9]*",
"1-2y");
437 TEST (1,
"*-aix[1-9].[0-9]-xlc7.0.0.[0-9]",
"ppc-aix4.3-xlc6.0");
438 TEST (1,
"*-aix[1-9].[0-9]-xlc7.0.0.[0-9]",
"ppc-aix5.2-xlc6.0");
439 TEST (0,
"*-aix[1-9].[0-9]-xlc7.0.0.[0-9]",
"ppc-aix4.3-xlc7.0.0.0");
444 TEST (1,
"\\",
"\\");
449 TEST (1,
"[a",
"[a");
452 return !(0 == nerrors);
#define TEST(exp, pat, str)
_TEST_EXPORT int rw_fnmatch(const char *, const char *, int)