1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: Test for SetCurrentDirectory 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 */ 7 8 #include "precomp.h" 9 10 static 11 VOID 12 SetUnrelatedDirectory(VOID) 13 { 14 WCHAR Buffer[MAX_PATH]; 15 BOOL Ret; 16 17 GetWindowsDirectoryW(Buffer, sizeof(Buffer) / sizeof(WCHAR)); 18 Ret = SetCurrentDirectoryW(Buffer); 19 ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); 20 } 21 22 static 23 VOID 24 TestSetCurrentDirectoryA(VOID) 25 { 26 BOOL Ret; 27 CHAR Buffer[MAX_PATH]; 28 DWORD Length; 29 30 SetUnrelatedDirectory(); 31 32 Ret = SetCurrentDirectoryA("C:\\"); 33 ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); 34 Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); 35 ok(Length == 3, "Length = %lu\n", Length); 36 ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); 37 38 /* Same directory - succeeds */ 39 Ret = SetCurrentDirectoryA("C:\\"); 40 ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); 41 Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); 42 ok(Length == 3, "Length = %lu\n", Length); 43 ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); 44 45 /* Same directory, lowercase - succeeds and does not change case */ 46 Ret = SetCurrentDirectoryA("c:\\"); 47 ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); 48 Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); 49 ok(Length == 3, "Length = %lu\n", Length); 50 ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); 51 52 SetUnrelatedDirectory(); 53 54 /* Now this one does change case */ 55 Ret = SetCurrentDirectoryA("c:\\"); 56 ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); 57 Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); 58 ok(Length == 3, "Length = %lu\n", Length); 59 ok(!strcmp(Buffer, "c:\\"), "Current directory is %s\n", Buffer); 60 } 61 62 static 63 VOID 64 TestSetCurrentDirectoryW(VOID) 65 { 66 BOOL Ret; 67 WCHAR Buffer[MAX_PATH]; 68 DWORD Length; 69 70 SetUnrelatedDirectory(); 71 72 Ret = SetCurrentDirectoryW(L"C:\\"); 73 ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); 74 Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); 75 ok(Length == 3, "Length = %lu\n", Length); 76 ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); 77 78 /* Same directory - succeeds */ 79 Ret = SetCurrentDirectoryW(L"C:\\"); 80 ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); 81 Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); 82 ok(Length == 3, "Length = %lu\n", Length); 83 ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); 84 85 /* Same directory, lowercase - succeeds and does not change case */ 86 Ret = SetCurrentDirectoryW(L"c:\\"); 87 ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); 88 Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); 89 ok(Length == 3, "Length = %lu\n", Length); 90 ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); 91 92 SetUnrelatedDirectory(); 93 94 /* Now this one does change case */ 95 Ret = SetCurrentDirectoryW(L"c:\\"); 96 ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); 97 Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); 98 ok(Length == 3, "Length = %lu\n", Length); 99 ok(!wcscmp(Buffer, L"c:\\"), "Current directory is %ls\n", Buffer); 100 } 101 102 START_TEST(SetCurrentDirectory) 103 { 104 TestSetCurrentDirectoryA(); 105 TestSetCurrentDirectoryW(); 106 } 107