Module: wine Branch: master Commit: 23d78ff2b89ee8831a9edc2765138289aa581815 URL: http://source.winehq.org/git/wine.git/?a=commit;h=23d78ff2b89ee8831a9edc2765...
Author: Detlef Riekenberg wine.dev@web.de Date: Fri Oct 26 00:33:48 2007 +0200
comdlg32/tests: Initial tests for PrintDlgExW.
---
dlls/comdlg32/tests/printdlg.c | 100 ++++++++++++++++++++++++++++++++++++++- 1 files changed, 97 insertions(+), 3 deletions(-)
diff --git a/dlls/comdlg32/tests/printdlg.c b/dlls/comdlg32/tests/printdlg.c index e458a2f..9842b17 100644 --- a/dlls/comdlg32/tests/printdlg.c +++ b/dlls/comdlg32/tests/printdlg.c @@ -33,12 +33,40 @@
#include "wine/test.h"
-/* ######## */ +/* ########################### */ + +static HMODULE hcomdlg32; +static HRESULT (WINAPI * pPrintDlgExA)(LPPRINTDLGEXA); +static HRESULT (WINAPI * pPrintDlgExW)(LPPRINTDLGEXW); + +/* ########################### */
static const CHAR emptyA[] = ""; static const CHAR PrinterPortsA[] = "PrinterPorts";
-/* ######## */ +/* ########################### */ + +static LPCSTR load_functions(void) +{ + LPCSTR ptr; + + ptr = "comdlg32.dll"; + hcomdlg32 = LoadLibraryA(ptr); + if (!hcomdlg32) return ptr; + + ptr = "PrintDlgExA"; + pPrintDlgExA = (void *) GetProcAddress(hcomdlg32, ptr); + if (!pPrintDlgExA) return ptr; + + ptr = "PrintDlgExW"; + pPrintDlgExW = (void *) GetProcAddress(hcomdlg32, ptr); + if (!pPrintDlgExW) return ptr; + + return NULL; + +} + +/* ########################### */
static void test_PageSetupDlgA(void) { @@ -98,7 +126,7 @@ static void test_PageSetupDlgA(void)
}
-/* ##### */ +/* ########################### */
static void test_PrintDlgA(void) { @@ -210,10 +238,76 @@ static void test_PrintDlgA(void)
}
+/* ########################### */ + +static void test_PrintDlgExW(void) +{ + LPPRINTDLGEXW pDlg; + HRESULT res; + + /* Set CommDlgExtendedError != 0 */ + PrintDlg(NULL); + SetLastError(0xdeadbeef); + res = pPrintDlgExW(NULL); + ok( (res == E_INVALIDARG), + "got 0x%x with %u and %u (expected 'E_INVALIDARG')\n", + res, GetLastError(), CommDlgExtendedError()); + + + pDlg = HeapAlloc(GetProcessHeap(), 0, (sizeof(PRINTDLGEXW)) + 8); + if (!pDlg) return; + + /* lStructSize must be exact */ + ZeroMemory(pDlg, sizeof(PRINTDLGEXW)); + pDlg->lStructSize = sizeof(PRINTDLGEXW) - 1; + PrintDlg(NULL); + SetLastError(0xdeadbeef); + res = pPrintDlgExW(pDlg); + ok( (res == E_INVALIDARG), + "got 0x%x with %u and %u (expected 'E_INVALIDARG')\n", + res, GetLastError(), CommDlgExtendedError()); + + + ZeroMemory(pDlg, sizeof(PRINTDLGEXW)); + pDlg->lStructSize = sizeof(PRINTDLGEXW) + 1; + PrintDlg(NULL); + SetLastError(0xdeadbeef); + res = pPrintDlgExW(pDlg); + ok( (res == E_INVALIDARG), + "got 0x%x with %u and %u (expected 'E_INVALIDARG')\n", + res, GetLastError(), CommDlgExtendedError()); + + + ZeroMemory(pDlg, sizeof(PRINTDLGEXW)); + pDlg->lStructSize = sizeof(PRINTDLGEXW); + SetLastError(0xdeadbeef); + res = pPrintDlgExW(pDlg); + ok( (res == E_HANDLE), + "got 0x%x with %u and %u (expected 'E_HANDLE')\n", + res, GetLastError(), CommDlgExtendedError()); + + + HeapFree(GetProcessHeap(), 0, pDlg); + return; + +} + +/* ########################### */
START_TEST(printdlg) { + LPCSTR ptr; + + ptr = load_functions(); + test_PageSetupDlgA(); test_PrintDlgA();
+ /* PrintDlgEx not present before w2k */ + if (ptr) { + skip("%s\n", ptr); + return; + } + + test_PrintDlgExW(); }