Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122/* * PROJECT: ReactOS kernel-mode tests * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: Test for FindFirstFile's wildcard substitution * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> */
#include <kmt_test.h>
#include "kernel32_test.h"
START_TEST(FindFile){ HANDLE FindHandle; WIN32_FIND_DATAW FindData; struct { PCWSTR Expression; PCWSTR ExpectedExpression; } Tests[] = { { L"Hello", L"Hello" },
{ L"*", L"*" }, { L"a*", L"a*" }, { L"*a", L"*a" }, { L"a*a", L"a*a" }, { L"**", L"**" }, { L"*a*", L"*a*" }, { L"a*a*a", L"a*a*a" },
{ L"*.*", L"*" }, { L"a*.*", L"a<\"*" }, { L"*.*a", L"<\"*a" }, { L"a*.*a", L"a<\"*a" }, { L"*.**.*", L"<\"*<\"*" }, { L"*.*a*.*", L"<\"*a<\"*" }, { L"a*.*a*.*a", L"a<\"*a<\"*a" },
{ L".*", L"\"*" }, { L"a.*", L"a\"*" }, { L".*a", L"\"*a" }, { L"a.*a", L"a\"*a" }, { L".*.*", L"\"<\"*" }, { L".*a.*", L"\"*a\"*" }, { L"a.*a.*a", L"a\"*a\"*a" },
{ L"*.", L"<" }, { L"a*.", L"a<" }, { L"*.a", L"<.a" }, { L"a*.a", L"a<.a" }, { L"*.*.", L"*" }, { L"*.a*.", L"<.a<" }, { L"a*.a*.a", L"a<.a<.a" },
{ L"?", L">" }, { L"a?", L"a>" }, { L"?a", L">a" }, { L"a?a", L"a>a" }, { L"??", L">>" }, { L"?a?", L">a>" }, { L"a?a?a", L"a>a>a" },
{ L"?.?", L">\">" }, { L"a?.?", L"a>\">" }, { L"?.?a", L">\">a" }, { L"a?.?a", L"a>\">a" }, { L"?.??.?", L">\">>\">" }, { L"?.?a?.?", L">\">a>\">" }, { L"a?.?a?.?a", L"a>\">a>\">a" },
{ L".?", L"\">" }, { L"a.?", L"a\">" }, { L".?a", L"\">a" }, { L"a.?a", L"a\">a" }, { L".?.?", L"\">\">" }, { L".?a.?", L"\">a\">" }, { L"a.?a.?a", L"a\">a\">a" },
{ L"?.", L">" }, { L"a?.", L"a>" }, { L"?.a", L">.a" }, { L"a?.a", L"a>.a" }, { L"?.?.", L">\">" }, { L"?.a?.", L">.a>" }, { L"a?.a?.a", L"a>.a>.a" },
{ L"f*.", L"f<" }, { L"f.*", L"f\"*" }, { L"f*.*", L"f<\"*" }, { L"f*.f*", L"f<.f*" }, { L"f*f.*", L"f*f\"*" }, { L"f*.*f", L"f<\"*f" },
/* TODO: add more. Have fun */ }; const INT TestCount = sizeof(Tests) / sizeof(Tests[0]); INT i; WCHAR ExpressionBuffer[MAX_PATH]; DWORD Error;
Error = KmtLoadAndOpenDriver(L"kernel32", FALSE); ok_eq_int(Error, ERROR_SUCCESS); if (Error) return;
for (i = 0; i < TestCount; i++) { trace("[%d] '%ls', '%ls'\n", i, Tests[i].Expression, Tests[i].ExpectedExpression); KmtSendWStringToDriver(IOCTL_EXPECT_EXPRESSION, Tests[i].ExpectedExpression); wcscpy(ExpressionBuffer, L"\\\\.\\Global\\GLOBALROOT\\Device\\Kmtest-kernel32\\"); wcscat(ExpressionBuffer, Tests[i].Expression); FindHandle = FindFirstFileW(ExpressionBuffer, &FindData); ok(FindHandle != NULL && FindHandle != INVALID_HANDLE_VALUE, "Handle: %p, error=%lu\n", (PVOID)FindHandle, GetLastError()); if (FindHandle != INVALID_HANDLE_VALUE) FindClose(FindHandle); }
KmtCloseDriver(); KmtUnloadDriver();}