1# Tests for fnmatch.
2# Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
3# This file is part of the GNU C Library.
4# Contributes by Ulrich Drepper <drepper@redhat.com>.
5#
6
7# The GNU C Library is free software; you can redistribute it and/or
8# modify it under the terms of the GNU Lesser General Public
9# License as published by the Free Software Foundation; either
10# version 2.1 of the License, or (at your option) any later version.
11
12# The GNU C Library is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15# Lesser General Public License for more details.
16
17# You should have received a copy of the GNU Lesser General Public
18# License along with the GNU C Library; see the file COPYING.LIB.  If
19# not, see <http://www.gnu.org/licenses/>.
20
21
22# Derived from the IEEE 2003.2 text.  The standard only contains some
23# wording describing the situations to be tested.  It does not specify
24# any specific tests.  I.e., the tests below are in no case sufficient.
25# They are hopefully necessary, though.
26
27# B.6 004(C)
28C		 "!#%+,-./01234567889"	"!#%+,-./01234567889"  0
29C		 ":;=@ABCDEFGHIJKLMNO"	":;=@ABCDEFGHIJKLMNO"  0
30C		 "PQRSTUVWXYZ]abcdefg"	"PQRSTUVWXYZ]abcdefg"  0
31C		 "hijklmnopqrstuvwxyz"	"hijklmnopqrstuvwxyz"  0
32C		 "^_{}~"		"^_{}~"		       0
33
34# B.6 005(C)
35C		 "\"$&'()"		"\\\"\\$\\&\\'\\(\\)"  0
36C		 "*?[\\`|"		"\\*\\?\\[\\\\\\`\\|"  0
37C		 "<>"			"\\<\\>"	       0
38
39# B.6 006(C)
40C		 "?*["			"[?*[][?*[][?*[]"      0
41C		 "a/b"			"?/b"		       0
42
43# B.6 007(C)
44C		 "a/b"			"a?b"		       0
45C		 "a/b"			"a/?"		       0
46C		 "aa/b"			"?/b"		       NOMATCH
47C		 "aa/b"			"a?b"		       NOMATCH
48C		 "a/bb"			"a/?"		       NOMATCH
49
50# B.6 009(C)
51C		 "abc"			"[abc]"		       NOMATCH
52C		 "x"			"[abc]"		       NOMATCH
53C		 "a"			"[abc]"		       0
54C		 "["			"[[abc]"	       0
55C		 "a"			"[][abc]"	       0
56C		 "a]"			"[]a]]"		       0
57
58# B.6 010(C)
59C		 "xyz"			"[!abc]"	       NOMATCH
60C		 "x"			"[!abc]"	       0
61C		 "a"			"[!abc]"	       NOMATCH
62
63# B.6 011(C)
64C		 "]"			"[][abc]"	       0
65C		 "abc]"			"[][abc]"	       NOMATCH
66C		 "[]abc"		"[][]abc"	       NOMATCH
67C		 "]"		        "[!]]"		       NOMATCH
68C		 "aa]"			"[!]a]"		       NOMATCH
69C		 "]"		        "[!a]"		       0
70C		 "]]"		        "[!a]]"		       0
71
72# B.6 012(C)
73C		 "a"			"[[.a.]]"	       0
74C		 "-"			"[[.-.]]"	       0
75C		 "-"			"[[.-.][.].]]"	       0
76C		 "-"			"[[.].][.-.]]"	       0
77C		 "-"			"[[.-.][=u=]]"	       0
78C		 "-"			"[[.-.][:alpha:]]"     0
79C		 "a"			"[![.a.]]"	       NOMATCH
80
81# B.6 013(C)
82C		 "a"			"[[.b.]]"	       NOMATCH
83C		 "a"			"[[.b.][.c.]]"	       NOMATCH
84C		 "a"			"[[.b.][=b=]]"	       NOMATCH
85
86
87# B.6 015(C)
88C		 "a"			"[[=a=]]"	       0
89C		 "b"			"[[=a=]b]"	       0
90C		 "b"			"[[=a=][=b=]]"	       0
91C		 "a"			"[[=a=][=b=]]"	       0
92C		 "a"			"[[=a=][.b.]]"	       0
93C		 "a"			"[[=a=][:digit:]]"     0
94
95# B.6 016(C)
96C		 "="			"[[=a=]b]"	       NOMATCH
97C		 "]"			"[[=a=]b]"	       NOMATCH
98C		 "a"			"[[=b=][=c=]]"	       NOMATCH
99C		 "a"			"[[=b=][.].]]"	       NOMATCH
100C		 "a"			"[[=b=][:digit:]]"     NOMATCH
101
102# B.6 017(C)
103C		 "a"			"[[:alnum:]]"	       0
104C		 "a"			"[![:alnum:]]"	       NOMATCH
105C		 "-"			"[[:alnum:]]"	       NOMATCH
106C		 "a]a"			"[[:alnum:]]a"	       NOMATCH
107C		 "-"			"[[:alnum:]-]"	       0
108C		 "aa"			"[[:alnum:]]a"	       0
109C		 "-"			"[![:alnum:]]"	       0
110C		 "]"			"[!][:alnum:]]"	       NOMATCH
111C		 "["			"[![:alnum:][]"	       NOMATCH
112C		 "a"			"[[:alnum:]]"	       0
113C		 "b"			"[[:alnum:]]"	       0
114C		 "c"			"[[:alnum:]]"	       0
115C		 "d"			"[[:alnum:]]"	       0
116C		 "e"			"[[:alnum:]]"	       0
117C		 "f"			"[[:alnum:]]"	       0
118C		 "g"			"[[:alnum:]]"	       0
119C		 "h"			"[[:alnum:]]"	       0
120C		 "i"			"[[:alnum:]]"	       0
121C		 "j"			"[[:alnum:]]"	       0
122C		 "k"			"[[:alnum:]]"	       0
123C		 "l"			"[[:alnum:]]"	       0
124C		 "m"			"[[:alnum:]]"	       0
125C		 "n"			"[[:alnum:]]"	       0
126C		 "o"			"[[:alnum:]]"	       0
127C		 "p"			"[[:alnum:]]"	       0
128C		 "q"			"[[:alnum:]]"	       0
129C		 "r"			"[[:alnum:]]"	       0
130C		 "s"			"[[:alnum:]]"	       0
131C		 "t"			"[[:alnum:]]"	       0
132C		 "u"			"[[:alnum:]]"	       0
133C		 "v"			"[[:alnum:]]"	       0
134C		 "w"			"[[:alnum:]]"	       0
135C		 "x"			"[[:alnum:]]"	       0
136C		 "y"			"[[:alnum:]]"	       0
137C		 "z"			"[[:alnum:]]"	       0
138C		 "A"			"[[:alnum:]]"	       0
139C		 "B"			"[[:alnum:]]"	       0
140C		 "C"			"[[:alnum:]]"	       0
141C		 "D"			"[[:alnum:]]"	       0
142C		 "E"			"[[:alnum:]]"	       0
143C		 "F"			"[[:alnum:]]"	       0
144C		 "G"			"[[:alnum:]]"	       0
145C		 "H"			"[[:alnum:]]"	       0
146C		 "I"			"[[:alnum:]]"	       0
147C		 "J"			"[[:alnum:]]"	       0
148C		 "K"			"[[:alnum:]]"	       0
149C		 "L"			"[[:alnum:]]"	       0
150C		 "M"			"[[:alnum:]]"	       0
151C		 "N"			"[[:alnum:]]"	       0
152C		 "O"			"[[:alnum:]]"	       0
153C		 "P"			"[[:alnum:]]"	       0
154C		 "Q"			"[[:alnum:]]"	       0
155C		 "R"			"[[:alnum:]]"	       0
156C		 "S"			"[[:alnum:]]"	       0
157C		 "T"			"[[:alnum:]]"	       0
158C		 "U"			"[[:alnum:]]"	       0
159C		 "V"			"[[:alnum:]]"	       0
160C		 "W"			"[[:alnum:]]"	       0
161C		 "X"			"[[:alnum:]]"	       0
162C		 "Y"			"[[:alnum:]]"	       0
163C		 "Z"			"[[:alnum:]]"	       0
164C		 "0"			"[[:alnum:]]"	       0
165C		 "1"			"[[:alnum:]]"	       0
166C		 "2"			"[[:alnum:]]"	       0
167C		 "3"			"[[:alnum:]]"	       0
168C		 "4"			"[[:alnum:]]"	       0
169C		 "5"			"[[:alnum:]]"	       0
170C		 "6"			"[[:alnum:]]"	       0
171C		 "7"			"[[:alnum:]]"	       0
172C		 "8"			"[[:alnum:]]"	       0
173C		 "9"			"[[:alnum:]]"	       0
174C		 "!"			"[[:alnum:]]"	       NOMATCH
175C		 "#"			"[[:alnum:]]"	       NOMATCH
176C		 "%"			"[[:alnum:]]"	       NOMATCH
177C		 "+"			"[[:alnum:]]"	       NOMATCH
178C		 ","			"[[:alnum:]]"	       NOMATCH
179C		 "-"			"[[:alnum:]]"	       NOMATCH
180C		 "."			"[[:alnum:]]"	       NOMATCH
181C		 "/"			"[[:alnum:]]"	       NOMATCH
182C		 ":"			"[[:alnum:]]"	       NOMATCH
183C		 ";"			"[[:alnum:]]"	       NOMATCH
184C		 "="			"[[:alnum:]]"	       NOMATCH
185C		 "@"			"[[:alnum:]]"	       NOMATCH
186C		 "["			"[[:alnum:]]"	       NOMATCH
187C		 "\\"			"[[:alnum:]]"	       NOMATCH
188C		 "]"			"[[:alnum:]]"	       NOMATCH
189C		 "^"			"[[:alnum:]]"	       NOMATCH
190C		 "_"			"[[:alnum:]]"	       NOMATCH
191C		 "{"			"[[:alnum:]]"	       NOMATCH
192C		 "}"			"[[:alnum:]]"	       NOMATCH
193C		 "~"			"[[:alnum:]]"	       NOMATCH
194C		 "\""			"[[:alnum:]]"	       NOMATCH
195C		 "$"			"[[:alnum:]]"	       NOMATCH
196C		 "&"			"[[:alnum:]]"	       NOMATCH
197C		 "'"			"[[:alnum:]]"	       NOMATCH
198C		 "("			"[[:alnum:]]"	       NOMATCH
199C		 ")"			"[[:alnum:]]"	       NOMATCH
200C		 "*"			"[[:alnum:]]"	       NOMATCH
201C		 "?"			"[[:alnum:]]"	       NOMATCH
202C		 "`"			"[[:alnum:]]"	       NOMATCH
203C		 "|"			"[[:alnum:]]"	       NOMATCH
204C		 "<"			"[[:alnum:]]"	       NOMATCH
205C		 ">"			"[[:alnum:]]"	       NOMATCH
206C		 "\t"			"[[:cntrl:]]"	       0
207C		 "t"			"[[:cntrl:]]"	       NOMATCH
208C		 "t"			"[[:lower:]]"	       0
209C		 "\t"			"[[:lower:]]"	       NOMATCH
210C		 "T"			"[[:lower:]]"	       NOMATCH
211C		 "\t"			"[[:space:]]"	       0
212C		 "t"			"[[:space:]]"	       NOMATCH
213C		 "t"			"[[:alpha:]]"	       0
214C		 "\t"			"[[:alpha:]]"	       NOMATCH
215C		 "0"			"[[:digit:]]"	       0
216C		 "\t"			"[[:digit:]]"	       NOMATCH
217C		 "t"			"[[:digit:]]"	       NOMATCH
218C		 "\t"			"[[:print:]]"	       NOMATCH
219C		 "t"			"[[:print:]]"	       0
220C		 "T"			"[[:upper:]]"	       0
221C		 "\t"			"[[:upper:]]"	       NOMATCH
222C		 "t"			"[[:upper:]]"	       NOMATCH
223C		 "\t"			"[[:blank:]]"	       0
224C		 "t"			"[[:blank:]]"	       NOMATCH
225C		 "\t"			"[[:graph:]]"	       NOMATCH
226C		 "t"			"[[:graph:]]"	       0
227C		 "."			"[[:punct:]]"	       0
228C		 "t"			"[[:punct:]]"	       NOMATCH
229C		 "\t"			"[[:punct:]]"	       NOMATCH
230C		 "0"			"[[:xdigit:]]"	       0
231C		 "\t"			"[[:xdigit:]]"	       NOMATCH
232C		 "a"			"[[:xdigit:]]"	       0
233C		 "A"			"[[:xdigit:]]"	       0
234C		 "t"			"[[:xdigit:]]"	       NOMATCH
235C		 "a"			"[[alpha]]"	       NOMATCH
236C		 "a"			"[[alpha:]]"	       NOMATCH
237C		 "a]"			"[[alpha]]"	       0
238C		 "a]"			"[[alpha:]]"	       0
239C		 "a"			"[[:alpha:][.b.]]"     0
240C		 "a"			"[[:alpha:][=b=]]"     0
241C		 "a"			"[[:alpha:][:digit:]]" 0
242C		 "a"			"[[:digit:][:alpha:]]" 0
243
244# B.6 018(C)
245C		 "a"			"[a-c]"		       0
246C		 "b"			"[a-c]"		       0
247C		 "c"			"[a-c]"		       0
248C		 "a"			"[b-c]"		       NOMATCH
249C		 "d"			"[b-c]"		       NOMATCH
250C		 "B"			"[a-c]"		       NOMATCH
251C		 "b"			"[A-C]"		       NOMATCH
252C		 ""			"[a-c]"		       NOMATCH
253C		 "as"			"[a-ca-z]"	       NOMATCH
254C		 "a"			"[[.a.]-c]"	       0
255C		 "a"			"[a-[.c.]]"	       0
256C		 "a"			"[[.a.]-[.c.]]"	       0
257C		 "b"			"[[.a.]-c]"	       0
258C		 "b"			"[a-[.c.]]"	       0
259C		 "b"			"[[.a.]-[.c.]]"	       0
260C		 "c"			"[[.a.]-c]"	       0
261C		 "c"			"[a-[.c.]]"	       0
262C		 "c"			"[[.a.]-[.c.]]"	       0
263C		 "d"			"[[.a.]-c]"	       NOMATCH
264C		 "d"			"[a-[.c.]]"	       NOMATCH
265C		 "d"			"[[.a.]-[.c.]]"	       NOMATCH
266
267# B.6 019(C)
268C		 "a"			"[c-a]"		       NOMATCH
269C		 "a"			"[[.c.]-a]"	       NOMATCH
270C		 "a"			"[c-[.a.]]"	       NOMATCH
271C		 "a"			"[[.c.]-[.a.]]"	       NOMATCH
272C		 "c"			"[c-a]"		       NOMATCH
273C		 "c"			"[[.c.]-a]"	       NOMATCH
274C		 "c"			"[c-[.a.]]"	       NOMATCH
275C		 "c"			"[[.c.]-[.a.]]"	       NOMATCH
276
277# B.6 020(C)
278C		 "a"			"[a-c0-9]"	       0
279C		 "d"			"[a-c0-9]"	       NOMATCH
280C		 "B"			"[a-c0-9]"	       NOMATCH
281
282# B.6 021(C)
283C		 "-"			"[-a]"		       0
284C		 "a"			"[-b]"		       NOMATCH
285C		 "-"			"[!-a]"		       NOMATCH
286C		 "a"			"[!-b]"		       0
287C		 "-"			"[a-c-0-9]"	       0
288C		 "b"			"[a-c-0-9]"	       0
289C		 "a:"			"a[0-9-a]"	       NOMATCH
290C		 "a:"			"a[09-a]"	       0
291
292# B.6 024(C)
293C		 ""			"*"		       0
294C		 "asd/sdf"		"*"		       0
295
296# B.6 025(C)
297C		 "as"			"[a-c][a-z]"	       0
298C		 "as"			"??"		       0
299
300# B.6 026(C)
301C		 "asd/sdf"		"as*df"		       0
302C		 "asd/sdf"		"as*"		       0
303C		 "asd/sdf"		"*df"		       0
304C		 "asd/sdf"		"as*dg"		       NOMATCH
305C		 "asdf"			"as*df"		       0
306C		 "asdf"			"as*df?"	       NOMATCH
307C		 "asdf"			"as*??"		       0
308C		 "asdf"			"a*???"		       0
309C		 "asdf"			"*????"		       0
310C		 "asdf"			"????*"		       0
311C		 "asdf"			"??*?"		       0
312
313# B.6 027(C)
314C		 "/"			"/"		       0
315C		 "/"			"/*"		       0
316C		 "/"			"*/"		       0
317C		 "/"			"/?"		       NOMATCH
318C		 "/"			"?/"		       NOMATCH
319C		 "/"			"?"		       0
320C		 "."			"?"		       0
321C		 "/."			"??"		       0
322C		 "/"			"[!a-c]"	       0
323C		 "."			"[!a-c]"	       0
324
325# B.6 029(C)
326C		 "/"			"/"		       0       PATHNAME
327C		 "//"			"//"		       0       PATHNAME
328C		 "/.a"			"/*"		       0       PATHNAME
329C		 "/.a"			"/?a"		       0       PATHNAME
330C		 "/.a"			"/[!a-z]a"	       0       PATHNAME
331C		 "/.a/.b"		"/*/?b"		       0       PATHNAME
332
333# B.6 030(C)
334C		 "/"			"?"		       NOMATCH PATHNAME
335C		 "/"			"*"		       NOMATCH PATHNAME
336C		 "a/b"			"a?b"		       NOMATCH PATHNAME
337C		 "/.a/.b"		"/*b"		       NOMATCH PATHNAME
338
339# B.6 031(C)
340C		 "/$"			"\\/\\$"	       0
341C		 "/["			"\\/\\["	       0
342C		 "/["			"\\/["		       NOMATCH
343
344# B.6 032(C)
345C		 "/$"			"\\/\\$"	       NOMATCH NOESCAPE
346C		 "/\\$"			"\\/\\$"	       NOMATCH NOESCAPE
347C		 "\\/\\$"		"\\/\\$"	       0       NOESCAPE
348
349# B.6 033(C)
350C		 ".asd"			".*"		       0       PERIOD
351C		 "/.asd"		"*"		       0       PERIOD
352C		 "/as/.df"		"*/?*f"		       0       PERIOD
353C		 "..asd"		".[!a-z]*"	       0       PERIOD
354
355# B.6 034(C)
356C		 ".asd"			"*"		       NOMATCH PERIOD
357C		 ".asd"			"?asd"		       NOMATCH PERIOD
358C		 ".asd"			"[!a-z]*"	       NOMATCH PERIOD
359
360# B.6 035(C)
361C		 "/."			"/."		       0       PATHNAME|PERIOD
362C		 "/.a./.b."		"/.*/.*"	       0       PATHNAME|PERIOD
363C		 "/.a./.b."		"/.??/.??"	       0       PATHNAME|PERIOD
364
365# B.6 036(C)
366C		 "/."			"*"		       NOMATCH PATHNAME|PERIOD
367C		 "/."			"/*"		       NOMATCH PATHNAME|PERIOD
368C		 "/."			"/?"		       NOMATCH PATHNAME|PERIOD
369C		 "/."			"/[!a-z]"	       NOMATCH PATHNAME|PERIOD
370C		 "/a./.b."		"/*/*"		       NOMATCH PATHNAME|PERIOD
371C		 "/a./.b."		"/??/???"	       NOMATCH PATHNAME|PERIOD
372
373# Some home-grown tests.
374C		"foobar"		"foo*[abc]z"	       NOMATCH
375C		"foobaz"		"foo*[abc][xyz]"       0
376C		"foobaz"		"foo?*[abc][xyz]"      0
377C		"foobaz"		"foo?*[abc][x/yz]"     0
378C		"foobaz"		"foo?*[abc]/[xyz]"     NOMATCH PATHNAME
379C		"a"			"a/"                   NOMATCH PATHNAME
380C		"a/"			"a"		       NOMATCH PATHNAME
381C		"//a"			"/a"		       NOMATCH PATHNAME
382C		"/a"			"//a"		       NOMATCH PATHNAME
383C		"az"			"[a-]z"		       0
384C		"bz"			"[ab-]z"	       0
385C		"cz"			"[ab-]z"	       NOMATCH
386C		"-z"			"[ab-]z"	       0
387C		"az"			"[-a]z"		       0
388C		"bz"			"[-ab]z"	       0
389C		"cz"			"[-ab]z"	       NOMATCH
390C		"-z"			"[-ab]z"	       0
391C		"\\"			"[\\\\-a]"	       0
392C		"_"			"[\\\\-a]"	       0
393C		"a"			"[\\\\-a]"	       0
394C		"-"			"[\\\\-a]"	       NOMATCH
395C		"\\"			"[\\]-a]"	       NOMATCH
396C		"_"			"[\\]-a]"	       0
397C		"a"			"[\\]-a]"	       0
398C		"]"			"[\\]-a]"	       0
399C		"-"			"[\\]-a]"	       NOMATCH
400C		"\\"			"[!\\\\-a]"	       NOMATCH
401C		"_"			"[!\\\\-a]"	       NOMATCH
402C		"a"			"[!\\\\-a]"	       NOMATCH
403C		"-"			"[!\\\\-a]"	       0
404C		"!"			"[\\!-]"	       0
405C		"-"			"[\\!-]"	       0
406C		"\\"			"[\\!-]"	       NOMATCH
407C		"Z"			"[Z-\\\\]"	       0
408C		"["			"[Z-\\\\]"	       0
409C		"\\"			"[Z-\\\\]"	       0
410C		"-"			"[Z-\\\\]"	       NOMATCH
411C		"Z"			"[Z-\\]]"	       0
412C		"["			"[Z-\\]]"	       0
413C		"\\"			"[Z-\\]]"	       0
414C		"]"			"[Z-\\]]"	       0
415C		"-"			"[Z-\\]]"	       NOMATCH
416
417# Following are tests outside the scope of IEEE 2003.2 since they are using
418# locales other than the C locale.  The main focus of the tests is on the
419# handling of ranges and the recognition of character (vs bytes).
420de_DE.ISO-8859-1 "a"			"[a-z]"		       0
421de_DE.ISO-8859-1 "z"			"[a-z]"		       0
422de_DE.ISO-8859-1 "�"			"[a-z]"		       0
423de_DE.ISO-8859-1 "�"			"[a-z]"		       0
424de_DE.ISO-8859-1 "�"			"[a-z]"		       0
425de_DE.ISO-8859-1 "A"			"[a-z]"		       NOMATCH
426de_DE.ISO-8859-1 "Z"			"[a-z]"		       NOMATCH
427de_DE.ISO-8859-1 "�"			"[a-z]"		       NOMATCH
428de_DE.ISO-8859-1 "�"			"[a-z]"		       NOMATCH
429de_DE.ISO-8859-1 "�"			"[a-z]"		       NOMATCH
430de_DE.ISO-8859-1 "a"			"[A-Z]"		       NOMATCH
431de_DE.ISO-8859-1 "z"			"[A-Z]"		       NOMATCH
432de_DE.ISO-8859-1 "�"			"[A-Z]"		       NOMATCH
433de_DE.ISO-8859-1 "�"			"[A-Z]"		       NOMATCH
434de_DE.ISO-8859-1 "�"			"[A-Z]"		       NOMATCH
435de_DE.ISO-8859-1 "A"			"[A-Z]"		       0
436de_DE.ISO-8859-1 "Z"			"[A-Z]"		       0
437de_DE.ISO-8859-1 "�"			"[A-Z]"		       0
438de_DE.ISO-8859-1 "�"			"[A-Z]"		       0
439de_DE.ISO-8859-1 "�"			"[A-Z]"		       0
440de_DE.ISO-8859-1 "a"			"[[:lower:]]"	       0
441de_DE.ISO-8859-1 "z"			"[[:lower:]]"	       0
442de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       0
443de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       0
444de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       0
445de_DE.ISO-8859-1 "A"			"[[:lower:]]"	       NOMATCH
446de_DE.ISO-8859-1 "Z"			"[[:lower:]]"	       NOMATCH
447de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       NOMATCH
448de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       NOMATCH
449de_DE.ISO-8859-1 "�"			"[[:lower:]]"	       NOMATCH
450de_DE.ISO-8859-1 "a"			"[[:upper:]]"	       NOMATCH
451de_DE.ISO-8859-1 "z"			"[[:upper:]]"	       NOMATCH
452de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       NOMATCH
453de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       NOMATCH
454de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       NOMATCH
455de_DE.ISO-8859-1 "A"			"[[:upper:]]"	       0
456de_DE.ISO-8859-1 "Z"			"[[:upper:]]"	       0
457de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       0
458de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       0
459de_DE.ISO-8859-1 "�"			"[[:upper:]]"	       0
460de_DE.ISO-8859-1 "a"			"[[:alpha:]]"	       0
461de_DE.ISO-8859-1 "z"			"[[:alpha:]]"	       0
462de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
463de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
464de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
465de_DE.ISO-8859-1 "A"			"[[:alpha:]]"	       0
466de_DE.ISO-8859-1 "Z"			"[[:alpha:]]"	       0
467de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
468de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
469de_DE.ISO-8859-1 "�"			"[[:alpha:]]"	       0
470
471de_DE.ISO-8859-1 "a"			"[[=a=]b]"	       0
472de_DE.ISO-8859-1 "�"			"[[=a=]b]"	       0
473de_DE.ISO-8859-1 "�"			"[[=a=]b]"	       0
474de_DE.ISO-8859-1 "�"			"[[=a=]b]"	       0
475de_DE.ISO-8859-1 "�"			"[[=a=]b]"	       0
476de_DE.ISO-8859-1 "b"			"[[=a=]b]"	       0
477de_DE.ISO-8859-1 "c"			"[[=a=]b]"	       NOMATCH
478de_DE.ISO-8859-1 "a"			"[[=�=]b]"	       0
479de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
480de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
481de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
482de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
483de_DE.ISO-8859-1 "b"			"[[=�=]b]"	       0
484de_DE.ISO-8859-1 "c"			"[[=�=]b]"	       NOMATCH
485de_DE.ISO-8859-1 "a"			"[[=�=]b]"	       0
486de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
487de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
488de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
489de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
490de_DE.ISO-8859-1 "b"			"[[=�=]b]"	       0
491de_DE.ISO-8859-1 "c"			"[[=�=]b]"	       NOMATCH
492de_DE.ISO-8859-1 "a"			"[[=�=]b]"	       0
493de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
494de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
495de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
496de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
497de_DE.ISO-8859-1 "b"			"[[=�=]b]"	       0
498de_DE.ISO-8859-1 "c"			"[[=�=]b]"	       NOMATCH
499de_DE.ISO-8859-1 "a"			"[[=�=]b]"	       0
500de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
501de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
502de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
503de_DE.ISO-8859-1 "�"			"[[=�=]b]"	       0
504de_DE.ISO-8859-1 "b"			"[[=�=]b]"	       0
505de_DE.ISO-8859-1 "c"			"[[=�=]b]"	       NOMATCH
506
507de_DE.ISO-8859-1 "aa"			"[[.a.]]a"	       0
508de_DE.ISO-8859-1 "ba"			"[[.a.]]a"	       NOMATCH
509
510
511# And with a multibyte character set.
512de_DE.UTF-8	 "a"			"[a-z]"		       0
513de_DE.UTF-8	 "z"			"[a-z]"		       0
514de_DE.UTF-8	 "ä"			"[a-z]"		       0
515de_DE.UTF-8	 "ö"			"[a-z]"		       0
516de_DE.UTF-8	 "ü"			"[a-z]"		       0
517de_DE.UTF-8	 "A"			"[a-z]"		       NOMATCH
518de_DE.UTF-8	 "Z"			"[a-z]"		       NOMATCH
519de_DE.UTF-8	 "Ä"			"[a-z]"		       NOMATCH
520de_DE.UTF-8	 "Ö"			"[a-z]"		       NOMATCH
521de_DE.UTF-8	 "Ü"			"[a-z]"		       NOMATCH
522de_DE.UTF-8	 "a"			"[A-Z]"		       NOMATCH
523de_DE.UTF-8	 "z"			"[A-Z]"		       NOMATCH
524de_DE.UTF-8	 "ä"			"[A-Z]"		       NOMATCH
525de_DE.UTF-8	 "ö"			"[A-Z]"		       NOMATCH
526de_DE.UTF-8	 "ü"			"[A-Z]"		       NOMATCH
527de_DE.UTF-8	 "A"			"[A-Z]"		       0
528de_DE.UTF-8	 "Z"			"[A-Z]"		       0
529de_DE.UTF-8	 "Ä"			"[A-Z]"		       0
530de_DE.UTF-8	 "Ö"			"[A-Z]"		       0
531de_DE.UTF-8	 "Ü"			"[A-Z]"		       0
532de_DE.UTF-8	 "a"			"[[:lower:]]"	       0
533de_DE.UTF-8	 "z"			"[[:lower:]]"	       0
534de_DE.UTF-8	 "ä"			"[[:lower:]]"	       0
535de_DE.UTF-8	 "ö"			"[[:lower:]]"	       0
536de_DE.UTF-8	 "ü"			"[[:lower:]]"	       0
537de_DE.UTF-8	 "A"			"[[:lower:]]"	       NOMATCH
538de_DE.UTF-8	 "Z"			"[[:lower:]]"	       NOMATCH
539de_DE.UTF-8	 "Ä"			"[[:lower:]]"	       NOMATCH
540de_DE.UTF-8	 "Ö"			"[[:lower:]]"	       NOMATCH
541de_DE.UTF-8	 "Ü"			"[[:lower:]]"	       NOMATCH
542de_DE.UTF-8	 "a"			"[[:upper:]]"	       NOMATCH
543de_DE.UTF-8	 "z"			"[[:upper:]]"	       NOMATCH
544de_DE.UTF-8	 "ä"			"[[:upper:]]"	       NOMATCH
545de_DE.UTF-8	 "ö"			"[[:upper:]]"	       NOMATCH
546de_DE.UTF-8	 "ü"			"[[:upper:]]"	       NOMATCH
547de_DE.UTF-8	 "A"			"[[:upper:]]"	       0
548de_DE.UTF-8	 "Z"			"[[:upper:]]"	       0
549de_DE.UTF-8	 "Ä"			"[[:upper:]]"	       0
550de_DE.UTF-8	 "Ö"			"[[:upper:]]"	       0
551de_DE.UTF-8	 "Ü"			"[[:upper:]]"	       0
552de_DE.UTF-8	 "a"			"[[:alpha:]]"	       0
553de_DE.UTF-8	 "z"			"[[:alpha:]]"	       0
554de_DE.UTF-8	 "ä"			"[[:alpha:]]"	       0
555de_DE.UTF-8	 "ö"			"[[:alpha:]]"	       0
556de_DE.UTF-8	 "ü"			"[[:alpha:]]"	       0
557de_DE.UTF-8	 "A"			"[[:alpha:]]"	       0
558de_DE.UTF-8	 "Z"			"[[:alpha:]]"	       0
559de_DE.UTF-8	 "Ä"			"[[:alpha:]]"	       0
560de_DE.UTF-8	 "Ö"			"[[:alpha:]]"	       0
561de_DE.UTF-8	 "Ü"			"[[:alpha:]]"	       0
562
563de_DE.UTF-8	 "a"			"[[=a=]b]"	       0
564de_DE.UTF-8	 "â"			"[[=a=]b]"	       0
565de_DE.UTF-8	 "à"			"[[=a=]b]"	       0
566de_DE.UTF-8	 "á"			"[[=a=]b]"	       0
567de_DE.UTF-8	 "ä"			"[[=a=]b]"	       0
568de_DE.UTF-8	 "b"			"[[=a=]b]"	       0
569de_DE.UTF-8	 "c"			"[[=a=]b]"	       NOMATCH
570de_DE.UTF-8	 "a"			"[[=â=]b]"	       0
571de_DE.UTF-8	 "â"			"[[=â=]b]"	       0
572de_DE.UTF-8	 "à"			"[[=â=]b]"	       0
573de_DE.UTF-8	 "á"			"[[=â=]b]"	       0
574de_DE.UTF-8	 "ä"			"[[=â=]b]"	       0
575de_DE.UTF-8	 "b"			"[[=â=]b]"	       0
576de_DE.UTF-8	 "c"			"[[=â=]b]"	       NOMATCH
577de_DE.UTF-8	 "a"			"[[=à=]b]"	       0
578de_DE.UTF-8	 "â"			"[[=à=]b]"	       0
579de_DE.UTF-8	 "à"			"[[=à=]b]"	       0
580de_DE.UTF-8	 "á"			"[[=à=]b]"	       0
581de_DE.UTF-8	 "ä"			"[[=à=]b]"	       0
582de_DE.UTF-8	 "b"			"[[=à=]b]"	       0
583de_DE.UTF-8	 "c"			"[[=à=]b]"	       NOMATCH
584de_DE.UTF-8	 "a"			"[[=á=]b]"	       0
585de_DE.UTF-8	 "â"			"[[=á=]b]"	       0
586de_DE.UTF-8	 "à"			"[[=á=]b]"	       0
587de_DE.UTF-8	 "á"			"[[=á=]b]"	       0
588de_DE.UTF-8	 "ä"			"[[=á=]b]"	       0
589de_DE.UTF-8	 "b"			"[[=á=]b]"	       0
590de_DE.UTF-8	 "c"			"[[=á=]b]"	       NOMATCH
591de_DE.UTF-8	 "a"			"[[=ä=]b]"	       0
592de_DE.UTF-8	 "â"			"[[=ä=]b]"	       0
593de_DE.UTF-8	 "à"			"[[=ä=]b]"	       0
594de_DE.UTF-8	 "á"			"[[=ä=]b]"	       0
595de_DE.UTF-8	 "ä"			"[[=ä=]b]"	       0
596de_DE.UTF-8	 "b"			"[[=ä=]b]"	       0
597de_DE.UTF-8	 "c"			"[[=ä=]b]"	       NOMATCH
598
599de_DE.UTF-8	 "aa"			"[[.a.]]a"	       0
600de_DE.UTF-8	 "ba"			"[[.a.]]a"	       NOMATCH
601
602
603# Test of GNU extensions.
604C		 "x"			"x"		       0       PATHNAME|LEADING_DIR
605C		 "x/y"			"x"		       0       PATHNAME|LEADING_DIR
606C		 "x/y/z"		"x"		       0       PATHNAME|LEADING_DIR
607C		 "x"			"*"		       0       PATHNAME|LEADING_DIR
608C		 "x/y"			"*"		       0       PATHNAME|LEADING_DIR
609C		 "x/y/z"		"*"		       0       PATHNAME|LEADING_DIR
610C		 "x"			"*x"		       0       PATHNAME|LEADING_DIR
611C		 "x/y"			"*x"		       0       PATHNAME|LEADING_DIR
612C		 "x/y/z"		"*x"		       0       PATHNAME|LEADING_DIR
613C		 "x"			"x*"		       0       PATHNAME|LEADING_DIR
614C		 "x/y"			"x*"		       0       PATHNAME|LEADING_DIR
615C		 "x/y/z"		"x*"		       0       PATHNAME|LEADING_DIR
616C		 "x"			"a"		       NOMATCH PATHNAME|LEADING_DIR
617C		 "x/y"			"a"		       NOMATCH PATHNAME|LEADING_DIR
618C		 "x/y/z"		"a"		       NOMATCH PATHNAME|LEADING_DIR
619C		 "x"			"x/y"		       NOMATCH PATHNAME|LEADING_DIR
620C		 "x/y"			"x/y"		       0       PATHNAME|LEADING_DIR
621C		 "x/y/z"		"x/y"		       0       PATHNAME|LEADING_DIR
622C		 "x"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
623C		 "x/y"			"x?y"		       NOMATCH PATHNAME|LEADING_DIR
624C		 "x/y/z"		"x?y"		       NOMATCH PATHNAME|LEADING_DIR
625
626# ksh style matching.
627C		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
628C		"/dev/udp/129.22.8.102/45" "/dev/@(tcp|udp)/*/*" 0     PATHNAME|EXTMATCH
629C		"12"			"[1-9]*([0-9])"        0       EXTMATCH
630C		"12abc"			"[1-9]*([0-9])"        NOMATCH EXTMATCH
631C		"1"			"[1-9]*([0-9])"	       0       EXTMATCH
632C		"07"			"+([0-7])"	       0       EXTMATCH
633C		"0377"			"+([0-7])"	       0       EXTMATCH
634C		"09"			"+([0-7])"	       NOMATCH EXTMATCH
635C		"paragraph"		"para@(chute|graph)"   0       EXTMATCH
636C		"paramour"		"para@(chute|graph)"   NOMATCH EXTMATCH
637C		"para991"		"para?([345]|99)1"     0       EXTMATCH
638C		"para381"		"para?([345]|99)1"     NOMATCH EXTMATCH
639C		"paragraph"		"para*([0-9])"	       NOMATCH EXTMATCH
640C		"para"			"para*([0-9])"	       0       EXTMATCH
641C		"para13829383746592"	"para*([0-9])"	       0       EXTMATCH
642C		"paragraph"		"para+([0-9])"	       NOMATCH EXTMATCH
643C		"para"			"para+([0-9])"	       NOMATCH EXTMATCH
644C		"para987346523"		"para+([0-9])"	       0       EXTMATCH
645C		"paragraph"		"para!(*.[0-9])"       0       EXTMATCH
646C		"para.38"		"para!(*.[0-9])"       0       EXTMATCH
647C		"para.graph"		"para!(*.[0-9])"       0       EXTMATCH
648C		"para39"		"para!(*.[0-9])"       0       EXTMATCH
649C		""			"*(0|1|3|5|7|9)"       0       EXTMATCH
650C		"137577991"		"*(0|1|3|5|7|9)"       0       EXTMATCH
651C		"2468"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
652C		"1358"			"*(0|1|3|5|7|9)"       NOMATCH EXTMATCH
653C		"file.c"		"*.c?(c)"	       0       EXTMATCH
654C		"file.C"		"*.c?(c)"	       NOMATCH EXTMATCH
655C		"file.cc"		"*.c?(c)"	       0       EXTMATCH
656C		"file.ccc"		"*.c?(c)"	       NOMATCH EXTMATCH
657C		"parse.y"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
658C		"shell.c"		"!(*.c|*.h|Makefile.in|config*|README)" NOMATCH EXTMATCH
659C		"Makefile"		"!(*.c|*.h|Makefile.in|config*|README)" 0 EXTMATCH
660C		"VMS.FILE;1"		"*\;[1-9]*([0-9])"     0       EXTMATCH
661C		"VMS.FILE;0"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
662C		"VMS.FILE;"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
663C		"VMS.FILE;139"		"*\;[1-9]*([0-9])"     0       EXTMATCH
664C		"VMS.FILE;1N"		"*\;[1-9]*([0-9])"     NOMATCH EXTMATCH
665C		"abcfefg"		"ab**(e|f)"	       0       EXTMATCH
666C		"abcfefg"		"ab**(e|f)g"	       0       EXTMATCH
667C		"ab"			"ab*+(e|f)"	       NOMATCH EXTMATCH
668C		"abef"			"ab***ef"	       0       EXTMATCH
669C		"abef"			"ab**"		       0       EXTMATCH
670C		"fofo"			"*(f*(o))"	       0       EXTMATCH
671C		"ffo"			"*(f*(o))"	       0       EXTMATCH
672C		"foooofo"		"*(f*(o))"	       0       EXTMATCH
673C		"foooofof"		"*(f*(o))"	       0       EXTMATCH
674C		"fooofoofofooo"		"*(f*(o))"	       0       EXTMATCH
675C		"foooofof"		"*(f+(o))"	       NOMATCH EXTMATCH
676C		"xfoooofof"		"*(f*(o))"	       NOMATCH EXTMATCH
677C		"foooofofx"		"*(f*(o))"	       NOMATCH EXTMATCH
678C		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
679C		"ofooofoofofooo"	"*(f*(o))"	       NOMATCH EXTMATCH
680C		"foooxfooxfoxfooox"	"*(f*(o)x)"	       0       EXTMATCH
681C		"foooxfooxofoxfooox"	"*(f*(o)x)"	       NOMATCH EXTMATCH
682C		"foooxfooxfxfooox"	"*(f*(o)x)"	       0       EXTMATCH
683C		"ofxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
684C		"ofoooxoofxo"		"*(*(of*(o)x)o)"       0       EXTMATCH
685C		"ofoooxoofxoofoooxoofxo" "*(*(of*(o)x)o)"      0       EXTMATCH
686C		"ofoooxoofxoofoooxoofxoo" "*(*(of*(o)x)o)"     0       EXTMATCH
687C		"ofoooxoofxoofoooxoofxofo" "*(*(of*(o)x)o)"    NOMATCH EXTMATCH
688C		"ofoooxoofxoofoooxoofxooofxofxo" "*(*(of*(o)x)o)" 0    EXTMATCH
689C		"aac"			"*(@(a))a@(c)"	       0       EXTMATCH
690C		"ac"			"*(@(a))a@(c)"	       0       EXTMATCH
691C		"c"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
692C		"aaac"			"*(@(a))a@(c)"	       0       EXTMATCH
693C		"baaac"			"*(@(a))a@(c)"	       NOMATCH EXTMATCH
694C		"abcd"			"?@(a|b)*@(c)d"	       0       EXTMATCH
695C		"abcd"			"@(ab|a*@(b))*(c)d"    0       EXTMATCH
696C		"acd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
697C		"abbcd"			"@(ab|a*(b))*(c)d"     0       EXTMATCH
698C		"effgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
699C		"efgz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
700C		"egz"			"@(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
701C		"egzefffgzbcdij"	"*(b+(c)d|e*(f)g?|?(h)i@(j|k))" 0 EXTMATCH
702C		"egz"			"@(b+(c)d|e+(f)g?|?(h)i@(j|k))" NOMATCH EXTMATCH
703C		"ofoofo"		"*(of+(o))"	       0       EXTMATCH
704C		"oxfoxoxfox"		"*(oxf+(ox))"	       0       EXTMATCH
705C		"oxfoxfox"		"*(oxf+(ox))"	       NOMATCH EXTMATCH
706C		"ofoofo"		"*(of+(o)|f)"	       0       EXTMATCH
707C		"foofoofo"		"@(foo|f|fo)*(f|of+(o))" 0     EXTMATCH
708C		"oofooofo"		"*(of|oof+(o))"	       0       EXTMATCH
709C		"fffooofoooooffoofffooofff" "*(*(f)*(o))"      0       EXTMATCH
710C		"fofoofoofofoo"		"*(fo|foo)"	       0       EXTMATCH
711C		"foo"			"!(x)"		       0       EXTMATCH
712C		"foo"			"!(x)*"		       0       EXTMATCH
713C		"foo"			"!(foo)"	       NOMATCH EXTMATCH
714C		"foo"			"!(foo)*"	       0       EXTMATCH
715C		"foobar"		"!(foo)"	       0       EXTMATCH
716C		"foobar"		"!(foo)*"	       0       EXTMATCH
717C		"moo.cow"		"!(*.*).!(*.*)"	       0       EXTMATCH
718C		"mad.moo.cow"		"!(*.*).!(*.*)"	       NOMATCH EXTMATCH
719C		"mucca.pazza"		"mu!(*(c))?.pa!(*(z))?" NOMATCH EXTMATCH
720C		"fff"			"!(f)"		       0       EXTMATCH
721C		"fff"			"*(!(f))"	       0       EXTMATCH
722C		"fff"			"+(!(f))"	       0       EXTMATCH
723C		"ooo"			"!(f)"		       0       EXTMATCH
724C		"ooo"			"*(!(f))"	       0       EXTMATCH
725C		"ooo"			"+(!(f))"	       0       EXTMATCH
726C		"foo"			"!(f)"		       0       EXTMATCH
727C		"foo"			"*(!(f))"	       0       EXTMATCH
728C		"foo"			"+(!(f))"	       0       EXTMATCH
729C		"f"			"!(f)"		       NOMATCH EXTMATCH
730C		"f"			"*(!(f))"	       NOMATCH EXTMATCH
731C		"f"			"+(!(f))"	       NOMATCH EXTMATCH
732C		"foot"			"@(!(z*)|*x)"	       0       EXTMATCH
733C		"zoot"			"@(!(z*)|*x)"	       NOMATCH EXTMATCH
734C		"foox"			"@(!(z*)|*x)"	       0       EXTMATCH
735C		"zoox"			"@(!(z*)|*x)"	       0       EXTMATCH
736C		"foo"			"*(!(foo))	       0       EXTMATCH
737C		"foob"			"!(foo)b*"	       NOMATCH EXTMATCH
738C		"foobb"			"!(foo)b*"	       0       EXTMATCH
739C		"["			"*([a[])"	       0       EXTMATCH
740C		"]"			"*([]a[])"	       0       EXTMATCH
741C		"a"			"*([]a[])"	       0       EXTMATCH
742C		"b"			"*([!]a[])"	       0       EXTMATCH
743C		"["			"*([!]a[]|[[])"	       0       EXTMATCH
744C		"]"			"*([!]a[]|[]])"	       0       EXTMATCH
745C		"["			"!([!]a[])"	       0       EXTMATCH
746C		"]"			"!([!]a[])"	       0       EXTMATCH
747C		")"			"*([)])"	       0       EXTMATCH
748C		"*"			"*([*(])"	       0       EXTMATCH
749C		"abcd"			"*!(|a)cd"	       0       EXTMATCH
750C		"ab/.a"			"+([abc])/*"	       NOMATCH EXTMATCH|PATHNAME|PERIOD
751C		""			""		       0
752C		""			""		       0       EXTMATCH
753C		""			"*([abc])"	       0       EXTMATCH
754C		""			"?([abc])"	       0       EXTMATCH
755