1 #include "precomp.h"
2
3 #define IS_DRIVE_TYPE_VALID(type) ((type) != DRIVE_UNKNOWN && (type) != DRIVE_NO_ROOT_DIR)
4
START_TEST(GetDriveType)5 START_TEST(GetDriveType)
6 {
7 UINT Type, Type2, i;
8 WCHAR Path[MAX_PATH];
9
10 /* Note: Successful calls can set last error to at least ERROR_NOT_A_REPARSE_POINT, we don't test it here */
11 SetLastError(0xdeadbeaf);
12
13 Type = GetDriveTypeW(L"");
14 ok(Type == DRIVE_NO_ROOT_DIR, "Expected DRIVE_NO_ROOT_DIR, got %u\n", Type);
15
16 Type = GetDriveTypeW(L"\nC:\\");
17 ok(Type == DRIVE_NO_ROOT_DIR, "Expected DRIVE_NO_ROOT_DIR, got %u\n", Type);
18
19 Type = GetDriveTypeW(L"Q:\\");
20 ok(Type == DRIVE_NO_ROOT_DIR, "Expected DRIVE_NO_ROOT_DIR, got %u\n", Type);
21
22 ok(GetLastError() == 0xdeadbeaf, "Expected no errors, got %lu\n", GetLastError());
23
24 /* Drive root is accepted without ending slash */
25 Type = GetDriveTypeW(L"C:");
26 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
27
28 Type = GetDriveTypeW(L"C:\\");
29 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
30
31 Type = GetDriveTypeW(NULL);
32 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
33
34 i = GetCurrentDirectoryW(sizeof(Path)/sizeof(Path[0]), Path);
35 if (i)
36 {
37 /* No trailing backslash returned unless we're at the drive root */
38 if (Path[i - 1] != L'\\')
39 {
40 SetLastError(0xdeadbeaf);
41 Type2 = GetDriveTypeW(Path);
42 ok(Type2 == DRIVE_NO_ROOT_DIR, "Expected DRIVE_NO_ROOT_DIR, got %u\n", Type2);
43 ok(GetLastError() == 0xdeadbeaf, "Expected no errors, got %lu\n", GetLastError());
44
45 StringCchCopyW(Path + i, MAX_PATH - i, L"\\");
46 }
47 Type2 = GetDriveTypeW(Path);
48 ok(Type == Type2, "Types are not equal: %u != %u\n", Type, Type2);
49 }
50
51 i = GetSystemDirectoryW(Path, sizeof(Path)/sizeof(Path[0]));
52 if (i)
53 {
54 /* Note: there is no backslash at the end of Path */
55 SetLastError(0xdeadbeaf);
56 Type = GetDriveTypeW(Path);
57 ok(Type == DRIVE_NO_ROOT_DIR, "Expected DRIVE_NO_ROOT_DIR, got %u\n", Type);
58 ok(GetLastError() == 0xdeadbeaf, "Expected no errors, got %lu\n", GetLastError());
59
60 StringCchCopyW(Path + i, MAX_PATH - i, L"\\");
61 Type = GetDriveTypeW(Path);
62 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
63
64 StringCchCopyW(Path + i, MAX_PATH - i, L"/");
65 Type = GetDriveTypeW(Path);
66 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
67
68 StringCchCopyW(Path + i, MAX_PATH - i, L"\\\\");
69 Type = GetDriveTypeW(Path);
70 ok(IS_DRIVE_TYPE_VALID(Type), "Expected valid drive type, got %u\n", Type);
71 }
72 }
73