2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for FindFirstFile's wildcard substitution
5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
15 WIN32_FIND_DATAW FindData
;
19 PCWSTR ExpectedExpression
;
22 { L
"Hello", L
"Hello" },
30 { L
"a*a*a", L
"a*a*a" },
33 { L
"a*.*", L
"a<\"*" },
34 { L
"*.*a", L
"<\"*a" },
35 { L
"a*.*a", L
"a<\"*a" },
36 { L
"*.**.*", L
"<\"*<\"*" },
37 { L
"*.*a*.*", L
"<\"*a<\"*" },
38 { L
"a*.*a*.*a", L
"a<\"*a<\"*a" },
43 { L
"a.*a", L
"a\"*a" },
44 { L
".*.*", L
"\"<\"*" },
45 { L
".*a.*", L
"\"*a\"*" },
46 { L
"a.*a.*a", L
"a\"*a\"*a" },
53 { L
"*.a*.", L
"<.a<" },
54 { L
"a*.a*.a", L
"a<.a<.a" },
62 { L
"a?a?a", L
"a>a>a" },
65 { L
"a?.?", L
"a>\">" },
66 { L
"?.?a", L
">\">a" },
67 { L
"a?.?a", L
"a>\">a" },
68 { L
"?.??.?", L
">\">>\">" },
69 { L
"?.?a?.?", L
">\">a>\">" },
70 { L
"a?.?a?.?a", L
"a>\">a>\">a" },
75 { L
"a.?a", L
"a\">a" },
76 { L
".?.?", L
"\">\">" },
77 { L
".?a.?", L
"\">a\">" },
78 { L
"a.?a.?a", L
"a\">a\">a" },
85 { L
"?.a?.", L
">.a>" },
86 { L
"a?.a?.a", L
"a>.a>.a" },
90 { L
"f*.*", L
"f<\"*" },
91 { L
"f*.f*", L
"f<.f*" },
92 { L
"f*f.*", L
"f*f\"*" },
93 { L
"f*.*f", L
"f<\"*f" },
95 /* TODO: add more. Have fun */
97 const INT TestCount
= sizeof(Tests
) / sizeof(Tests
[0]);
99 WCHAR ExpressionBuffer
[MAX_PATH
];
101 KmtLoadDriver(L
"FindFile", FALSE
);
104 for (i
= 0; i
< TestCount
; i
++)
106 trace("[%d] '%ls', '%ls'\n", i
, Tests
[i
].Expression
, Tests
[i
].ExpectedExpression
);
107 KmtSendWStringToDriver(IOCTL_EXPECT
, Tests
[i
].ExpectedExpression
);
108 wcscpy(ExpressionBuffer
, L
"\\\\.\\Global\\GLOBALROOT\\Device\\Kmtest-FindFile\\");
109 wcscat(ExpressionBuffer
, Tests
[i
].Expression
);
110 FindHandle
= FindFirstFileW(ExpressionBuffer
, &FindData
);
111 ok(FindHandle
!= NULL
&& FindHandle
!= INVALID_HANDLE_VALUE
, "Handle: %p, error=%lu\n", (PVOID
)FindHandle
, GetLastError());
112 if (FindHandle
!= INVALID_HANDLE_VALUE
)
113 FindClose(FindHandle
);