Detlef Riekenberg : localui/tests: Add tests for ConfigurePortUI.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 22 06:59:56 CDT 2007


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

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Mon May 21 17:57:23 2007 +0200

localui/tests: Add tests for ConfigurePortUI.

---

 dlls/localui/tests/Makefile.in |    2 +-
 dlls/localui/tests/localui.c   |  175 +++++++++++++++++++++++++++++++++++++++-
 2 files changed, 175 insertions(+), 2 deletions(-)

diff --git a/dlls/localui/tests/Makefile.in b/dlls/localui/tests/Makefile.in
index 191a312..8532af8 100644
--- a/dlls/localui/tests/Makefile.in
+++ b/dlls/localui/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 TESTDLL   = localui.dll
-IMPORTS   = kernel32
+IMPORTS   = kernel32 winspool
 
 CTESTS = \
 	localui.c
diff --git a/dlls/localui/tests/localui.c b/dlls/localui/tests/localui.c
index e3a1813..414d8d3 100644
--- a/dlls/localui/tests/localui.c
+++ b/dlls/localui/tests/localui.c
@@ -20,11 +20,13 @@
  */
 
 #include <stdarg.h>
+#include <stdio.h>
 
 #include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
 #include "wingdi.h"
+#include "winnls.h"
 #include "winreg.h"
 
 #include "winspool.h"
@@ -42,6 +44,51 @@ static BOOL  (WINAPI *pAddPortUI)(PCWSTR, HWND, PCWSTR, PWSTR *);
 static BOOL  (WINAPI *pConfigurePortUI)(PCWSTR, HWND, PCWSTR);
 static BOOL  (WINAPI *pDeletePortUI)(PCWSTR, HWND, PCWSTR);
 
+static WCHAR does_not_existW[] = {'d','o','e','s','_','n','o','t','_','e','x','i','s','t',0};
+static WCHAR emptyW[] = {0};
+static CHAR  fmt_comA[] = {'C','O','M','%','u',':',0};
+static CHAR  fmt_lptA[] = {'L','P','T','%','u',':',0};
+static WCHAR portname_fileW[] = {'F','I','L','E',':',0};
+
+static LPBYTE pi_buffer;
+static DWORD pi_numports;
+static DWORD pi_needed;
+
+static PORT_INFO_2W * lpt_present;
+static PORT_INFO_2W * com_present;
+static PORT_INFO_2W * file_present;
+
+static LPWSTR   lpt_absent;
+static LPWSTR   com_absent;
+
+/* ########################### */
+
+static PORT_INFO_2W * find_portinfo2(LPWSTR pPort)
+{
+    PORT_INFO_2W * pi;
+    DWORD   res;
+
+    if (!pi_buffer) {
+        res = EnumPortsW(NULL, 2, NULL, 0, &pi_needed, &pi_numports);
+        pi_buffer = HeapAlloc(GetProcessHeap(), 0, pi_needed);
+        SetLastError(0xdeadbeef);
+        res = EnumPortsW(NULL, 2, pi_buffer, pi_needed, &pi_needed, &pi_numports);
+    }
+    if (pi_buffer) {
+        pi = (PORT_INFO_2W *) pi_buffer;
+        res = 0;
+        while (pi_numports > res) {
+            if (lstrcmpiW(pi->pPortName, pPort) == 0) {
+                return pi;
+            }
+            pi++;
+            res++;
+        }
+    }
+    return NULL;
+}
+
+
 /* ########################### */
 
 static LPCSTR load_functions(void)
@@ -59,6 +106,96 @@ static LPCSTR load_functions(void)
     return NULL;
 }
 
