/* * PROJECT: ReactOS api tests * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: Test for SetCurrentDirectory * PROGRAMMER: Thomas Faber */ #include "precomp.h" static VOID SetUnrelatedDirectory(VOID) { WCHAR Buffer[MAX_PATH]; BOOL Ret; GetWindowsDirectoryW(Buffer, sizeof(Buffer) / sizeof(WCHAR)); Ret = SetCurrentDirectoryW(Buffer); ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); } static VOID TestSetCurrentDirectoryA(VOID) { BOOL Ret; CHAR Buffer[MAX_PATH]; DWORD Length; SetUnrelatedDirectory(); Ret = SetCurrentDirectoryA("C:\\"); ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); /* Same directory - succeeds */ Ret = SetCurrentDirectoryA("C:\\"); ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); /* Same directory, lowercase - succeeds and does not change case */ Ret = SetCurrentDirectoryA("c:\\"); ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!strcmp(Buffer, "C:\\"), "Current directory is %s\n", Buffer); SetUnrelatedDirectory(); /* Now this one does change case */ Ret = SetCurrentDirectoryA("c:\\"); ok(Ret == TRUE, "SetCurrentDirectoryA failed\n"); Length = GetCurrentDirectoryA(sizeof(Buffer), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!strcmp(Buffer, "c:\\"), "Current directory is %s\n", Buffer); } static VOID TestSetCurrentDirectoryW(VOID) { BOOL Ret; WCHAR Buffer[MAX_PATH]; DWORD Length; SetUnrelatedDirectory(); Ret = SetCurrentDirectoryW(L"C:\\"); ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); /* Same directory - succeeds */ Ret = SetCurrentDirectoryW(L"C:\\"); ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); /* Same directory, lowercase - succeeds and does not change case */ Ret = SetCurrentDirectoryW(L"c:\\"); ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!wcscmp(Buffer, L"C:\\"), "Current directory is %ls\n", Buffer); SetUnrelatedDirectory(); /* Now this one does change case */ Ret = SetCurrentDirectoryW(L"c:\\"); ok(Ret == TRUE, "SetCurrentDirectoryW failed\n"); Length = GetCurrentDirectoryW(sizeof(Buffer) / sizeof(WCHAR), Buffer); ok(Length == 3, "Length = %lu\n", Length); ok(!wcscmp(Buffer, L"c:\\"), "Current directory is %ls\n", Buffer); } START_TEST(SetCurrentDirectory) { TestSetCurrentDirectoryA(); TestSetCurrentDirectoryW(); }