Add test cases for * with FNM_PATHNAME errors.
[kopensolaris-gnu/glibc.git] / posix / testfnm.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include "fnmatch.h"
4
5 struct {
6   const char *name;
7   const char *pattern;
8   int flags;
9   int expected;
10 } tests[] = {
11   { "lib", "*LIB*", FNM_PERIOD, FNM_NOMATCH },
12   { "lib", "*LIB*", FNM_CASEFOLD|FNM_PERIOD, 0 },
13   { "a/b", "a[/]b", 0, 0 },
14   { "a/b", "a[/]b", FNM_PATHNAME, FNM_NOMATCH },
15   { "a/b", "[a-z]/[a-z]", 0, 0 },
16   { "a/b", "*", FNM_FILE_NAME, FNM_NOMATCH },
17   { "a/b", "*[/]b", FNM_FILE_NAME, FNM_NOMATCH },
18   { "a/b", "*[b]", FNM_FILE_NAME, FNM_NOMATCH }
19 };
20
21 int
22 main (void)
23 {
24   size_t i;
25   int errors = 0;
26
27   for (i = 0; i < sizeof (tests) / sizeof (*tests); i++)
28     {
29       int match;
30
31       match = fnmatch (tests[i].pattern, tests[i].name, tests[i].flags);
32       if (match != tests[i].expected)
33         {
34           printf ("%s %s %s\n", tests[i].pattern,
35                   match == 0 ? "matches" : "does not match",
36                   tests[i].name);
37           errors++;
38         }
39     }
40
41   exit (errors != 0);
42 }