serialui/tests: [2/2] Add initial tests
Detlef Riekenberg
wine.dev at web.de
Thu Feb 22 14:15:29 CST 2007
Tested on w2k and XP
Changelog:
- serialui/tests: Add initial tests
--
By by ... Detlef
-------------- next part --------------
>From 41340deaf9e95b508ecc4168559b593c004cf4a4 Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Thu, 22 Feb 2007 20:40:46 +0100
Subject: [PATCH] serialui/tests: Add initial tests
---
dlls/serialui/tests/Makefile.in | 13 ++
dlls/serialui/tests/confdlg.c | 270 +++++++++++++++++++++++++++++++++++++++
2 files changed, 283 insertions(+), 0 deletions(-)
diff --git a/dlls/serialui/tests/Makefile.in b/dlls/serialui/tests/Makefile.in
new file mode 100644
index 0000000..20909e0
--- /dev/null
+++ b/dlls/serialui/tests/Makefile.in
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../../..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+TESTDLL = serialui.dll
+IMPORTS = kernel32 msvcrt
+
+CTESTS = \
+ confdlg.c
+
+ at MAKE_TEST_RULES@
+
+ at DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/serialui/tests/confdlg.c b/dlls/serialui/tests/confdlg.c
new file mode 100644
index 0000000..6f41496
--- /dev/null
+++ b/dlls/serialui/tests/confdlg.c
@@ -0,0 +1,270 @@
+/*
+ * Unit test suite for serialui API functions
+ *
+ * Copyright 2007 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winerror.h"
+
+#include "wine/test.h"
+
+
+static HINSTANCE hdll;
+static DWORD (WINAPI *pGetDefaultCommConfigA)(LPCSTR, LPCOMMCONFIG, LPDWORD);
+static DWORD (WINAPI *pGetDefaultCommConfigW)(LPCWSTR, LPCOMMCONFIG, LPDWORD);
+
+
+static CHAR com1A[] = "com1";
+static CHAR emptyA[] = "";
+static CHAR fmt_comA[] = "com%d";
+static CHAR str_colonA[] = ":";
+
+static WCHAR com1W[] = {'c','o','m','1',0};
+static WCHAR emptyW[] = {0};
+static WCHAR fmt_comW[] = {'c','o','m','%','d',0};
+static WCHAR str_colonW[] = {':',0};
+
+/* ################# */
+
+static LPCSTR load_functions(void)
+{
+ LPCSTR ptr;
+
+ ptr = "serialui.dll";
+ hdll = LoadLibraryA(ptr);
+ if (!hdll) return ptr;
+
+ ptr = "drvGetDefaultCommConfigA";
+ pGetDefaultCommConfigA = (VOID *) GetProcAddress(hdll, ptr);
+ if (!pGetDefaultCommConfigA) return ptr;
+
+ ptr = "drvGetDefaultCommConfigW";
+ pGetDefaultCommConfigW = (VOID *) GetProcAddress(hdll, ptr);
+ if (!pGetDefaultCommConfigW) return ptr;
+
+
+ return NULL;
+}
+
+/* ################# */
+
+static void test_drvGetDefaultCommConfigA(void)
+{
+ COMMCONFIG pCC[3];
+ CHAR bufferA[16];
+ DWORD i;
+ DWORD res;
+ DWORD len;
+
+
+ /* off by one: one byte smaller */
+ i = sizeof(COMMCONFIG);
+ len = sizeof(COMMCONFIG) -1;
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(com1A, pCC, &len);
+ if (res == ERROR_CALL_NOT_IMPLEMENTED) {
+ /* NT does not implement the ANSI API */
+ skip("*A not implemented\n");
+ return;
+ }
+ ok( (res == ERROR_INSUFFICIENT_BUFFER) && (len >= i),
+ "returned %u with %u and %u (expected "
+ "ERROR_INSUFFICIENT_BUFFER and '>= %u')\n", res, GetLastError(), len, i);
+
+ /* test ports "com0" - "com10" */
+ for (i = 0; i < 11 ; i++) {
+ sprintf(bufferA, fmt_comA, i);
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(bufferA, pCC, &len);
+ if (i == 0) {
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+ else
+ {
+ ok((res == ERROR_SUCCESS) || (res == ERROR_BADKEY),
+ "returned %u with %u and %u for %s (expected ERROR_SUCCESS or "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+
+ /* a name with a colon is invalid */
+ if (res == ERROR_SUCCESS) {
+ lstrcatA(bufferA, str_colonA);
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ res = pGetDefaultCommConfigA(bufferA, pCC, &len);
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected '0' with "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+ }
+
+
+ /* an empty String is not allowed */
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(emptyA, pCC, &len);
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected ERROR_BADKEY)\n",
+ res, GetLastError(), len, emptyA);
+
+ /* some NULL checks */
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(NULL, pCC, &len);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u and %u for NULL (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError(), len);
+
+
+ len = sizeof(pCC);
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(com1A, NULL, &len);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u and %u (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError(), len);
+
+
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigA(com1A, pCC, NULL);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError());
+}
+
+/* ################# */
+
+static void test_drvGetDefaultCommConfigW(void)
+{
+ COMMCONFIG pCC[3];
+ WCHAR bufferW[16];
+ CHAR bufferA[16];
+ DWORD i;
+ DWORD res;
+ DWORD len;
+
+
+ /* off by one: one byte smaller */
+ i = sizeof(COMMCONFIG);
+ len = sizeof(COMMCONFIG) -1;
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(com1W, pCC, &len);
+ if (res == ERROR_CALL_NOT_IMPLEMENTED) {
+ skip("*W not implemented\n");
+ return;
+ }
+ ok( (res == ERROR_INSUFFICIENT_BUFFER) && (len >= i),
+ "returned %u with %u and %u (expected "
+ "ERROR_INSUFFICIENT_BUFFER and '>= %u')\n", res, GetLastError(), len, i);
+
+ /* test ports "com0" - "com10" */
+ for (i = 0; i < 11 ; i++) {
+ sprintf(bufferA, fmt_comA, i);
+ swprintf(bufferW, fmt_comW, i);
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(bufferW, pCC, &len);
+ if (i == 0) {
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+ else
+ {
+ ok((res == ERROR_SUCCESS) || (res == ERROR_BADKEY),
+ "returned %u with %u and %u for %s (expected ERROR_SUCCESS or "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+
+ /* a name with a colon is invalid */
+ if (res == ERROR_SUCCESS) {
+ lstrcatA(bufferA, str_colonA);
+ lstrcatW(bufferW, str_colonW);
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ res = pGetDefaultCommConfigW(bufferW, pCC, &len);
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected '0' with "
+ "ERROR_BADKEY)\n", res, GetLastError(), len, bufferA);
+ }
+ }
+
+ /* an empty String is not allowed */
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(emptyW, pCC, &len);
+ ok( res == ERROR_BADKEY,
+ "returned %u with %u and %u for %s (expected ERROR_BADKEY)\n",
+ res, GetLastError(), len, emptyA);
+
+ /* some NULL checks */
+ len = sizeof(pCC);
+ ZeroMemory(pCC, sizeof(pCC));
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(NULL, pCC, &len);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u and %u for NULL (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError(), len);
+
+
+ len = sizeof(pCC);
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(com1W, NULL, &len);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u and %u (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError(), len);
+
+
+ SetLastError(0xdeadbeef);
+ res = pGetDefaultCommConfigW(com1W, pCC, NULL);
+ ok( res == ERROR_INVALID_PARAMETER,
+ "returned %u with %u (expected ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError());
+
+}
+
+/* ################# */
+
+START_TEST(confdlg)
+{
+ LPCSTR ptr;
+
+ ptr = load_functions();
+ if (ptr) {
+ skip("got NULL with %u for %s\n", GetLastError(), ptr);
+ return;
+ }
+
+ test_drvGetDefaultCommConfigA();
+ test_drvGetDefaultCommConfigW();
+
+}
--
1.4.1
More information about the wine-patches
mailing list