Jacek Caban : kernel32: Added GetLogicalDriveStrings tests.

Alexandre Julliard julliard at winehq.org
Thu Oct 16 06:07:05 CDT 2008


Module: wine
Branch: master
Commit: a849136d5e13a5d1a6783e795b381e744ed201e5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a849136d5e13a5d1a6783e795b381e744ed201e5

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Oct 15 10:24:28 2008 -0500

kernel32: Added GetLogicalDriveStrings tests.

---

 dlls/kernel32/tests/volume.c |   74 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/tests/volume.c b/dlls/kernel32/tests/volume.c
index 727f326..14fcade 100644
--- a/dlls/kernel32/tests/volume.c
+++ b/dlls/kernel32/tests/volume.c
@@ -27,6 +27,8 @@ static BOOL (WINAPI * pGetVolumeNameForVolumeMountPointW)(LPCWSTR, LPWSTR, DWORD
 static HANDLE (WINAPI *pFindFirstVolumeA)(LPSTR,DWORD);
 static BOOL (WINAPI *pFindNextVolumeA)(HANDLE,LPSTR,DWORD);
 static BOOL (WINAPI *pFindVolumeClose)(HANDLE);
+static UINT (WINAPI *pGetLogicalDriveStringsA)(UINT,LPSTR);
+static UINT (WINAPI *pGetLogicalDriveStringsW)(UINT,LPWSTR);
 
 /* ############################### */
 
@@ -139,6 +141,74 @@ static void test_GetVolumeNameForVolumeMountPointW(void)
     ok(ret == TRUE, "GetVolumeNameForVolumeMountPointW failed\n");
 }
 
+static void test_GetLogicalDriveStringsA(void)
+{
+    UINT size, size2;
+    char *buf, *ptr;
+
+    if(!pGetLogicalDriveStringsA) {
+        win_skip("GetLogicalDriveStringsA not available\n");
+        return;
+    }
+
+    size = pGetLogicalDriveStringsA(0, NULL);
+    ok(size%4 == 1, "size = %d\n", size);
+
+    buf = HeapAlloc(GetProcessHeap(), 0, size);
+
+    *buf = 0;
+    size2 = pGetLogicalDriveStringsA(2, buf);
+    ok(size2 == size, "size2 = %d\n", size2);
+    ok(!*buf, "buf changed\n");
+
+    size2 = pGetLogicalDriveStringsA(size, buf);
+    ok(size2 == size-1, "size2 = %d\n", size2);
+
+    for(ptr = buf; ptr < buf+size2; ptr += 4) {
+        ok('A' <= *ptr && *ptr <= 'Z', "device name '%c' is not uppercase\n", *ptr);
+        ok(ptr[1] == ':', "ptr[1] = %c, expected ':'\n", ptr[1]);
+        ok(ptr[2] == '\\', "ptr[2] = %c expected '\\'\n", ptr[2]);
+        ok(!ptr[3], "ptr[3] = %c expected nullbyte\n", ptr[3]);
+    }
+    ok(!*ptr, "buf[size2] is not nullbyte\n");
+
+    HeapFree(GetProcessHeap(), 0, buf);
+}
+
+static void test_GetLogicalDriveStringsW(void)
+{
+    UINT size, size2;
+    WCHAR *buf, *ptr;
+
+    if(!pGetLogicalDriveStringsW) {
+        win_skip("GetLogicalDriveStringsW not available\n");
+        return;
+    }
+
+    size = pGetLogicalDriveStringsW(0, NULL);
+    ok(size%4 == 1, "size = %d\n", size);
+
+    buf = HeapAlloc(GetProcessHeap(), 0, size*sizeof(WCHAR));
+
+    *buf = 0;
+    size2 = pGetLogicalDriveStringsW(2, buf);
+    ok(size2 == size, "size2 = %d\n", size2);
+    ok(!*buf, "buf changed\n");
+
+    size2 = pGetLogicalDriveStringsW(size, buf);
+    ok(size2 == size-1, "size2 = %d\n", size2);
+
+    for(ptr = buf; ptr < buf+size2; ptr += 4) {
+        ok('A' <= *ptr && *ptr <= 'Z', "device name '%c' is not uppercase\n", *ptr);
+        ok(ptr[1] == ':', "ptr[1] = %c, expected ':'\n", ptr[1]);
+        ok(ptr[2] == '\\', "ptr[2] = %c expected '\\'\n", ptr[2]);
+        ok(!ptr[3], "ptr[3] = %c expected nullbyte\n", ptr[3]);
+    }
+    ok(!*ptr, "buf[size2] is not nullbyte\n");
+
+    HeapFree(GetProcessHeap(), 0, buf);
+}
+
 START_TEST(volume)
 {
     hdll = GetModuleHandleA("kernel32.dll");
@@ -147,9 +217,13 @@ START_TEST(volume)
     pFindFirstVolumeA = (void *) GetProcAddress(hdll, "FindFirstVolumeA");
     pFindNextVolumeA = (void *) GetProcAddress(hdll, "FindNextVolumeA");
     pFindVolumeClose = (void *) GetProcAddress(hdll, "FindVolumeClose");
+    pGetLogicalDriveStringsA = (void *) GetProcAddress(hdll, "GetLogicalDriveStringsA");
+    pGetLogicalDriveStringsW = (void *) GetProcAddress(hdll, "GetLogicalDriveStringsW");
 
     test_query_dos_deviceA();
     test_FindFirstVolume();
     test_GetVolumeNameForVolumeMountPointA();
     test_GetVolumeNameForVolumeMountPointW();
+    test_GetLogicalDriveStringsA();
+    test_GetLogicalDriveStringsW();
 }




More information about the wine-cvs mailing list