3289619f5210c6b43715008b750358172e15f1e0
[reactos.git] / rostests / kmtests / ntos_fsrtl / FsRtlExpression.c
1 /*
2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: LGPLv2+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Kernel-Mode Test Suite FsRtl Test
5 * PROGRAMMER: Pierre Schweitzer <pierre.schweitzer@reactos.org>
6 */
7
8 /* TODO: most of these calls fail the Windows checked build's !islower assertion and others */
9
10 #include <kmt_test.h>
11
12 #define NDEBUG
13 #include <debug.h>
14
15 static VOID FsRtlIsNameInExpressionTest()
16 {
17 UNICODE_STRING Expression, Name;
18
19 /* !Name->Length || !Expression->Length asserts */
20 if (!KmtIsCheckedBuild)
21 {
22 RtlInitUnicodeString(&Expression, L"*");
23 RtlInitUnicodeString(&Name, L"");
24 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
25 RtlInitUnicodeString(&Expression, L"");
26 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
27 }
28
29 RtlInitUnicodeString(&Expression, L"**");
30 if (!KmtIsCheckedBuild)
31 {
32 RtlInitUnicodeString(&Name, L"");
33 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
34 }
35 RtlInitUnicodeString(&Name, L"a");
36 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
37
38 RtlInitUnicodeString(&Expression, L"ntdll.dll");
39 RtlInitUnicodeString(&Name, L".");
40 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
41 RtlInitUnicodeString(&Name, L"~1");
42 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
43 RtlInitUnicodeString(&Name, L"..");
44 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
45 RtlInitUnicodeString(&Name, L"ntdll.dll");
46 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
47
48 RtlInitUnicodeString(&Expression, L"smss.exe");
49 RtlInitUnicodeString(&Name, L".");
50 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
51 RtlInitUnicodeString(&Name, L"~1");
52 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
53 RtlInitUnicodeString(&Name, L"..");
54 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
55 RtlInitUnicodeString(&Name, L"ntdll.dll");
56 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
57 RtlInitUnicodeString(&Name, L"NTDLL.dll");
58 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
59
60 RtlInitUnicodeString(&Expression, L"nt??krnl.???");
61 RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
62 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
63
64 RtlInitUnicodeString(&Expression, L"he*o");
65 RtlInitUnicodeString(&Name, L"hello");
66 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
67 RtlInitUnicodeString(&Name, L"helo");
68 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
69 RtlInitUnicodeString(&Name, L"hella");
70 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
71
72 RtlInitUnicodeString(&Expression, L"he*");
73 RtlInitUnicodeString(&Name, L"hello");
74 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
75 RtlInitUnicodeString(&Name, L"helo");
76 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
77 RtlInitUnicodeString(&Name, L"hella");
78 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
79
80 RtlInitUnicodeString(&Expression, L"*.cpl");
81 RtlInitUnicodeString(&Name, L"kdcom.dll");
82 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
83 RtlInitUnicodeString(&Name, L"bootvid.dll");
84 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
85 RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
86 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
87
88 RtlInitUnicodeString(&Expression, L".");
89 RtlInitUnicodeString(&Name, L"NTDLL.DLL");
90 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
91
92 RtlInitUnicodeString(&Expression, L"F0_*.*");
93 RtlInitUnicodeString(&Name, L".");
94 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
95 RtlInitUnicodeString(&Name, L"..");
96 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
97 RtlInitUnicodeString(&Name, L"SETUP.EXE");
98 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
99 RtlInitUnicodeString(&Name, L"f0_");
100 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
101 RtlInitUnicodeString(&Name, L"f0_");
102 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
103 RtlInitUnicodeString(&Name, L"F0_");
104 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
105 RtlInitUnicodeString(&Name, L"f0_.");
106 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
107 RtlInitUnicodeString(&Name, L"f0_.");
108 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == TRUE, "expected TRUE, got FALSE\n");
109 RtlInitUnicodeString(&Name, L"F0_.");
110 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
111 RtlInitUnicodeString(&Name, L"F0_001");
112 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
113 RtlInitUnicodeString(&Name, L"F0_001");
114 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
115 RtlInitUnicodeString(&Name, L"f0_001");
116 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
117 RtlInitUnicodeString(&Name, L"f0_001");
118 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
119 RtlInitUnicodeString(&Name, L"F0_001.");
120 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
121 RtlInitUnicodeString(&Name, L"f0_001.txt");
122 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
123 RtlInitUnicodeString(&Name, L"f0_001.txt");
124 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == TRUE, "expected TRUE, got FALSE\n");
125 RtlInitUnicodeString(&Name, L"F0_001.txt");
126 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
127 RtlInitUnicodeString(&Name, L"F0_001.txt");
128 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == TRUE, "expected TRUE, got FALSE\n");
129 RtlInitUnicodeString(&Name, L"F0_001.txt");
130 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == TRUE, "expected TRUE, got FALSE\n");
131
132 RtlInitUnicodeString(&Expression, L"F0_*.");
133 RtlInitUnicodeString(&Name, L".");
134 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
135 RtlInitUnicodeString(&Name, L"..");
136 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
137 RtlInitUnicodeString(&Name, L"SETUP.EXE");
138 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
139 RtlInitUnicodeString(&Name, L"f0_");
140 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
141 RtlInitUnicodeString(&Name, L"f0_");
142 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
143 RtlInitUnicodeString(&Name, L"F0_");
144 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
145 RtlInitUnicodeString(&Name, L"f0_.");
146 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
147 RtlInitUnicodeString(&Name, L"f0_.");
148 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == TRUE, "expected TRUE, got FALSE\n");
149 RtlInitUnicodeString(&Name, L"F0_.");
150 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
151 RtlInitUnicodeString(&Name, L"F0_001");
152 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
153 RtlInitUnicodeString(&Name, L"F0_001");
154 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
155 RtlInitUnicodeString(&Name, L"f0_001");
156 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
157 RtlInitUnicodeString(&Name, L"f0_001");
158 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
159 RtlInitUnicodeString(&Name, L"F0_OO1.");
160 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
161 RtlInitUnicodeString(&Name, L"f0_001.txt");
162 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
163 RtlInitUnicodeString(&Name, L"f0_001.txt");
164 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
165 RtlInitUnicodeString(&Name, L"F0_001.txt");
166 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
167 RtlInitUnicodeString(&Name, L"F0_001.txt");
168 ok(FsRtlIsNameInExpression(&Expression, &Name, TRUE, NULL) == FALSE, "expected FALSE, got TRUE\n");
169
170 RtlInitUnicodeString(&Expression, L"*.TTF");
171 RtlInitUnicodeString(&Name, L".");
172 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
173 RtlInitUnicodeString(&Name, L"..");
174 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
175 RtlInitUnicodeString(&Name, L"SETUP.INI");
176 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
177
178 RtlInitUnicodeString(&Expression, L"*");
179 RtlInitUnicodeString(&Name, L".");
180 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
181 RtlInitUnicodeString(&Name, L"..");
182 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
183 RtlInitUnicodeString(&Name, L"SETUP.INI");
184 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
185
186 RtlInitUnicodeString(&Expression, L".*");
187 RtlInitUnicodeString(&Name, L"1");
188 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
189 RtlInitUnicodeString(&Name, L"01");
190 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
191 RtlInitUnicodeString(&Name, L" ");
192 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
193 RtlInitUnicodeString(&Name, L"");
194 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
195 RtlInitUnicodeString(&Name, L".");
196 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
197 RtlInitUnicodeString(&Name, L"1.txt");
198 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
199 RtlInitUnicodeString(&Name, L" .txt");
200 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
201 RtlInitUnicodeString(&Name, L".txt");
202 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
203
204 RtlInitUnicodeString(&Expression, L"\"ntoskrnl.exe");
205 RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
206 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
207 RtlInitUnicodeString(&Expression, L"ntoskrnl\"exe");
208 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
209 RtlInitUnicodeString(&Expression, L"ntoskrn\".exe");
210 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
211 RtlInitUnicodeString(&Expression, L"ntoskrn\"\"exe");
212 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
213 RtlInitUnicodeString(&Expression, L"ntoskrnl.\"exe");
214 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
215 RtlInitUnicodeString(&Expression, L"ntoskrnl.exe\"");
216 RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
217 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
218 RtlInitUnicodeString(&Name, L"ntoskrnl.exe.");
219 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
220
221 RtlInitUnicodeString(&Expression, L"*.c.d");
222 RtlInitUnicodeString(&Name, L"a.b.c.d");
223 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
224 RtlInitUnicodeString(&Expression, L"*.?.c.d");
225 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
226 RtlInitUnicodeString(&Expression, L"*?");
227 if (!KmtIsCheckedBuild)
228 {
229 RtlInitUnicodeString(&Name, L"");
230 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
231 }
232 RtlInitUnicodeString(&Name, L"a");
233 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
234 RtlInitUnicodeString(&Name, L"aa");
235 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
236 RtlInitUnicodeString(&Name, L"aaa");
237 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
238 RtlInitUnicodeString(&Expression, L"?*?");
239 if (!KmtIsCheckedBuild)
240 {
241 RtlInitUnicodeString(&Name, L"");
242 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
243 }
244 RtlInitUnicodeString(&Name, L"a");
245 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
246 RtlInitUnicodeString(&Name, L"aa");
247 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
248 RtlInitUnicodeString(&Name, L"aaa");
249 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
250 RtlInitUnicodeString(&Name, L"aaaa");
251 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
252
253 /* Tests from #5923 */
254 RtlInitUnicodeString(&Expression, L"C:\\ReactOS\\**");
255 RtlInitUnicodeString(&Name, L"C:\\ReactOS\\dings.bmp");
256 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
257 RtlInitUnicodeString(&Expression, L"C:\\ReactOS\\***");
258 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
259 RtlInitUnicodeString(&Expression, L"C:\\Windows\\*a*");
260 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
261
262 RtlInitUnicodeString(&Expression, L"C:\\ReactOS\\*.bmp");
263 RtlInitUnicodeString(&Name, L"C:\\Windows\\explorer.exe");
264 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
265 RtlInitUnicodeString(&Expression, L"*.bmp;*.dib");
266 RtlInitUnicodeString(&Name, L"winhlp32.exe");
267 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
268
269 /* Backtracking tests */
270 RtlInitUnicodeString(&Expression, L"*.*.*.*");
271 RtlInitUnicodeString(&Name, L"127.0.0.1");
272 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
273
274 RtlInitUnicodeString(&Expression, L"*?*?*?*");
275 RtlInitUnicodeString(&Name, L"1.0.0.1");
276 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
277 RtlInitUnicodeString(&Expression, L"?*?*?*?");
278 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
279 RtlInitUnicodeString(&Expression, L"?.?.?.?");
280 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
281
282 RtlInitUnicodeString(&Expression, L"*a*ab*abc");
283 RtlInitUnicodeString(&Name, L"aabaabcdadabdabc");
284 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
285
286 /* Tests for extra wildcards */
287 RtlInitUnicodeString(&Expression, L"ab<exe");
288 RtlInitUnicodeString(&Name, L"abcd.exe");
289 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
290 RtlInitUnicodeString(&Name, L"ab.exe");
291 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
292 RtlInitUnicodeString(&Name, L"abcdexe");
293 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
294 RtlInitUnicodeString(&Name, L"acd.exe");
295 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
296 RtlInitUnicodeString(&Expression, L"a.b<exe");
297 RtlInitUnicodeString(&Name, L"a.bcd.exe");
298 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
299 RtlInitUnicodeString(&Expression, L"a<b.exe");
300 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
301 RtlInitUnicodeString(&Name, L"a.b.exe");
302 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
303
304 RtlInitUnicodeString(&Expression, L"abc.exe\"");
305 RtlInitUnicodeString(&Name, L"abc.exe");
306 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
307 RtlInitUnicodeString(&Name, L"abc.exe.");
308 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
309 RtlInitUnicodeString(&Name, L"abc.exe.back");
310 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
311 RtlInitUnicodeString(&Name, L"abc.exes");
312 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
313
314 RtlInitUnicodeString(&Expression, L"a>c.exe");
315 RtlInitUnicodeString(&Name, L"abc.exe");
316 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE\n");
317 RtlInitUnicodeString(&Name, L"ac.exe");
318 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
319 RtlInitUnicodeString(&Expression, L"a>>>exe");
320 RtlInitUnicodeString(&Name, L"abc.exe");
321 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
322 RtlInitUnicodeString(&Name, L"ac.exe");
323 ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE\n");
324 }
325
326 static VOID FsRtlIsDbcsInExpressionTest()
327 {
328 ANSI_STRING Expression, Name;
329
330 if (!KmtIsCheckedBuild)
331 {
332 RtlInitAnsiString(&Expression, "*");
333 RtlInitAnsiString(&Name, "");
334 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
335 RtlInitAnsiString(&Expression, "");
336 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
337 }
338
339 RtlInitAnsiString(&Expression, "**");
340 if (!KmtIsCheckedBuild)
341 {
342 RtlInitAnsiString(&Name, "");
343 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
344 }
345 RtlInitAnsiString(&Name, "a");
346 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
347
348 RtlInitAnsiString(&Expression, "ntdll.dll");
349 RtlInitAnsiString(&Name, ".");
350 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
351 RtlInitAnsiString(&Name, "~1");
352 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
353 RtlInitAnsiString(&Name, "..");
354 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
355 RtlInitAnsiString(&Name, "ntdll.dll");
356 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
357
358 RtlInitAnsiString(&Expression, "smss.exe");
359 RtlInitAnsiString(&Name, ".");
360 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
361 RtlInitAnsiString(&Name, "~1");
362 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
363 RtlInitAnsiString(&Name, "..");
364 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
365 RtlInitAnsiString(&Name, "ntdll.dll");
366 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
367 RtlInitAnsiString(&Name, "NTDLL.dll");
368 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
369
370 RtlInitAnsiString(&Expression, "nt??krnl.???");
371 RtlInitAnsiString(&Name, "ntoskrnl.exe");
372 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
373
374 RtlInitAnsiString(&Expression, "he*o");
375 RtlInitAnsiString(&Name, "hello");
376 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
377 RtlInitAnsiString(&Name, "helo");
378 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
379 RtlInitAnsiString(&Name, "hella");
380 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
381
382 RtlInitAnsiString(&Expression, "he*");
383 RtlInitAnsiString(&Name, "hello");
384 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
385 RtlInitAnsiString(&Name, "helo");
386 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
387 RtlInitAnsiString(&Name, "hella");
388 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
389
390 RtlInitAnsiString(&Expression, "*.cpl");
391 RtlInitAnsiString(&Name, "kdcom.dll");
392 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
393 RtlInitAnsiString(&Name, "bootvid.dll");
394 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
395 RtlInitAnsiString(&Name, "ntoskrnl.exe");
396 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
397
398 RtlInitAnsiString(&Expression, ".");
399 RtlInitAnsiString(&Name, "NTDLL.DLL");
400 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
401
402 RtlInitAnsiString(&Expression, "F0_*.*");
403 RtlInitAnsiString(&Name, ".");
404 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
405 RtlInitAnsiString(&Name, "..");
406 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
407 RtlInitAnsiString(&Name, "SETUP.EXE");
408 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
409 RtlInitAnsiString(&Name, "f0_");
410 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
411 RtlInitAnsiString(&Name, "F0_");
412 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
413 RtlInitAnsiString(&Name, "f0_.");
414 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
415 RtlInitAnsiString(&Name, "F0_.");
416 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
417 RtlInitAnsiString(&Name, "F0_001");
418 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
419
420 RtlInitAnsiString(&Name, "f0_001");
421 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
422 RtlInitAnsiString(&Name, "F0_001.");
423 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
424 RtlInitAnsiString(&Name, "f0_001.txt");
425 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
426 RtlInitAnsiString(&Name, "F0_001.txt");
427 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
428
429 RtlInitAnsiString(&Expression, "F0_*.");
430 RtlInitAnsiString(&Name, ".");
431 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
432 RtlInitAnsiString(&Name, "..");
433 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
434 RtlInitAnsiString(&Name, "SETUP.EXE");
435 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
436 RtlInitAnsiString(&Name, "f0_");
437 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
438 RtlInitAnsiString(&Name, "F0_");
439 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
440 RtlInitAnsiString(&Name, "f0_.");
441 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
442 RtlInitAnsiString(&Name, "F0_.");
443 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
444 RtlInitAnsiString(&Name, "F0_001");
445 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
446 RtlInitAnsiString(&Name, "f0_001");
447 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
448 RtlInitAnsiString(&Name, "F0_OO1.");
449 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
450 RtlInitAnsiString(&Name, "f0_001.txt");
451 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
452 RtlInitAnsiString(&Name, "F0_001.txt");
453 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
454
455 RtlInitAnsiString(&Expression, "*.TTF");
456 RtlInitAnsiString(&Name, ".");
457 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
458 RtlInitAnsiString(&Name, "..");
459 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
460 RtlInitAnsiString(&Name, "SETUP.INI");
461 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
462
463 RtlInitAnsiString(&Expression, "*");
464 RtlInitAnsiString(&Name, ".");
465 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
466 RtlInitAnsiString(&Name, "..");
467 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
468 RtlInitAnsiString(&Name, "SETUP.INI");
469 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
470
471 RtlInitAnsiString(&Expression, ".*");
472 RtlInitAnsiString(&Name, "1");
473 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
474 RtlInitAnsiString(&Name, "01");
475 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
476 RtlInitAnsiString(&Name, " ");
477 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
478
479 if (!KmtIsCheckedBuild)
480 {
481 RtlInitAnsiString(&Name, "");
482 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
483 }
484 RtlInitAnsiString(&Name, ".");
485 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
486 RtlInitAnsiString(&Name, "1.txt");
487 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
488 RtlInitAnsiString(&Name, " .txt");
489 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
490 RtlInitAnsiString(&Name, ".txt");
491 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
492
493 RtlInitAnsiString(&Expression, "\"ntoskrnl.exe");
494 RtlInitAnsiString(&Name, "ntoskrnl.exe");
495 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
496 RtlInitAnsiString(&Expression, "ntoskrnl\"exe");
497 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
498 RtlInitAnsiString(&Expression, "ntoskrn\".exe");
499 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
500 RtlInitAnsiString(&Expression, "ntoskrn\"\"exe");
501 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
502 RtlInitAnsiString(&Expression, "ntoskrnl.\"exe");
503 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
504 RtlInitAnsiString(&Expression, "ntoskrnl.exe\"");
505 RtlInitAnsiString(&Name, "ntoskrnl.exe");
506 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
507 RtlInitAnsiString(&Name, "ntoskrnl.exe.");
508 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
509
510 RtlInitAnsiString(&Expression, "*.c.d");
511 RtlInitAnsiString(&Name, "a.b.c.d");
512 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
513 RtlInitAnsiString(&Expression, "*.?.c.d");
514 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
515 RtlInitAnsiString(&Expression, "*?");
516 if (!KmtIsCheckedBuild)
517 {
518 RtlInitAnsiString(&Name, "");
519 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
520 }
521 RtlInitAnsiString(&Name, "a");
522 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
523 RtlInitAnsiString(&Name, "aa");
524 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
525 RtlInitAnsiString(&Name, "aaa");
526 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
527 RtlInitAnsiString(&Expression, "?*?");
528 if (!KmtIsCheckedBuild)
529 {
530 RtlInitAnsiString(&Name, "");
531 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
532 }
533 RtlInitAnsiString(&Name, "a");
534 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
535 RtlInitAnsiString(&Name, "aa");
536 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
537 RtlInitAnsiString(&Name, "aaa");
538 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
539 RtlInitAnsiString(&Name, "aaaa");
540 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
541
542 /* Tests from #5923 */
543 RtlInitAnsiString(&Expression, "C:\\ReactOS\\**");
544 RtlInitAnsiString(&Name, "C:\\ReactOS\\dings.bmp");
545 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
546 RtlInitAnsiString(&Expression, "C:\\ReactOS\\***");
547 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
548 RtlInitAnsiString(&Expression, "C:\\Windows\\*a*");
549 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
550
551 RtlInitAnsiString(&Expression, "C:\\ReactOS\\*.bmp");
552 RtlInitAnsiString(&Name, "C:\\Windows\\explorer.exe");
553 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
554 RtlInitAnsiString(&Expression, "*.bmp;*.dib");
555 RtlInitAnsiString(&Name, "winhlp32.exe");
556 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
557
558 /* Backtracking tests */
559 RtlInitAnsiString(&Expression, "*.*.*.*");
560 RtlInitAnsiString(&Name, "127.0.0.1");
561 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
562
563 RtlInitAnsiString(&Expression, "*?*?*?*");
564 RtlInitAnsiString(&Name, "1.0.0.1");
565 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
566 RtlInitAnsiString(&Expression, "?*?*?*?");
567 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
568 RtlInitAnsiString(&Expression, "?.?.?.?");
569 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
570
571 RtlInitAnsiString(&Expression, "*a*ab*abc");
572 RtlInitAnsiString(&Name, "aabaabcdadabdabc");
573 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
574
575 /* Tests for extra wildcards */
576 RtlInitAnsiString(&Expression, "ab<exe");
577 RtlInitAnsiString(&Name, "abcd.exe");
578 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
579 RtlInitAnsiString(&Name, "ab.exe");
580 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
581 RtlInitAnsiString(&Name, "abcdexe");
582 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
583 RtlInitAnsiString(&Name, "acd.exe");
584 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
585 RtlInitAnsiString(&Expression, "a.b<exe");
586 RtlInitAnsiString(&Name, "a.bcd.exe");
587 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
588 RtlInitAnsiString(&Expression, "a<b.exe");
589 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
590 RtlInitAnsiString(&Name, "a.b.exe");
591 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
592
593 RtlInitAnsiString(&Expression, "abc.exe\"");
594 RtlInitAnsiString(&Name, "abc.exe");
595 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
596 RtlInitAnsiString(&Name, "abc.exe.");
597 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
598 RtlInitAnsiString(&Name, "abc.exe.back");
599 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
600 RtlInitAnsiString(&Name, "abc.exes");
601 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
602
603 RtlInitAnsiString(&Expression, "a>c.exe");
604 RtlInitAnsiString(&Name, "abc.exe");
605 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == TRUE, "expected TRUE, got FALSE\n");
606 RtlInitAnsiString(&Name, "ac.exe");
607 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
608 RtlInitAnsiString(&Expression, "a>>>exe");
609 RtlInitAnsiString(&Name, "abc.exe");
610 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
611 RtlInitAnsiString(&Name, "ac.exe");
612 ok(FsRtlIsDbcsInExpression(&Expression, &Name) == FALSE, "expected FALSE, got TRUE\n");
613 }
614
615 START_TEST(FsRtlExpression)
616 {
617 FsRtlIsNameInExpressionTest();
618 FsRtlIsDbcsInExpressionTest();
619 }