Author: hbelusca Date: Sun Jun 2 17:01:22 2013 New Revision: 59146
URL: http://svn.reactos.org/svn/reactos?rev=59146&view=rev Log: [APITESTS-KERNEL32] Commit my FindFiles test. ROSTESTS-84 #resolve #comment Committed in revision 59146.
Added: trunk/rostests/apitests/kernel32/FindFiles.c (with props) Modified: trunk/rostests/apitests/kernel32/CMakeLists.txt trunk/rostests/apitests/kernel32/testlist.c
Modified: trunk/rostests/apitests/kernel32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/kernel32/CMakeLis... ============================================================================== --- trunk/rostests/apitests/kernel32/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/apitests/kernel32/CMakeLists.txt [iso-8859-1] Sun Jun 2 17:01:22 2013 @@ -1,5 +1,6 @@
list(APPEND SOURCE + FindFiles.c GetCurrentDirectory.c GetDriveType.c GetModuleFileName.c
Added: trunk/rostests/apitests/kernel32/FindFiles.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/kernel32/FindFile... ============================================================================== --- trunk/rostests/apitests/kernel32/FindFiles.c (added) +++ trunk/rostests/apitests/kernel32/FindFiles.c [iso-8859-1] Sun Jun 2 17:01:22 2013 @@ -0,0 +1,528 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: GPLv2+ - See COPYING in the top level directory + * PURPOSE: Tests for the Find*File*A/W APIs. + * PROGRAMMER: Hermès BÃLUSCA - MAÃTO + */ + +#include <wine/test.h> +#include <windows.h> + +/* + * NOTE: This test supposes the following requirements: + * - There is a disk attached to the letter "C:" + * - There is a Windows-like system installed in "C:<installation_directory>" + * which contains a sub-directory "system32" + * - There is no sub-directory called "foobar" in "C:". + * + * If one of these requirements is not fulfilled, one or more tests may fail. + */ + +static CHAR OSDirA[MAX_PATH]; // OS directory +static WCHAR OSDirW[MAX_PATH]; +static CHAR baseA[MAX_PATH]; // Current directory +static WCHAR baseW[MAX_PATH]; +static CHAR selfnameA[MAX_PATH]; // Path to this executable +static WCHAR selfnameW[MAX_PATH]; +static LPSTR exenameA; // Executable's name +static LPWSTR exenameW; +static INT myARGC; +static LPSTR* myARGV; + + +/* + * Fixes definition of Wine's ok_err + */ +#ifdef ok_err +#undef ok_err +#endif + +#define ok_err(error) \ + ok(GetLastError() == (error), "Wrong last error. Expected %lu, got %lu\n", (DWORD)(error), GetLastError()) + + +/* + * Types of tests. Define them as macros so that calling them + * into the code reports the actual line where they were called. + */ +#define testType1_A(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename) \ +do { \ + ZeroMemory(&fd, sizeof(fd)); \ + SetLastError((dwInitialError)); \ + h = FindFirstFileA((lpFileName), &fd); \ + ok(h == (hExpectedHandleValue), "FindFirstFileA returned 0x%p, expected 0x%p\n", h, (hExpectedHandleValue)); \ + ok_err(dwExpectedError); \ + if (bExpectedNullFilename) \ + ok(fd.cFileName[0] == 0, "fd.cFileName != ""\n"); \ + else \ + ok(fd.cFileName[0] != 0, "fd.cFileName == ""\n"); \ + FindClose(h); \ +} while (0) + +#define testType1_W(lpFileName, dwInitialError, hExpectedHandleValue, dwExpectedError, bExpectedNullFilename) \ +do { \ + ZeroMemory(&fd, sizeof(fd)); \ + SetLastError((dwInitialError)); \ + h = FindFirstFileW((lpFileName), &fd); \ + ok(h == (hExpectedHandleValue), "FindFirstFileW returned 0x%p, expected 0x%p\n", h, (hExpectedHandleValue)); \ + ok_err(dwExpectedError); \ + if (bExpectedNullFilename) \ + ok(fd.cFileName[0] == 0, "fd.cFileName != ""\n"); \ + else \ + ok(fd.cFileName[0] != 0, "fd.cFileName == ""\n"); \ + FindClose(h); \ +} while (0) + +#define testType2_A(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \ +do { \ + ZeroMemory(&fd, sizeof(fd)); \ + SetLastError((dwInitialError)); \ + h = FindFirstFileA((lpFileName), &fd); \ + ok(h != (hUnexpectedHandleValue), "FindFirstFileA returned 0x%p\n", h); \ + ok_err(dwExpectedError); \ + ok(fd.cFileName[0] != 0, "fd.cFileName == ""\n"); \ + FindClose(h); \ +} while (0) + +#define testType2_W(lpFileName, dwInitialError, hUnexpectedHandleValue, dwExpectedError) \ +do { \ + ZeroMemory(&fd, sizeof(fd)); \ + SetLastError((dwInitialError)); \ + h = FindFirstFileW((lpFileName), &fd); \ + ok(h != (hUnexpectedHandleValue), "FindFirstFileW returned 0x%p\n", h); \ + ok_err(dwExpectedError); \ + ok(fd.cFileName[0] != 0, "fd.cFileName == ""\n"); \ + FindClose(h); \ +} while (0) + + +static void Test_FindFirstFileA(void) +{ + CHAR CurrentDirectory[MAX_PATH]; + CHAR Buffer[MAX_PATH]; + WIN32_FIND_DATAA fd; + HANDLE h; + + /* Save the current directory */ + GetCurrentDirectoryA(sizeof(CurrentDirectory) / sizeof(CHAR), CurrentDirectory); + +/*** Tests for the root directory - root directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryA("C:\"); + + testType1_A("C:", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + testType1_A("C:\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("C:\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A("C:\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A("\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_INVALID_NAME, TRUE); + testType2_A("\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryA(CurrentDirectory); +/*****************************************************/ + +/*** Tests for the root directory - long directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryA(OSDirA); /* We expect here that OSDir is of the form: C:\OSDir */ + + testType2_A("C:", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A("C:\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("C:\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A("C:\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A("\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_INVALID_NAME, TRUE); + testType2_A("\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryA(CurrentDirectory); +/*****************************************************/ + +/*** Relative paths ***/ + /* + * NOTE: This test does not give the same results if you launch the app + * from a root drive or from a long-form directory (of the form C:\dir). + */ + // testType2_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + // testType1_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); +/**********************/ + +/*** Relative paths - root directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryA("C:\"); + + testType1_A(".", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A(".\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A(".\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A(".\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("..\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("..\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A("..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryA(CurrentDirectory); +/***************************************/ + +/*** Relative paths - long directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryA(OSDirA); /* We expect here that OSDir is of the form: C:\OSDir */ + + testType2_A(".", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A(".\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A(".\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A(".\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_A("..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + testType1_A("..\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("..\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_A("..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryA(CurrentDirectory); +/****************************************/ + +/*** Unexisting path ***/ + testType1_A("C:\foobar", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_A("C:\foobar\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\system32\..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + /* Possibly a DOS device */ + testType1_A("C:\foobar\nul", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\nul\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\nul\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\nul\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + testType1_A("C:\foobar\toto", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\toto\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\toto\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_A("C:\foobar\toto\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, "C:\foobar\"); + strcat(Buffer, exenameA); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, "C:\foobar\.\"); + strcat(Buffer, exenameA); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); +/***********************/ + +/*** Existing path ***/ + strcpy(Buffer, OSDirA); + testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\*"); + testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\.\*"); + testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\system32\..\*"); + testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Possibly a DOS device */ + strcpy(Buffer, OSDirA); + strcat(Buffer, "\nul"); + testType1_A(Buffer, 0xdeadbeef, (HANDLE)0x00000001, 0xdeadbeef, FALSE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\nul\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\nul\\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\nul\*"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\toto"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\toto\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\toto\\"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + strcpy(Buffer, OSDirA); + strcat(Buffer, "\toto\*"); + testType1_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + // strcpy(Buffer, baseA); + // strcat(Buffer, "\"); + // strcat(Buffer, exenameA); + // testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + // strcpy(Buffer, baseA); + // strcat(Buffer, "\.\"); + // strcat(Buffer, exenameA); + // testType2_A(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); +/*********************/ + + return; +} + +static void Test_FindFirstFileW(void) +{ + WCHAR CurrentDirectory[MAX_PATH]; + WCHAR Buffer[MAX_PATH]; + WIN32_FIND_DATAW fd; + HANDLE h; + + /* Save the current directory */ + GetCurrentDirectoryW(sizeof(CurrentDirectory) / sizeof(WCHAR), CurrentDirectory); + +/*** Tests for the root directory - root directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryW(L"C:\"); + + testType1_W(L"C:", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + testType1_W(L"C:\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"C:\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L"C:\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L"\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_INVALID_NAME, TRUE); + testType2_W(L"\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryW(CurrentDirectory); +/*****************************************************/ + +/*** Tests for the root directory - long directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryW(OSDirW); /* We expect here that OSDir is of the form: C:\OSDir */ + + testType2_W(L"C:", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L"C:\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"C:\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L"C:\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L"\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_INVALID_NAME, TRUE); + testType2_W(L"\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryW(CurrentDirectory); +/*****************************************************/ + +/*** Relative paths ***/ + /* + * NOTE: This test does not give the same results if you launch the app + * from a root drive or from a long-form directory (of the form C:\dir). + */ + // testType2_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + // testType1_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); +/**********************/ + +/*** Relative paths - root directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryW(L"C:\"); + + testType1_W(L".", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L".\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L".\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L".\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"..\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"..\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L"..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryW(CurrentDirectory); +/***************************************/ + +/*** Relative paths - long directory ***/ + /* Modify the current directory */ + SetCurrentDirectoryW(OSDirW); /* We expect here that OSDir is of the form: C:\OSDir */ + + testType2_W(L".", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L".\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L".\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L".\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + testType1_W(L"..", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + testType1_W(L"..\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"..\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType2_W(L"..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Restore the old current directory */ + SetCurrentDirectoryW(CurrentDirectory); +/****************************************/ + +/*** Unexisting path ***/ + testType1_W(L"C:\foobar", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\system32\..\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + /* Possibly a DOS device */ + testType1_W(L"C:\foobar\nul", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\nul\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\nul\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\nul\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + testType1_W(L"C:\foobar\toto", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\toto\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\toto\\", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + testType1_W(L"C:\foobar\toto\*", 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, L"C:\foobar\"); + wcscat(Buffer, exenameW); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, L"C:\foobar\.\"); + wcscat(Buffer, exenameW); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); +/***********************/ + +/*** Existing path ***/ + wcscpy(Buffer, OSDirW); + testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\*"); + testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\.\*"); + testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\system32\..\*"); + testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + /* Possibly a DOS device */ + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\nul"); + testType1_W(Buffer, 0xdeadbeef, (HANDLE)0x00000001, 0xdeadbeef, FALSE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\nul\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\nul\\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\nul\*"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\toto"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_FILE_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\toto\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\toto\\"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + wcscpy(Buffer, OSDirW); + wcscat(Buffer, L"\toto\*"); + testType1_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, ERROR_PATH_NOT_FOUND, TRUE); + + // wcscpy(Buffer, baseW); + // wcscat(Buffer, L"\"); + // wcscat(Buffer, exenameW); + // testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); + + // wcscpy(Buffer, baseW); + // wcscat(Buffer, L"\.\"); + // wcscat(Buffer, exenameW); + // testType2_W(Buffer, 0xdeadbeef, INVALID_HANDLE_VALUE, 0xdeadbeef); +/*********************/ + + return; +} + + +static int init(void) +{ + LPSTR p; + size_t i; + + myARGC = winetest_get_mainargs(&myARGV); + if (!GetCurrentDirectoryA(sizeof(baseA)/sizeof(baseA[0]), baseA)) return 0; + strcpy(selfnameA, myARGV[0]); + + /* Strip the path of selfname */ + if ((p = strrchr(selfnameA, '\')) != NULL) + exenameA = p + 1; + else + exenameA = selfnameA; + + if ((p = strrchr(exenameA, '/')) != NULL) + exenameA = p + 1; + + if (!GetWindowsDirectoryA(OSDirA, sizeof(OSDirA)/sizeof(OSDirA[0]))) return 0; + + /* Quick-and-dirty conversion ANSI --> UNICODE without the Win32 APIs */ + for (i = 0 ; i <= strlen(baseA) ; ++i) + { + baseW[i] = (WCHAR)baseA[i]; + } + for (i = 0 ; i <= strlen(selfnameA) ; ++i) + { + selfnameW[i] = (WCHAR)selfnameA[i]; + } + exenameW = selfnameW + (exenameA - selfnameA); + for (i = 0 ; i <= strlen(OSDirA) ; ++i) + { + OSDirW[i] = (WCHAR)OSDirA[i]; + } + + return 1; +} + +START_TEST(FindFiles) +{ + int b = init(); + ok(b, "Basic init of FindFiles test\n"); + if (!b) return; + + Test_FindFirstFileA(); + Test_FindFirstFileW(); +}
Propchange: trunk/rostests/apitests/kernel32/FindFiles.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/rostests/apitests/kernel32/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/kernel32/testlist... ============================================================================== --- trunk/rostests/apitests/kernel32/testlist.c [iso-8859-1] (original) +++ trunk/rostests/apitests/kernel32/testlist.c [iso-8859-1] Sun Jun 2 17:01:22 2013 @@ -3,6 +3,7 @@ #define STANDALONE #include <wine/test.h>
+extern void func_FindFiles(void); extern void func_GetCurrentDirectory(void); extern void func_GetDriveType(void); extern void func_GetModuleFileName(void); @@ -13,6 +14,7 @@
const struct test winetest_testlist[] = { + { "FindFiles", func_FindFiles }, { "GetCurrentDirectory", func_GetCurrentDirectory }, { "GetDriveType", func_GetDriveType }, { "GetModuleFileName", func_GetModuleFileName },