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>
10 #define WIN32_NO_STATUS
12 #include <ndk/rtltypes.h>
16 SetUnrelatedDirectory(VOID
)
18 WCHAR Buffer
[MAX_PATH
];
21 GetWindowsDirectoryW(Buffer
, sizeof(Buffer
) / sizeof(WCHAR
));
22 Ret
= SetCurrentDirectoryW(Buffer
);
23 ok(Ret
== TRUE
, "SetCurrentDirectoryW failed\n");
28 TestSetCurrentDirectoryA(VOID
)
31 CHAR Buffer
[MAX_PATH
];
34 SetUnrelatedDirectory();
36 Ret
= SetCurrentDirectoryA("C:\\");
37 ok(Ret
== TRUE
, "SetCurrentDirectoryA failed\n");
38 Length
= GetCurrentDirectoryA(sizeof(Buffer
), Buffer
);
39 ok(Length
== 3, "Length = %lu\n", Length
);
40 ok(!strcmp(Buffer
, "C:\\"), "Current directory is %s\n", Buffer
);
42 /* Same directory - succeeds */
43 Ret
= SetCurrentDirectoryA("C:\\");
44 ok(Ret
== TRUE
, "SetCurrentDirectoryA failed\n");
45 Length
= GetCurrentDirectoryA(sizeof(Buffer
), Buffer
);
46 ok(Length
== 3, "Length = %lu\n", Length
);
47 ok(!strcmp(Buffer
, "C:\\"), "Current directory is %s\n", Buffer
);
49 /* Same directory, lowercase - succeeds and does not change case */
50 Ret
= SetCurrentDirectoryA("c:\\");
51 ok(Ret
== TRUE
, "SetCurrentDirectoryA failed\n");
52 Length
= GetCurrentDirectoryA(sizeof(Buffer
), Buffer
);
53 ok(Length
== 3, "Length = %lu\n", Length
);
54 ok(!strcmp(Buffer
, "C:\\"), "Current directory is %s\n", Buffer
);
56 SetUnrelatedDirectory();
58 /* Now this one does change case */
59 Ret
= SetCurrentDirectoryA("c:\\");
60 ok(Ret
== TRUE
, "SetCurrentDirectoryA failed\n");
61 Length
= GetCurrentDirectoryA(sizeof(Buffer
), Buffer
);
62 ok(Length
== 3, "Length = %lu\n", Length
);
63 ok(!strcmp(Buffer
, "c:\\"), "Current directory is %s\n", Buffer
);
68 TestSetCurrentDirectoryW(VOID
)
71 WCHAR Buffer
[MAX_PATH
];
74 SetUnrelatedDirectory();
76 Ret
= SetCurrentDirectoryW(L
"C:\\");
77 ok(Ret
== TRUE
, "SetCurrentDirectoryW failed\n");
78 Length
= GetCurrentDirectoryW(sizeof(Buffer
) / sizeof(WCHAR
), Buffer
);
79 ok(Length
== 3, "Length = %lu\n", Length
);
80 ok(!wcscmp(Buffer
, L
"C:\\"), "Current directory is %ls\n", Buffer
);
82 /* Same directory - succeeds */
83 Ret
= SetCurrentDirectoryW(L
"C:\\");
84 ok(Ret
== TRUE
, "SetCurrentDirectoryW failed\n");
85 Length
= GetCurrentDirectoryW(sizeof(Buffer
) / sizeof(WCHAR
), Buffer
);
86 ok(Length
== 3, "Length = %lu\n", Length
);
87 ok(!wcscmp(Buffer
, L
"C:\\"), "Current directory is %ls\n", Buffer
);
89 /* Same directory, lowercase - succeeds and does not change case */
90 Ret
= SetCurrentDirectoryW(L
"c:\\");
91 ok(Ret
== TRUE
, "SetCurrentDirectoryW failed\n");
92 Length
= GetCurrentDirectoryW(sizeof(Buffer
) / sizeof(WCHAR
), Buffer
);
93 ok(Length
== 3, "Length = %lu\n", Length
);
94 ok(!wcscmp(Buffer
, L
"C:\\"), "Current directory is %ls\n", Buffer
);
96 SetUnrelatedDirectory();
98 /* Now this one does change case */
99 Ret
= SetCurrentDirectoryW(L
"c:\\");
100 ok(Ret
== TRUE
, "SetCurrentDirectoryW failed\n");
101 Length
= GetCurrentDirectoryW(sizeof(Buffer
) / sizeof(WCHAR
), Buffer
);
102 ok(Length
== 3, "Length = %lu\n", Length
);
103 ok(!wcscmp(Buffer
, L
"c:\\"), "Current directory is %ls\n", Buffer
);
106 START_TEST(SetCurrentDirectory
)
108 TestSetCurrentDirectoryA();
109 TestSetCurrentDirectoryW();