Detlef Riekenberg : winspool/tests: Add test for XcvDataW,
PortIsValid.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Feb 5 07:45:06 CST 2007
Module: wine
Branch: master
Commit: 3b453d5915f92e167e1b589a2cf22aec87c62823
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3b453d5915f92e167e1b589a2cf22aec87c62823
Author: Detlef Riekenberg <wine.dev at web.de>
Date: Fri Feb 2 16:04:46 2007 +0100
winspool/tests: Add test for XcvDataW,PortIsValid.
---
dlls/winspool.drv/tests/info.c | 168 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 166 insertions(+), 2 deletions(-)
diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c
index 74d17e5..af5e571 100644
--- a/dlls/winspool.drv/tests/info.c
+++ b/dlls/winspool.drv/tests/info.c
@@ -25,6 +25,7 @@
#include "winbase.h"
#include "winerror.h"
#include "wingdi.h"
+#include <winnls.h>
#include "winuser.h"
#include "winreg.h"
#include "winspool.h"
@@ -48,8 +49,14 @@ static CHAR winetest[] = "winet
static CHAR xcv_localport[] = ",XcvMonitor Local Port";
static WCHAR cmd_MonitorUIW[] = {'M','o','n','i','t','o','r','U','I',0};
+static WCHAR cmd_PortIsValidW[] = {'P','o','r','t','I','s','V','a','l','i','d',0};
static WCHAR emptyW[] = {0};
+static WCHAR portname_com1W[] = {'C','O','M','1',':',0};
+static WCHAR portname_com2W[] = {'C','O','M','2',':',0};
+static WCHAR portname_fileW[] = {'F','I','L','E',':',0};
+static WCHAR portname_lpt1W[] = {'L','P','T','1',':',0};
+static WCHAR portname_lpt2W[] = {'L','P','T','2',':',0};
static HANDLE hwinspool;
static FARPROC pGetDefaultPrinterA;
@@ -64,9 +71,14 @@ struct monitor_entry {
CHAR dllname[32];
};
-static LPSTR default_printer = NULL;
-static LPSTR local_server = NULL;
+static LPSTR default_printer = NULL;
+static LPSTR local_server = NULL;
+static LPSTR tempdirA = NULL;
+static LPSTR tempfileA = NULL;
+static LPWSTR tempdirW = NULL;
+static LPWSTR tempfileW = NULL;
+/* ################################ */
/* report common behavior only once */
static DWORD report_deactivated_spooler = 1;
#define RETURN_ON_DEACTIVATED_SPOOLER(res) \
@@ -215,6 +227,47 @@ static void find_local_server(VOID)
/* ########################### */
+static void find_tempfile(VOID)
+{
+ static CHAR buffer_dirA[MAX_PATH];
+ static CHAR buffer_fileA[MAX_PATH];
+ static WCHAR buffer_dirW[MAX_PATH];
+ static WCHAR buffer_fileW[MAX_PATH];
+ DWORD res;
+ int resint;
+
+ memset(buffer_dirA, 0, MAX_PATH - 1);
+ buffer_dirA[MAX_PATH - 1] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetTempPathA(MAX_PATH, buffer_dirA);
+ ok(res, "returned %u with %u and '%s' (expected '!= 0')\n", res, GetLastError(), buffer_dirA);
+ if (res == 0) return;
+
+ memset(buffer_fileA, 0, MAX_PATH - 1);
+ buffer_fileA[MAX_PATH - 1] = '\0';
+ SetLastError(0xdeadbeef);
+ res = GetTempFileNameA(buffer_dirA, winetest, 0, buffer_fileA);
+ ok(res, "returned %u with %u and '%s' (expected '!= 0')\n", res, GetLastError(), buffer_fileA);
+ if (res == 0) return;
+
+ SetLastError(0xdeadbeef);
+ resint = MultiByteToWideChar(CP_ACP, 0, buffer_dirA, -1, buffer_dirW, MAX_PATH);
+ ok(res, "returned %u with %u (expected '!= 0')\n", resint, GetLastError());
+ if (resint == 0) return;
+
+ SetLastError(0xdeadbeef);
+ resint = MultiByteToWideChar(CP_ACP, 0, buffer_fileA, -1, buffer_fileW, MAX_PATH);
+ ok(res, "returned %u with %u (expected '!= 0')\n", resint, GetLastError());
+ if (resint == 0) return;
+
+ tempdirA = buffer_dirA;
+ tempfileA = buffer_fileA;
+ tempdirW = buffer_dirW;
+ tempfileW = buffer_fileW;
+ trace("tempfile: '%s'\n", tempfileA);
+}
+
+/* ########################### */
static void test_AddMonitor(void)
{
@@ -1625,6 +1678,115 @@ static void test_XcvDataW_MonitorUI(void
/* ########################### */
+static void test_XcvDataW_PortIsValid(void)
+{
+ DWORD res;
+ HANDLE hXcv;
+ DWORD needed;
+ DWORD status;
+ PRINTER_DEFAULTSA pd;
+
+ /* api is not present before w2k */
+ if (pXcvDataW == NULL) return;
+
+ pd.pDatatype = NULL;
+ pd.pDevMode = NULL;
+ pd.DesiredAccess = SERVER_ACCESS_ADMINISTER;
+
+ hXcv = (HANDLE) 0;
+ SetLastError(0xdeadbeef);
+ res = OpenPrinter(xcv_localport, &hXcv, &pd);
+
+ RETURN_ON_DEACTIVATED_SPOOLER(res)
+ ok(res, "returned %d with %u and handle %p (expected '!= 0')\n", res, GetLastError(), hXcv);
+ if (!res) return;
+
+
+ /* "PDWORD needed" is always required */
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_lpt1W, sizeof(portname_lpt1W), NULL, 0, NULL, &status);
+ ok( !res && (GetLastError() == ERROR_INVALID_PARAMETER),
+ "returned %d with %u and %u for status %u (expected '!= 0' with ERROR_INVALID_PARAMETER)\n",
+ res, GetLastError(), needed, status);
+
+ /* an empty name is not allowed */
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) emptyW, sizeof(emptyW), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_PATH_NOT_FOUND),
+ "returned %d with %u and %u for status %u (expected '!= 0' for ERROR_PATH_NOT_FOUND)\n",
+ res, GetLastError(), needed, status);
+
+ /* a directory is not allowed */
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) tempdirW, (lstrlenW(tempdirW) + 1) * sizeof(WCHAR), NULL, 0, &needed, &status);
+ /* XP: ERROR_PATH_NOT_FOUND, w2k ERROR_ACCESS_DENIED */
+ ok( res && ((status == ERROR_PATH_NOT_FOUND) || (status == ERROR_ACCESS_DENIED)),
+ "returned %d with %u and %u for status %u (expected '!= 0' for status: "
+ "ERROR_PATH_NOT_FOUND or ERROR_ACCESS_DENIED)\n",
+ res, GetLastError(), needed, status);
+
+ /* more valid well known Ports */
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_lpt1W, sizeof(portname_lpt1W), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' for ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_lpt2W, sizeof(portname_lpt2W), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' for ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_com1W, sizeof(portname_com1W), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' for ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_com2W, sizeof(portname_com2W), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' for ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) portname_fileW, sizeof(portname_fileW), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' with ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+
+ /* a normal, writeable file is allowed */
+ needed = (DWORD) 0xdeadbeef;
+ status = (DWORD) 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ res = pXcvDataW(hXcv, cmd_PortIsValidW, (PBYTE) tempfileW, (lstrlenW(tempfileW) + 1) * sizeof(WCHAR), NULL, 0, &needed, &status);
+ ok( res && (status == ERROR_SUCCESS),
+ "returned %d with %u and %u for status %u (expected '!= 0' with ERROR_SUCCESS)\n",
+ res, GetLastError(), needed, status);
+
+ ClosePrinter(hXcv);
+}
+
+/* ########################### */
+
static void test_GetPrinterDriver(void)
{
HANDLE hprn;
@@ -1836,6 +1998,7 @@ START_TEST(info)
find_default_printer();
find_local_server();
+ find_tempfile();
test_AddMonitor();
test_AddPort();
@@ -1855,4 +2018,5 @@ START_TEST(info)
test_GetPrinterDriver();
test_SetDefaultPrinter();
test_XcvDataW_MonitorUI();
+ test_XcvDataW_PortIsValid();
}
More information about the wine-cvs
mailing list