+/* ###########################
+ *   strdupW [internal]
+ */
+
+static LPWSTR strdupW(LPCWSTR strW)
+{
+    LPWSTR  ptr;
+
+    ptr = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(strW) + 1) * sizeof(WCHAR));
+    if (ptr) {
+        lstrcpyW(ptr, strW);
+    }
+    return ptr;
+}
+
+/* ########################### */
+
+static void test_ConfigurePortUI(void)
+{
+    DWORD   res;
+
+    /* not present before w2k */
+    if (!pConfigurePortUI) {
+        skip("ConfigurePortUI not found\n");
+        return;
+    }
+
+    SetLastError(0xdeadbeef);
+    res = pConfigurePortUI(NULL, NULL, NULL);
+    ok( !res && (GetLastError() == ERROR_UNKNOWN_PORT),
+        "got %d with %u (expected '0' with ERROR_UNKNOWN_PORT)\n",
+        res, GetLastError());
+
+
+    SetLastError(0xdeadbeef);
+    res = pConfigurePortUI(NULL, NULL, emptyW);
+    ok( !res && (GetLastError() == ERROR_UNKNOWN_PORT),
+        "got %d with %u (expected '0' with ERROR_UNKNOWN_PORT)\n",
+        res, GetLastError());
+
+
+    SetLastError(0xdeadbeef);
+    res = pConfigurePortUI(NULL, NULL, does_not_existW);
+    ok( !res && (GetLastError() == ERROR_UNKNOWN_PORT),
+        "got %d with %u (expected '0' with ERROR_UNKNOWN_PORT)\n",
+        res, GetLastError());
+
+
+    if (winetest_interactive && lpt_present) {
+        SetLastError(0xdeadbeef);
+        res = pConfigurePortUI(NULL, NULL, lpt_present->pPortName);
+        ok( res ||
+            (GetLastError() == ERROR_CANCELLED) || (GetLastError() == ERROR_ACCESS_DENIED),
+            "got %d with %u (expected '!= 0' or '0' with: ERROR_CANCELLED or "
+            "ERROR_ACCESS_DENIED)\n", res, GetLastError());
+    }
+
+    if (lpt_absent) {
+        SetLastError(0xdeadbeef);
+        res = pConfigurePortUI(NULL, NULL, lpt_absent);
+        ok( !res && (GetLastError() == ERROR_UNKNOWN_PORT),
+            "got %d with %u (expected '0' with ERROR_UNKNOWN_PORT)\n",
+            res, GetLastError());
+    }
+
+    if (winetest_interactive && com_present) {
+        SetLastError(0xdeadbeef);
+        res = pConfigurePortUI(NULL, NULL, com_present->pPortName);
+        ok( res ||
+            (GetLastError() == ERROR_CANCELLED) || (GetLastError() == ERROR_ACCESS_DENIED),
+            "got %d with %u (expected '!= 0' or '0' with: ERROR_CANCELLED or "
+            "ERROR_ACCESS_DENIED)\n", res, GetLastError());
+    }
+
+    if (com_absent) {
+        SetLastError(0xdeadbeef);
+        res = pConfigurePortUI(NULL, NULL, com_absent);
+        ok( !res && (GetLastError() == ERROR_UNKNOWN_PORT),
+            "got %d with %u (expected '0' with ERROR_UNKNOWN_PORT)\n",
+            res, GetLastError());
+    }
+
+    if (winetest_interactive && file_present) {
+        SetLastError(0xdeadbeef);
+        res = pConfigurePortUI(NULL, NULL, portname_fileW);
+        ok( !res && (GetLastError() == ERROR_CANCELLED),
+            "got %d with %u (expected '0' with ERROR_CANCELLED)\n",
+            res, GetLastError());
+    }
+}
 
 /* ########################### */
 
@@ -66,7 +203,10 @@ START_TEST(localui)
 {
     LPCSTR   ptr;
     DWORD   numentries;
-
+    PORT_INFO_2W * pi2;
+    WCHAR   bufferW[16];
+    CHAR    bufferA[16];
+    DWORD   id;
 
     /* localui.dll does not exist before w2k */
     ptr = load_functions();
@@ -88,4 +228,37 @@ START_TEST(localui)
         }
     }
 
+    /* find installed Ports */
+
+    id = 0;
+    /* "LPT1:" - "LPT9:" */
+    while (((lpt_present == NULL) || (lpt_absent == NULL)) && id < 9) {
+        id++;
+        sprintf(bufferA, fmt_lptA, id);
+        MultiByteToWideChar( CP_ACP, 0, bufferA, -1, bufferW, sizeof(bufferW)/sizeof(WCHAR) );
+        pi2 = find_portinfo2(bufferW);
+        if (pi2 && (lpt_present == NULL)) lpt_present = pi2;
+        if (!pi2 && (lpt_absent == NULL)) lpt_absent = strdupW(bufferW);
+    }
+
+    id = 0;
+    /* "COM1:" - "COM9:" */
+    while (((com_present == NULL) || (com_absent == NULL)) && id < 9) {
+        id++;
+        sprintf(bufferA, fmt_comA, id);
+        MultiByteToWideChar( CP_ACP, 0, bufferA, -1, bufferW, sizeof(bufferW)/sizeof(WCHAR) );
+        pi2 = find_portinfo2(bufferW);
+        if (pi2 && (com_present == NULL)) com_present = pi2;
+        if (!pi2 && (com_absent == NULL)) com_absent = strdupW(bufferW);
+    }
+
+    /* "FILE:" */
+    file_present = find_portinfo2(portname_fileW);
+
+    test_ConfigurePortUI();
+
+    /* cleanup */
+    HeapFree(GetProcessHeap(), 0, lpt_absent);
+    HeapFree(GetProcessHeap(), 0, com_absent);
+    HeapFree(GetProcessHeap(), 0, pi_buffer);
 }




More information about the wine-cvs mailing list