Henri Verbeet : comdlg32: Add a test for AbortProc handling.

Alexandre Julliard julliard at winehq.org
Wed Oct 8 08:32:31 CDT 2008


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Oct  7 16:01:01 2008 +0200

comdlg32: Add a test for AbortProc handling.

---

 dlls/comdlg32/tests/Makefile.in |    2 +-
 dlls/comdlg32/tests/printdlg.c  |   72 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 1 deletions(-)

diff --git a/dlls/comdlg32/tests/Makefile.in b/dlls/comdlg32/tests/Makefile.in
index c3bf0cb..fae9717 100644
--- a/dlls/comdlg32/tests/Makefile.in
+++ b/dlls/comdlg32/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 TESTDLL   = comdlg32.dll
-IMPORTS   = comdlg32 user32 kernel32
+IMPORTS   = comdlg32 user32 gdi32 kernel32
 
 CTESTS = \
 	filedlg.c \
diff --git a/dlls/comdlg32/tests/printdlg.c b/dlls/comdlg32/tests/printdlg.c
index fef274d..cb86d62 100644
--- a/dlls/comdlg32/tests/printdlg.c
+++ b/dlls/comdlg32/tests/printdlg.c
@@ -289,6 +289,77 @@ static void test_PrintDlgExW(void)
 
 }
 
+static BOOL abort_proc_called = FALSE;
+static BOOL CALLBACK abort_proc(HDC hdc, int error) { return abort_proc_called = TRUE; }
+static void test_abort_proc(void)
+{
+    HDC print_dc;
+    RECT rect = {0, 0, 100, 100};
+    DOCINFOA doc_info = {0};
+    PRINTDLGA pd = {0};
+    char filename[MAX_PATH];
+
+    if (!GetTempFileNameA(".", "prn", 0, filename))
+    {
+        skip("Failed to create a temporary file name\n");
+        return;
+    }
+
+    pd.lStructSize = sizeof(pd);
+    pd.Flags = PD_RETURNDEFAULT | PD_ALLPAGES | PD_RETURNDC | PD_PRINTTOFILE;
+    pd.nFromPage = 1;
+    pd.nToPage = 1;
+    pd.nCopies = 1;
+
+    if (!PrintDlgA(&pd))
+    {
+        skip("No default printer available.\n");
+        ok(DeleteFileA(filename), "Failed to delete temporary file\n");
+        return;
+    }
+
+    ok(pd.hDC != NULL, "PrintDlg didn't return a DC.\n");
+    if (!(print_dc = pd.hDC))
+    {
+        ok(DeleteFileA(filename), "Failed to delete temporary file\n");
+        return;
+    }
+
+    ok(SetAbortProc(print_dc, abort_proc) > 0, "SetAbortProc failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by SetAbortProc.\n");
+    abort_proc_called = FALSE;
+
+    doc_info.cbSize = sizeof(doc_info);
+    doc_info.lpszDocName = "Some document";
+    doc_info.lpszOutput = filename;
+
+    ok(StartDocA(print_dc, &doc_info) > 0, "StartDocA failed\n");
+    ok(abort_proc_called, "AbortProc didn't get called by StartDoc.\n");
+    abort_proc_called = FALSE;
+
+    ok(StartPage(print_dc) > 0, "StartPage failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by StartPage.\n");
+    abort_proc_called = FALSE;
+
+    ok(FillRect(print_dc, &rect, (HBRUSH)(COLOR_BACKGROUND + 1)), "FillRect failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by StretchBlt.\n");
+    abort_proc_called = FALSE;
+
+    ok(EndPage(print_dc) > 0, "EndPage failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by EndPage.\n");
+    abort_proc_called = FALSE;
+
+    ok(EndDoc(print_dc) > 0, "EndDoc failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by EndDoc.\n");
+    abort_proc_called = FALSE;
+
+    ok(DeleteDC(print_dc), "DeleteDC failed\n");
+    ok(!abort_proc_called, "AbortProc got called unexpectedly by DeleteDC.\n");
+    abort_proc_called = FALSE;
+
+    ok(DeleteFileA(filename), "Failed to delete temporary file\n");
+}
+
 /* ########################### */
 
 START_TEST(printdlg)
@@ -299,6 +370,7 @@ START_TEST(printdlg)
 
     test_PageSetupDlgA();
     test_PrintDlgA();
+    test_abort_proc();
 
     /* PrintDlgEx not present before w2k */
     if (ptr) {




More information about the wine-cvs mailing list