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