kernel32/tests: Add tests for GetVolumePathNameA()

Bruno Jesus 00cpxxx at gmail.com
Sun Jul 28 13:01:32 CDT 2013


Tests related to iTunes 7. I'm working to fix this in the next days.
-------------- next part --------------
diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index f7879c8..8a7e8e6 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -53,6 +53,7 @@ static BOOL (WINAPI *pFindVolumeClose)(HANDLE);
 static UINT (WINAPI *pGetLogicalDriveStringsA)(UINT,LPSTR);
 static UINT (WINAPI *pGetLogicalDriveStringsW)(UINT,LPWSTR);
 static BOOL (WINAPI *pGetVolumeInformationA)(LPCSTR, LPSTR, DWORD, LPDWORD, LPDWORD, LPDWORD, LPSTR, DWORD);
+static BOOL (WINAPI *pGetVolumePathNameA)(LPCSTR, LPSTR, DWORD);
 static BOOL (WINAPI *pGetVolumePathNamesForVolumeNameA)(LPCSTR, LPSTR, DWORD, LPDWORD);
 static BOOL (WINAPI *pGetVolumePathNamesForVolumeNameW)(LPCWSTR, LPWSTR, DWORD, LPDWORD);
 
@@ -588,6 +589,83 @@ static void test_disk_extents(void)
     CloseHandle( handle );
 }
 
+static void test_GetVolumePathNameA(void)
+{
+    BOOL ret;
+    char volume[MAX_PATH];
+    char expected[] = "C:\\", pathC1[] = "C:\\", pathC2[] = "C::";
+    DWORD error;
+
+    if (!pGetVolumePathNameA)
+    {
+        win_skip("required functions not found\n");
+        return;
+    }
+
+    SetLastError( 0xdeadbeef );
+    ret = pGetVolumePathNameA(NULL, NULL, 0);
+    error = GetLastError();
+    ok(!ret, "expected failure\n");
+todo_wine
+    ok(error == ERROR_INVALID_PARAMETER 
+       || broken( error == 0xdeadbeef) /* <=XP */,
+       "expected ERROR_INVALID_PARAMETER got %u\n", error);
+
+    SetLastError( 0xdeadbeef );
+    ret = pGetVolumePathNameA("", NULL, 0);
+    error = GetLastError();
+    ok(!ret, "expected failure\n");
+todo_wine
+    ok(error == ERROR_INVALID_PARAMETER 
+       || broken( error == 0xdeadbeef) /* <=XP */,
+       "expected ERROR_INVALID_PARAMETER got %u\n", error);
+
+    SetLastError( 0xdeadbeef );
+    ret = pGetVolumePathNameA(pathC1, NULL, 0);
+    error = GetLastError();
+    ok(!ret, "expected failure\n");
+todo_wine
+    ok(error == ERROR_INVALID_PARAMETER 
+       || broken(error == ERROR_FILENAME_EXCED_RANGE) /* <=XP */,
+       "expected ERROR_INVALID_PARAMETER got %u\n", error);
+
+    SetLastError( 0xdeadbeef );
+    ret = pGetVolumePathNameA(pathC1, volume, 0);
+    error = GetLastError();
+    ok(!ret, "expected failure\n");
+todo_wine
+    ok(error == ERROR_INVALID_PARAMETER 
+       || broken(error == ERROR_FILENAME_EXCED_RANGE ) /* <=XP */,
+       "expected ERROR_INVALID_PARAMETER got %u\n", error);
+
+    SetLastError( 0xdeadbeef );
+    ret = pGetVolumePathNameA(pathC1, volume, 1);
+    error = GetLastError();
+    ok(!ret, "expected failure\n");
+todo_wine
+    ok(error == ERROR_FILENAME_EXCED_RANGE, "expected ERROR_FILENAME_EXCED_RANGE got %u\n", error);
+
+    volume[0] = '\0';
+    ret = pGetVolumePathNameA(pathC1, volume, sizeof(volume));
+    ok(ret, "expected success\n");
+    ok(!strcmp(expected, volume), "expected name '%s', returned '%s'\n", pathC1, volume);
+
+    pathC1[0] = tolower(pathC1[0]);
+    volume[0] = '\0';
+    ret = pGetVolumePathNameA(pathC1, volume, sizeof(volume));
+    ok(ret, "expected success\n");
+todo_wine
+    ok(!strcmp(expected, volume) || broken(!strcasecmp(expected, volume)) /* <=XP */,
+       "expected name '%s', returned '%s'\n", expected, volume);
+
+    volume[0] = '\0';
+    ret = pGetVolumePathNameA(pathC2, volume, sizeof(volume));
+todo_wine
+    ok(ret, "expected success\n");
+todo_wine
+    ok(!strcmp(expected, volume), "expected name '%s', returned '%s'\n", expected, volume);
+}
+
 static void test_GetVolumePathNamesForVolumeNameA(void)
 {
     BOOL ret;
@@ -926,12 +1004,14 @@ START_TEST(volume)
     pGetLogicalDriveStringsA = (void *) GetProcAddress(hdll, "GetLogicalDriveStringsA");
     pGetLogicalDriveStringsW = (void *) GetProcAddress(hdll, "GetLogicalDriveStringsW");
     pGetVolumeInformationA = (void *) GetProcAddress(hdll, "GetVolumeInformationA");
+    pGetVolumePathNameA = (void *) GetProcAddress(hdll, "GetVolumePathNameA");
     pGetVolumePathNamesForVolumeNameA = (void *) GetProcAddress(hdll, "GetVolumePathNamesForVolumeNameA");
     pGetVolumePathNamesForVolumeNameW = (void *) GetProcAddress(hdll, "GetVolumePathNamesForVolumeNameW");
 
     test_query_dos_deviceA();
     test_define_dos_deviceA();
     test_FindFirstVolume();
+    test_GetVolumePathNameA();
     test_GetVolumeNameForVolumeMountPointA();
     test_GetVolumeNameForVolumeMountPointW();
     test_GetLogicalDriveStringsA();


More information about the wine-patches mailing list