From b3f955db9e8ca61876b7e8019d2c693d6ff237d0 Mon Sep 17 00:00:00 2001 From: Marcel Partap Date: Sun, 27 Apr 2008 22:08:54 +0200 Subject: [PATCH] winspool/tests: Add tests for AddForm and DeleteForm --- dlls/winspool.drv/tests/info.c | 163 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 163 insertions(+), 0 deletions(-) diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c index f0f4754..d5b4274 100644 --- a/dlls/winspool.drv/tests/info.c +++ b/dlls/winspool.drv/tests/info.c @@ -43,6 +43,7 @@ static CHAR does_not_exist[] = "does_not_exist"; static CHAR empty[] = ""; static CHAR env_x86[] = "Windows NT x86"; static CHAR env_win9x_case[] = "windowS 4.0"; +static CHAR formname_test[] = "WineTestForm"; static CHAR illegal_name[] = "illegal,name"; static CHAR invalid_env[] = "invalid_env"; static CHAR LocalPortA[] = "Local Port"; @@ -288,6 +289,112 @@ static void find_tempfile(VOID) /* ########################### */ +static void test_AddForm(void) +{ + /* fixme: level 2 not yet supported */ + FORM_INFO_1A fi1a; + DWORD res; + HANDLE hprinter = NULL; + + SetLastError(0xdeadbeef); + res = AddFormA(NULL, 0, NULL); + ok(!res && (GetLastError() == ERROR_INVALID_LEVEL), + "returned %d with %d (expected '0' with ERROR_INVALID_LEVEL)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = AddFormA(NULL, 1, NULL); + ok(!res && (GetLastError() == ERROR_INVALID_HANDLE), + "returned %d with %d (expected '0' with ERROR_INVALID_HANDLE)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = AddFormA((HANDLE)0xdeadbeef, 1, NULL); + ok(!res && (GetLastError() == ERROR_INVALID_HANDLE), + "returned %d with %d (expected '0' with ERROR_INVALID_HANDLE)\n", res, GetLastError()); + + /* get handle for default printer */ + if (default_printer) + OpenPrinter(default_printer, &hprinter, NULL); + if (!hprinter) + return; + + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, NULL); + ok(!res && (GetLastError() == ERROR_INVALID_PARAMETER), + "returned %d with %d (expected '0' with ERROR_INVALID_PARAMETER)\n", res, GetLastError()); + + /* first attempt with empty form structure */ + memset(&fi1a, 0, sizeof(fi1a)); + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_NAME), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_NAME)\n", res, GetLastError()); + + fi1a.pName = empty; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_NAME), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_NAME)\n", res, GetLastError()); + + fi1a.pName = formname_test; + fi1a.Flags = FORM_PRINTER; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_SIZE), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_SIZE)\n", res, GetLastError()); + + /* Size.cx/.cy and ImageableArea.right/.bottom are tested to both be > 0 on NT */ + fi1a.ImageableArea.left = 1; + fi1a.ImageableArea.top = 2; + fi1a.ImageableArea.right = 3; + fi1a.ImageableArea.bottom = 4; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_SIZE), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_SIZE)\n", res, GetLastError()); + + memset(&fi1a.ImageableArea, 0, sizeof(RECTL)); + fi1a.Size.cx = 1; + fi1a.Size.cy = 1; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_SIZE), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_SIZE)\n", res, GetLastError()); + + fi1a.ImageableArea.right = -500; + fi1a.ImageableArea.bottom = -500; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_SIZE), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_SIZE)\n", res, GetLastError()); + + fi1a.ImageableArea.right = 500; + fi1a.ImageableArea.bottom = 500; + fi1a.Size.cx = -1; + fi1a.Size.cy = -1; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_SIZE), + "returned %d with %d (expected '0' with ERROR_INVALID_FORM_SIZE)\n", res, GetLastError()); + + fi1a.Size.cx = 1; + fi1a.Size.cy = 1; + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + /* needs administrator privileges */ + RETURN_ON_ACCESS_DENIED(res) + ok(res, "returned %d with %d (expected '1')\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = AddFormA(hprinter, 1, (LPBYTE)&fi1a); + ok(!res && (GetLastError() == ERROR_FILE_EXISTS), + "returned %d with %d (expected '0' with ERROR_FILE_EXISTS)\n", res, GetLastError()); + + /* clean up */ + DeleteForm(hprinter, formname_test); +} + +/* ########################### */ + static void test_AddMonitor(void) { MONITOR_INFO_2A mi2a; @@ -644,6 +751,60 @@ static void test_ConfigurePort(void) /* ########################### */ +static void test_DeleteForm(void) +{ + FORM_INFO_1A fi; + HANDLE hprinter = NULL; + DWORD res; + + SetLastError(0xdeadbeef); + res = DeleteFormA(NULL, NULL); + ok(!res && (GetLastError() == ERROR_INVALID_HANDLE), + "returned %d with %d (expected 0 with ERROR_INVALID_HANDLE)\n", res, GetLastError()); + + memset(&fi, 0, sizeof(fi)); + fi.pName = formname_test; + fi.Size.cx = 1; + fi.Size.cy = 1; + fi.ImageableArea.right = 1; + fi.ImageableArea.bottom = 1; + + if (default_printer) + OpenPrinterA(default_printer, &hprinter, NULL); + if (!hprinter) + return; + + if (!AddFormA(hprinter, 1, (LPBYTE)&fi)) + return; + + SetLastError(0xdeadbeef); + res = DeleteFormA(NULL, formname_test); + ok(!res && (GetLastError() == ERROR_INVALID_HANDLE), + "returned %d with %d (expected 0 with ERROR_INVALID_HANDLE)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = DeleteFormA(hprinter, NULL); + ok(!res && (GetLastError() == RPC_X_NULL_REF_POINTER), + "returned %d with %d (expected 0 with RPC_X_NULL_REF_POINTER)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = DeleteFormA(hprinter, empty); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_NAME), + "returned %d with %d (expected 0 with ERROR_INVALID_FORM_NAME)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = DeleteFormA(hprinter, formname_test); + ok(res, "returned %d with %d (expected 1)\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = DeleteFormA(hprinter, formname_test); + ok(!res && (GetLastError() == ERROR_INVALID_FORM_NAME), + "returned %d with %d (expected 0 with ERROR_INVALID_FORM_NAME)\n", res, GetLastError()); + +} + +/* ########################### */ + static void test_DeleteMonitor(void) { MONITOR_INFO_2A mi2a; @@ -2381,10 +2542,12 @@ START_TEST(info) find_local_server(); find_tempfile(); + test_AddForm(); test_AddMonitor(); test_AddPort(); test_AddPortEx(); test_ConfigurePort(); + test_DeleteForm(); test_DeleteMonitor(); test_DeletePort(); test_DeviceCapabilities(); -- 1.5.5.1