Aric Stewart : kernel32/tests: Add test for GetCommandLineW.

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


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Wed Oct 15 09:30:28 2008 -0500

kernel32/tests: Add test for GetCommandLineW.

---

 dlls/kernel32/tests/process.c |   42 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 7f716d6..40b8caf 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -128,7 +128,6 @@ static char*    decodeA(const char* str)
     return ptr;
 }
 
-#if 0
 /* This will be needed to decode Unicode strings saved by the child process
  * when we test Unicode functions.
  */
@@ -149,7 +148,6 @@ static WCHAR*   decodeW(const char* str)
     ptr[len] = '\0';
     return ptr;
 }
-#endif
 
 /******************************************************************
  *		init
@@ -411,6 +409,18 @@ static char* getChildString(const char* sect, const char* key)
     return ret;
 }
 
+static WCHAR* getChildStringW(const char* sect, const char* key)
+{
+    char        buf[1024+4*MAX_LISTED_ENV_VAR];
+    WCHAR*       ret;
+
+    GetPrivateProfileStringA(sect, key, "-", buf, sizeof(buf), resfile);
+    if (buf[0] == '\0' || (buf[0] == '-' && buf[1] == '\0')) return NULL;
+    assert(!(strlen(buf) & 1));
+    ret = decodeW(buf);
+    return ret;
+}
+
 /* FIXME: this may be moved to the wtmain.c file, because it may be needed by
  * others... (windows uses stricmp while Un*x uses strcasecmp...)
  */
@@ -446,8 +456,35 @@ static void ok_child_string( int line, const char *sect, const char *key,
                          sect, key, expect ? expect : "(null)", result );
 }
 
+static void ok_child_stringWA( int line, const char *sect, const char *key,
+                             const char *expect, int sensitive )
+{
+    WCHAR* expectW;
+    CHAR* resultA;
+    DWORD len;
+    WCHAR* result = getChildStringW( sect, key );
+
+    len = MultiByteToWideChar( CP_ACP, 0, expect, -1, NULL, 0);
+    expectW = HeapAlloc(GetProcessHeap(),0,len*sizeof(WCHAR));
+    MultiByteToWideChar( CP_ACP, 0, expect, -1, expectW, len);
+
+    len = WideCharToMultiByte( CP_ACP, 0, result, -1, NULL, 0, NULL, NULL);
+    resultA = HeapAlloc(GetProcessHeap(),0,len*sizeof(CHAR));
+    WideCharToMultiByte( CP_ACP, 0, result, -1, resultA, len, NULL, NULL);
+
+    if (sensitive)
+        ok_(__FILE__, line)( lstrcmpW(result, expectW) == 0, "%s:%s expected '%s', got '%s'\n",
+                         sect, key, expect ? expect : "(null)", resultA );
+    else
+        ok_(__FILE__, line)( lstrcmpiW(result, expectW) == 0, "%s:%s expected '%s', got '%s'\n",
+                         sect, key, expect ? expect : "(null)", resultA );
+    HeapFree(GetProcessHeap(),0,expectW);
+    HeapFree(GetProcessHeap(),0,resultA);
+}
+
 #define okChildString(sect, key, expect) ok_child_string(__LINE__, (sect), (key), (expect), 1 )
 #define okChildIString(sect, key, expect) ok_child_string(__LINE__, (sect), (key), (expect), 0 )
+#define okChildStringWA(sect, key, expect) ok_child_stringWA(__LINE__, (sect), (key), (expect), 1 )
 
 /* using !expect ensures that the test will fail if the sect/key isn't present
  * in result file
@@ -852,6 +889,7 @@ static void test_CommandLine(void)
     sprintf(buffer, "tests/process.c %s", resfile);
     okChildString("Arguments", "argvA0", "dummy");
     okChildString("Arguments", "CommandLineA", buffer2);
+    okChildStringWA("Arguments", "CommandLineW", buffer2);
     release_memory();
     assert(DeleteFileA(resfile) != 0);
 }




More information about the wine-cvs mailing list