Detlef Riekenberg : comdlg32/tests: Test more parameters for PrintDlgEx.

Alexandre Julliard julliard at winehq.org
Tue Mar 27 12:48:05 CDT 2012


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

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sun Mar 18 22:14:19 2012 +0100

comdlg32/tests: Test more parameters for PrintDlgEx.

---

 dlls/comdlg32/tests/printdlg.c |   81 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 81 insertions(+), 0 deletions(-)

diff --git a/dlls/comdlg32/tests/printdlg.c b/dlls/comdlg32/tests/printdlg.c
index 8597d5f..2eaf9d4 100644
--- a/dlls/comdlg32/tests/printdlg.c
+++ b/dlls/comdlg32/tests/printdlg.c
@@ -212,7 +212,9 @@ static void test_PrintDlgA(void)
 
 static void test_PrintDlgExW(void)
 {
+    PRINTPAGERANGE pagerange[2];
     LPPRINTDLGEXW pDlg;
+    DEVNAMES *dn;
     HRESULT res;
 
     /* PrintDlgEx not present before w2k */
@@ -262,6 +264,85 @@ static void test_PrintDlgExW(void)
         "got 0x%x with %u and %u (expected 'E_HANDLE')\n",
         res, GetLastError(), CommDlgExtendedError());
 
+    /* nStartPage must be START_PAGE_GENERAL for the general page or a valid property sheet index */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING | PD_NOPAGENUMS;
+    res = pPrintDlgExW(pDlg);
+    ok((res == E_INVALIDARG), "got 0x%x (expected 'E_INVALIDARG')\n", res);
+
+    /* Use PD_NOPAGENUMS or set nMaxPageRanges and lpPageRanges */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING;
+    pDlg->nStartPage = START_PAGE_GENERAL;
+    res = pPrintDlgExW(pDlg);
+    ok((res == E_INVALIDARG), "got 0x%x (expected 'E_INVALIDARG')\n", res);
+
+    /* this is invalid: a valid lpPageRanges with 0 for nMaxPageRanges */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING;
+    pDlg->lpPageRanges = pagerange;
+    pDlg->nStartPage = START_PAGE_GENERAL;
+    res = pPrintDlgExW(pDlg);
+    ok((res == E_INVALIDARG), "got 0x%x (expected 'E_INVALIDARG')\n", res);
+
+    /* this is invalid: NULL for lpPageRanges with a valid nMaxPageRanges */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING;
+    pDlg->nMaxPageRanges = 1;
+    pDlg->nStartPage = START_PAGE_GENERAL;
+    res = pPrintDlgExW(pDlg);
+    ok((res == E_INVALIDARG), "got 0x%x (expected 'E_INVALIDARG')\n", res);
+
+    /* this works: lpPageRanges with a valid nMaxPageRanges */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING;
+    pDlg->nMaxPageRanges = 1;
+    pDlg->lpPageRanges = pagerange;
+    pDlg->nStartPage = START_PAGE_GENERAL;
+    res = pPrintDlgExW(pDlg);
+    if (res == E_FAIL)
+    {
+        skip("No printer configured.\n");
+        HeapFree(GetProcessHeap(), 0, pDlg);
+        return;
+    }
+
+    ok(res == S_OK, "got 0x%x (expected S_OK)\n", res);
+
+    dn = GlobalLock(pDlg->hDevNames);
+    ok(dn != NULL, "expected '!= NULL' for GlobalLock(%p)\n",pDlg->hDevNames);
+    if (dn)
+    {
+        ok(dn->wDriverOffset, "(expected '!= 0' for wDriverOffset)\n");
+        ok(dn->wDeviceOffset, "(expected '!= 0' for wDeviceOffset)\n");
+        ok(dn->wOutputOffset, "(expected '!= 0' for wOutputOffset)\n");
+        ok(dn->wDefault == DN_DEFAULTPRN, "got 0x%x (expected DN_DEFAULTPRN)\n", dn->wDefault);
+
+        GlobalUnlock(pDlg->hDevNames);
+    }
+    GlobalFree(pDlg->hDevMode);
+    GlobalFree(pDlg->hDevNames);
+
+    /* this works also: PD_NOPAGENUMS */
+    ZeroMemory(pDlg, sizeof(PRINTDLGEXW));
+    pDlg->lStructSize = sizeof(PRINTDLGEXW);
+    pDlg->hwndOwner = GetDesktopWindow();
+    pDlg->Flags = PD_RETURNDEFAULT | PD_NOWARNING | PD_NOPAGENUMS;
+    pDlg->nStartPage = START_PAGE_GENERAL;
+    res = pPrintDlgExW(pDlg);
+    ok(res == S_OK, "got 0x%x (expected S_OK)\n", res);
+    GlobalFree(pDlg->hDevMode);
+    GlobalFree(pDlg->hDevNames);
 
     HeapFree(GetProcessHeap(), 0, pDlg);
     return;




More information about the wine-cvs mailing list