Fix problems with overlong directory names: phase #1
[mono.git] / eglib / test / pattern.c
1 #include <glib.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5 #include <stdio.h>
6 #include "test.h"
7
8 #define MATCH(pat,string,error_if,msg) \
9         spec = g_pattern_spec_new (pat); \
10         res = g_pattern_match_string (spec, string); \
11         if (res == error_if) \
12                 return FAILED (msg " returned %s", res ? "TRUE" : "FALSE"); \
13         g_pattern_spec_free (spec);
14
15 #define TEST_MATCH(pat,string,n) MATCH (pat, string, FALSE, "MATCH " #n)
16 #define TEST_NO_MATCH(pat,string,n) MATCH (pat, string,TRUE, "NO_MATCH " #n)
17
18 RESULT
19 test_pattern_spec ()
20 {
21         GPatternSpec *spec;
22         gboolean res;
23
24         /* spec = g_pattern_spec_new (NULL); */
25         TEST_MATCH ("*", "hola", 1);
26         TEST_MATCH ("hola", "hola", 2);
27         TEST_MATCH ("????", "hola", 3);
28         TEST_MATCH ("???a", "hola", 4);
29         TEST_MATCH ("h??a", "hola", 5);
30         TEST_MATCH ("h??*", "hola", 6);
31         TEST_MATCH ("h*", "hola", 7);
32         TEST_MATCH ("*hola", "hola", 8);
33         TEST_MATCH ("*l*", "hola", 9);
34         TEST_MATCH ("h*??", "hola", 10);
35         TEST_MATCH ("h*???", "hola", 11);
36         TEST_MATCH ("?o??", "hola", 12);
37         TEST_MATCH ("*h*o*l*a*", "hola", 13);
38         TEST_MATCH ("h*o*l*a", "hola", 14);
39         TEST_MATCH ("h?*?", "hola", 15);
40
41         TEST_NO_MATCH ("", "hola", 1);
42         TEST_NO_MATCH ("?????", "hola", 2);
43         TEST_NO_MATCH ("???", "hola", 3);
44         TEST_NO_MATCH ("*o", "hola", 4);
45         TEST_NO_MATCH ("h", "hola", 5);
46         TEST_NO_MATCH ("h*????", "hola", 6);
47
48         return OK;
49 }
50
51 static Test pattern_tests [] = {
52         {"g_pattern_spec*", test_pattern_spec},
53         {NULL, NULL}
54 };
55
56 DEFINE_TEST_GROUP_INIT(pattern_tests_init, pattern_tests)
57