00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 #include <shwild/shwild.h>
00047 #include <shwild/implicit_link.h>
00048
00049
00050 #include <cstring/implicit_link.h>
00051
00052
00053 #include <assert.h>
00054 #include <stdio.h>
00055 #include <stdlib.h>
00056
00057
00058
00059 int main(void)
00060 {
00061
00062 {
00063 const char pattern[] = "abcd";
00064
00065 assert(0 == shwild_match(pattern, "abcd", 0));
00066 assert(0 != shwild_match(pattern, "ABCD", 0));
00067 assert(0 == shwild_match(pattern, "ABCD", SHWILD_F_IGNORE_CASE));
00068
00069 ((void)pattern);
00070 }
00071
00072
00073 {
00074 const char pattern[] = "a*c?";
00075
00076 assert(0 == shwild_match(pattern, "abcd", 0));
00077 assert(0 == shwild_match(pattern, "a*c?", 0));
00078 assert(0 == shwild_match(pattern, "abbbbbbbbcd", 0));
00079 assert(0 == shwild_match(pattern, "acd", 0));
00080 assert(0 != shwild_match(pattern, "abdc", 0));
00081 assert(0 == shwild_match(pattern, "abc?", 0));
00082
00083 ((void)pattern);
00084 }
00085
00086
00087 {
00088 const char pattern[] = "a\\*c\\?";
00089
00090 assert(0 != shwild_match(pattern, "abcd", 0));
00091 assert(0 == shwild_match(pattern, "a*c?", 0));
00092 assert(0 != shwild_match(pattern, "a\\*c\\?", 0));
00093 assert(0 != shwild_match(pattern, "abbbbbbbbcd", 0));
00094 assert(0 != shwild_match(pattern, "acd", 0));
00095 assert(0 != shwild_match(pattern, "abdc", 0));
00096 assert(0 != shwild_match(pattern, "abc?", 0));
00097
00098
00099
00100
00101
00102 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_BACKSLASH_ESCAPE));
00103 assert(0 == shwild_match(pattern, "a\\*c\\?", SHWILD_F_SUPPRESS_BACKSLASH_ESCAPE));
00104
00105 ((void)pattern);
00106 }
00107
00108
00109 {
00110 const char pattern[] = "a[bc]c[defghijklm]";
00111
00112 assert(0 == shwild_match(pattern, "abcd", 0));
00113 assert(0 != shwild_match(pattern, "aacd", 0));
00114 assert(0 == shwild_match(pattern, "accm", 0));
00115 assert(0 != shwild_match(pattern, "abcn", 0));
00116 assert(0 != shwild_match(pattern, "a[bc]c[defghijklm]", 0));
00117
00118
00119
00120
00121 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_SUPPORT));
00122 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_SUPPORT));
00123 assert(0 != shwild_match(pattern, "accm", SHWILD_F_SUPPRESS_RANGE_SUPPORT));
00124 assert(0 != shwild_match(pattern, "abcn", SHWILD_F_SUPPRESS_RANGE_SUPPORT));
00125 assert(0 == shwild_match(pattern, "a[bc]c[defghijklm]", SHWILD_F_SUPPRESS_RANGE_SUPPORT));
00126
00127 ((void)pattern);
00128 }
00129
00130
00131 {
00132 const char pattern[] = "a[b-c]c[d-m]";
00133
00134 assert(0 == shwild_match(pattern, "abcd", 0));
00135 assert(0 != shwild_match(pattern, "aacd", 0));
00136 assert(0 == shwild_match(pattern, "accm", 0));
00137 assert(0 != shwild_match(pattern, "abcn", 0));
00138
00139
00140
00141
00142 assert(0 == shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00143 assert(0 == shwild_match(pattern, "a-cd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00144 assert(0 == shwild_match(pattern, "accd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00145 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00146 assert(0 == shwild_match(pattern, "accm", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00147 assert(0 != shwild_match(pattern, "accl", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00148 assert(0 != shwild_match(pattern, "abcn", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_SUPPORT));
00149
00150 ((void)pattern);
00151 }
00152
00153
00154 {
00155 const char pattern[] = "a[c-b]c[m-d]";
00156
00157 assert(0 == shwild_match(pattern, "abcd", 0));
00158 assert(0 != shwild_match(pattern, "aacd", 0));
00159 assert(0 == shwild_match(pattern, "accm", 0));
00160 assert(0 != shwild_match(pattern, "abcn", 0));
00161
00162 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_HIGHLOW_SUPPORT));
00163 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_HIGHLOW_SUPPORT));
00164 assert(0 != shwild_match(pattern, "accd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_HIGHLOW_SUPPORT));
00165 assert(0 != shwild_match(pattern, "accm", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_HIGHLOW_SUPPORT));
00166 assert(0 != shwild_match(pattern, "abcn", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_HIGHLOW_SUPPORT));
00167
00168 ((void)pattern);
00169 }
00170
00171
00172 {
00173 const char pattern[] = "a[b-C]c[d-M]";
00174
00175 assert(0 == shwild_match(pattern, "abcd", 0));
00176 assert(0 != shwild_match(pattern, "aacd", 0));
00177 assert(0 == shwild_match(pattern, "aCcJ", 0));
00178 assert(0 != shwild_match(pattern, "abcn", 0));
00179
00180 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_CROSSCASE_SUPPORT));
00181 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_CROSSCASE_SUPPORT));
00182 assert(0 != shwild_match(pattern, "aCcJ", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_CROSSCASE_SUPPORT));
00183 assert(0 != shwild_match(pattern, "abcn", SHWILD_F_SUPPRESS_RANGE_CONTINUUM_CROSSCASE_SUPPORT));
00184
00185 ((void)pattern);
00186 }
00187
00188
00189 {
00190 const char pattern[] = "a[*]c[?]";
00191
00192 assert(0 != shwild_match(pattern, "abcd", 0));
00193 assert(0 == shwild_match(pattern, "a*c?", 0));
00194 assert(0 != shwild_match(pattern, "abbbbbbbbcd", 0));
00195 assert(0 != shwild_match(pattern, "acd", 0));
00196 assert(0 != shwild_match(pattern, "abdc", 0));
00197 assert(0 != shwild_match(pattern, "abc?", 0));
00198
00199 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00200 assert(0 != shwild_match(pattern, "a*c?", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00201 assert(0 != shwild_match(pattern, "abbbbbbbbcd", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00202 assert(0 != shwild_match(pattern, "acd", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00203 assert(0 != shwild_match(pattern, "abdc", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00204 assert(0 != shwild_match(pattern, "abc?", SHWILD_F_SUPPRESS_RANGE_LITERAL_WILDCARD_SUPPORT));
00205
00206 ((void)pattern);
00207 }
00208
00209
00210 {
00211 const char pattern[] = "a[-a-c]c[d-]";
00212
00213 assert(0 == shwild_match(pattern, "abcd", 0));
00214 assert(0 == shwild_match(pattern, "aacd", 0));
00215 assert(0 == shwild_match(pattern, "acc-", 0));
00216 assert(0 == shwild_match(pattern, "a-c-", 0));
00217 assert(0 != shwild_match(pattern, "abce", 0));
00218
00219 assert(0 != shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_LEADTRAIL_LITERAL_HYPHEN_SUPPORT));
00220 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_LEADTRAIL_LITERAL_HYPHEN_SUPPORT));
00221 assert(0 != shwild_match(pattern, "acc-", SHWILD_F_SUPPRESS_RANGE_LEADTRAIL_LITERAL_HYPHEN_SUPPORT));
00222 assert(0 != shwild_match(pattern, "a-c-", SHWILD_F_SUPPRESS_RANGE_LEADTRAIL_LITERAL_HYPHEN_SUPPORT));
00223 assert(0 != shwild_match(pattern, "abce", SHWILD_F_SUPPRESS_RANGE_LEADTRAIL_LITERAL_HYPHEN_SUPPORT));
00224
00225 ((void)pattern);
00226 }
00227
00228
00229 {
00230 const char pattern[] = "a[b-c]c[^d-m]";
00231
00232 assert(0 != shwild_match(pattern, "abcd", 0));
00233 assert(0 != shwild_match(pattern, "aacd", 0));
00234 assert(0 == shwild_match(pattern, "abcc", 0));
00235 assert(0 != shwild_match(pattern, "accm", 0));
00236 assert(0 == shwild_match(pattern, "abcn", 0));
00237
00238 assert(0 == shwild_match(pattern, "abcd", SHWILD_F_SUPPRESS_RANGE_NOT_SUPPORT));
00239 assert(0 != shwild_match(pattern, "aacd", SHWILD_F_SUPPRESS_RANGE_NOT_SUPPORT));
00240 assert(0 != shwild_match(pattern, "abcc", SHWILD_F_SUPPRESS_RANGE_NOT_SUPPORT));
00241 assert(0 == shwild_match(pattern, "accm", SHWILD_F_SUPPRESS_RANGE_NOT_SUPPORT));
00242 assert(0 != shwild_match(pattern, "abcn", SHWILD_F_SUPPRESS_RANGE_NOT_SUPPORT));
00243
00244 ((void)pattern);
00245 }
00246
00247 return EXIT_SUCCESS;
00248 }
00249
00250