Author: pschweitzer Date: Sun Apr 19 19:36:42 2015 New Revision: 67306
URL: http://svn.reactos.org/svn/reactos?rev=67306&view=rev Log: [KERNEL32_APITEST] Complete a bit more the PrivMoveFileIdentityW tests
Modified: trunk/rostests/apitests/kernel32/PrivMoveFileIdentityW.c
Modified: trunk/rostests/apitests/kernel32/PrivMoveFileIdentityW.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/kernel32/PrivMove... ============================================================================== --- trunk/rostests/apitests/kernel32/PrivMoveFileIdentityW.c [iso-8859-1] (original) +++ trunk/rostests/apitests/kernel32/PrivMoveFileIdentityW.c [iso-8859-1] Sun Apr 19 19:36:42 2015 @@ -13,6 +13,8 @@ #include <ndk/rtltypes.h>
static const WCHAR FileName[] = L"TestFile.xxx"; +static const CHAR FileNameA[] = "TestFile.xxx"; +static const WCHAR FileName2[] = L"TestFile2.xxx";
static BOOL (WINAPI * pPrivMoveFileIdentityW)(LPCWSTR, LPCWSTR, DWORD);
@@ -59,10 +61,11 @@ FILE_STANDARD_INFORMATION FileStandardInfo; LARGE_INTEGER CreationTime, EndOfFile; HANDLE hDest; - NTSTATUS Status; WCHAR Self[MAX_PATH]; + OFSTRUCT ReOpen;
DeleteFileW(FileName); + DeleteFileW(FileName2);
if (GetModuleFileNameW(NULL, Self, MAX_PATH) == 0) { @@ -96,8 +99,14 @@ ok(QueryFileInfo(FileName, &FileBasicInfo, &FileStandardInfo) == TRUE, "QueryFileInfo returned FALSE\n"); ok(FileBasicInfo.CreationTime.QuadPart != CreationTime.QuadPart, "Equal creation times\n"); ok(FileStandardInfo.EndOfFile.QuadPart == 0LL, "File wasn't created empty: %I64d\n", FileStandardInfo.EndOfFile.QuadPart); - Status = (NTSTATUS)pPrivMoveFileIdentityW(Self, FileName, 0); - ok(Status == STATUS_SUCCESS, "PrivMoveFileIdentityW failed with %lx\n", Status); + SetLastError(0xdeadbeef); + ok(pPrivMoveFileIdentityW(Self, FileName, 0) == FALSE, "PrivMoveFileIdentityW succeed\n"); + ok(GetLastError() == ERROR_SHARING_VIOLATION, "Last error: %lx\n", GetLastError()); + ok(QueryFileInfo(FileName, &FileBasicInfo, &FileStandardInfo) == TRUE, "QueryFileInfo returned FALSE\n"); + ok(FileBasicInfo.CreationTime.QuadPart != CreationTime.QuadPart, "Equal creation times\n"); + ok(FileStandardInfo.EndOfFile.QuadPart == 0LL, "File wasn't created empty: %I64d\n", FileStandardInfo.EndOfFile.QuadPart); + SetLastError(0xdeadbeef); + ok(pPrivMoveFileIdentityW(Self, FileName, 2) == TRUE, "PrivMoveFileIdentityW failed with %lx\n", GetLastError()); ok(QueryFileInfo(FileName, &FileBasicInfo, &FileStandardInfo) == TRUE, "QueryFileInfo returned FALSE\n"); ok(FileBasicInfo.CreationTime.QuadPart == CreationTime.QuadPart, "Creation time didn't change\n"); ok(FileStandardInfo.EndOfFile.QuadPart == 0LL, "File not empty anymore: %I64d\n", FileStandardInfo.EndOfFile.QuadPart); @@ -105,6 +114,27 @@ ok(FileBasicInfo.CreationTime.QuadPart == CreationTime.QuadPart, "Creation time changed\n"); ok(FileStandardInfo.EndOfFile.QuadPart == EndOfFile.QuadPart, "File size changed: %I64d\n", FileStandardInfo.EndOfFile.QuadPart);
+ hDest = CreateFileW(FileName2, GENERIC_WRITE | SYNCHRONIZE, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_SYNCHRONOUS_IO_NONALERT, + NULL); + if (hDest == INVALID_HANDLE_VALUE) + { + win_skip("Failed creating new\n"); + return; + } + + CloseHandle(hDest); + + ok(QueryFileInfo(FileName2, &FileBasicInfo, &FileStandardInfo) == TRUE, "QueryFileInfo returned FALSE\n"); + ok(FileBasicInfo.CreationTime.QuadPart != CreationTime.QuadPart, "Equal creation times\n"); + SetLastError(0xdeadbeef); + ok(pPrivMoveFileIdentityW(FileName, FileName2, 3) == TRUE, "PrivMoveFileIdentityW failed with %lx\n", GetLastError()); + ok(QueryFileInfo(FileName2, &FileBasicInfo, &FileStandardInfo) == TRUE, "QueryFileInfo returned FALSE\n"); + ok(FileBasicInfo.CreationTime.QuadPart == CreationTime.QuadPart, "Creation time didn't change\n"); + ok(OpenFile(FileNameA, &ReOpen, OF_EXIST) == HFILE_ERROR, "Source file still exists\n"); + + DeleteFileW(FileName2); DeleteFileW(FileName); }