[PATCH] gdi32/tests/dc.c: add test for CreateDC("WINSPOOL",...)

Marcel Partap mpartap at gmx.net
Sun Dec 9 16:38:06 CST 2007


---
 dlls/gdi32/tests/Makefile.in |    2 +-
 dlls/gdi32/tests/dc.c        |   51 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/dlls/gdi32/tests/Makefile.in b/dlls/gdi32/tests/Makefile.in
index 31cc771..b584003 100644
--- a/dlls/gdi32/tests/Makefile.in
+++ b/dlls/gdi32/tests/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 TESTDLL   = gdi32.dll
-IMPORTS   = user32 gdi32 kernel32
+IMPORTS   = user32 gdi32 kernel32 winspool
 
 CTESTS = \
 	bitmap.c \
diff --git a/dlls/gdi32/tests/dc.c b/dlls/gdi32/tests/dc.c
index 72cd155..226a31d 100644
--- a/dlls/gdi32/tests/dc.c
+++ b/dlls/gdi32/tests/dc.c
@@ -27,6 +27,9 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winerror.h"
+#include "winnls.h"
+#include "winspool.h"
+
 
 static void dump_region(HRGN hrgn)
 {
@@ -49,6 +52,53 @@ static void dump_region(HRGN hrgn)
     HeapFree( GetProcessHeap(), 0, data );
 }
 
+static void test_createdc_winspool_printer(LPCSTR printername)
+{
+    HDC winspoolhdc = 0;
+
+    winspoolhdc = CreateDCA("WINSPOOL", printername, NULL, NULL);
+    ok( winspoolhdc != 0, "winspoolhdc = %p\n", winspoolhdc );
+    DeleteDC(winspoolhdc);
+}
+
+static void test_createdc_winspool(void)
+{
+    PPRINTER_INFO_1A pPrinterInfo = NULL;
+    DWORD dwNeeded = 0;
+    DWORD dwSize = 0;
+    DWORD dwPrinterCount;
+    INT i;
+
+    EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 1, NULL, 0, &dwNeeded, &dwPrinterCount);
+    if (dwNeeded > 0)
+    {
+        if (!(pPrinterInfo = HeapAlloc(GetProcessHeap(), 0, dwNeeded)))
+        {
+            trace("allocating %d Bytes on heap failed with LastError() = %d\n", dwNeeded, GetLastError());
+            return;
+        } else
+            dwSize = dwNeeded;
+
+        if (!EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 1, (LPBYTE) pPrinterInfo, dwSize, &dwNeeded, &dwPrinterCount))
+        {
+            trace("EnumPrinters failed with LastError() = %d\n", GetLastError());
+            HeapFree(GetProcessHeap(), 0, pPrinterInfo);
+            return;
+        }
+        for (i = 0; i < dwPrinterCount; i++)
+        {
+            printf("%02d: %s\n", i+1, pPrinterInfo[i].pName);
+            test_createdc_winspool_printer(pPrinterInfo[i].pName);
+        }
+        HeapFree(GetProcessHeap(), 0, pPrinterInfo);
+    }
+    else
+    {
+        trace("EnumPrinters failed with LastError() = %d\n", GetLastError());
+        return;
+    }
+}
+
 static void test_savedc_2(void)
 {
     HWND hwnd;
@@ -175,6 +225,7 @@ static void test_savedc(void)
 
 START_TEST(dc)
 {
+    test_createdc_winspool();
     test_savedc();
     test_savedc_2();
 }
-- 
1.5.3.7


--------------040101030204050907020908--



More information about the wine-patches mailing list