- Sync to wine release 1.1.39.
authorJames Tabor <james.tabor@reactos.org>
Sun, 21 Feb 2010 03:00:07 +0000 (03:00 +0000)
committerJames Tabor <james.tabor@reactos.org>
Sun, 21 Feb 2010 03:00:07 +0000 (03:00 +0000)
svn path=/trunk/; revision=45642

rostests/winetests/gdi32/clipping.c
rostests/winetests/gdi32/font.c

index 06cb22a..0bca179 100644 (file)
@@ -265,8 +265,96 @@ static void test_ExtCreateRegion(void)
     DeleteObject(hrgn);
 }
 
+static void test_GetClipRgn(void)
+{
+    HDC hdc;
+    HRGN hrgn, hrgn2, hrgn3, hrgn4;
+    int ret;
+
+    /* Test calling GetClipRgn with NULL device context and region handles. */
+    ret = GetClipRgn(NULL, NULL);
+    ok(ret == -1, "Expected GetClipRgn to return -1, got %d\n", ret);
+
+    hdc = GetDC(NULL);
+    ok(hdc != NULL, "Expected GetDC to return a valid device context handle\n");
+
+    /* Test calling GetClipRgn with a valid device context and NULL region. */
+    ret = GetClipRgn(hdc, NULL);
+    ok(ret == 0 ||
+       ret == -1 /* Win9x */,
+       "Expected GetClipRgn to return 0, got %d\n", ret);
+
+    /* Initialize the test regions. */
+    hrgn = CreateRectRgn(100, 100, 100, 100);
+    ok(hrgn != NULL,
+       "Expected CreateRectRgn to return a handle to a new rectangular region\n");
+
+    hrgn2 = CreateRectRgn(1, 2, 3, 4);
+    ok(hrgn2 != NULL,
+       "Expected CreateRectRgn to return a handle to a new rectangular region\n");
+
+    hrgn3 = CreateRectRgn(1, 2, 3, 4);
+    ok(hrgn3 != NULL,
+       "Expected CreateRectRgn to return a handle to a new rectangular region\n");
+
+    hrgn4 = CreateRectRgn(1, 2, 3, 4);
+    ok(hrgn4 != NULL,
+       "Expected CreateRectRgn to return a handle to a new rectangular region\n");
+
+    /* Try getting a clipping region from the device context
+     * when the device context's clipping region isn't set. */
+    ret = GetClipRgn(hdc, hrgn2);
+    ok(ret == 0, "Expected GetClipRgn to return 0, got %d\n", ret);
+
+    /* The region passed to GetClipRgn should be unchanged. */
+    ret = EqualRgn(hrgn2, hrgn3);
+    ok(ret == 1,
+       "Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
+
+    /* Try setting and getting back a clipping region. */
+    ret = SelectClipRgn(hdc, hrgn);
+    ok(ret == NULLREGION,
+       "Expected SelectClipRgn to return NULLREGION, got %d\n", ret);
+
+    /* Passing a NULL region handle when the device context
+     * has a clipping region results in an error. */
+    ret = GetClipRgn(hdc, NULL);
+    ok(ret == -1, "Expected GetClipRgn to return -1, got %d\n", ret);
+
+    ret = GetClipRgn(hdc, hrgn2);
+    ok(ret == 1, "Expected GetClipRgn to return 1, got %d\n", ret);
+
+    ret = EqualRgn(hrgn, hrgn2);
+    ok(ret == 1,
+       "Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
+
+    /* Try unsetting and then query the clipping region. */
+    ret = SelectClipRgn(hdc, NULL);
+    ok(ret == SIMPLEREGION,
+       "Expected SelectClipRgn to return SIMPLEREGION, got %d\n", ret);
+
+    ret = GetClipRgn(hdc, NULL);
+    ok(ret == 0 ||
+       ret == -1 /* Win9x */,
+       "Expected GetClipRgn to return 0, got %d\n", ret);
+
+    ret = GetClipRgn(hdc, hrgn3);
+    ok(ret == 0, "Expected GetClipRgn to return 0, got %d\n", ret);
+
+    ret = EqualRgn(hrgn3, hrgn4);
+    ok(ret == 1,
+       "Expected EqualRgn to compare the two regions as equal, got %d\n", ret);
+
+    DeleteObject(hrgn4);
+    DeleteObject(hrgn3);
+    DeleteObject(hrgn2);
+    DeleteObject(hrgn);
+    ReleaseDC(NULL, hdc);
+}
+
 START_TEST(clipping)
 {
     test_GetRandomRgn();
     test_ExtCreateRegion();
+    test_GetClipRgn();
 }
index 70d3f30..87ca494 100644 (file)
@@ -308,9 +308,6 @@ static void test_bitmap_font(void)
     SIZE size_orig;
     INT ret, i, width_orig, height_orig, scale, lfWidth;
 
-    skip("ROS-HACK: Skipping bitmap font tests!\n");
-    return;
-
     hdc = GetDC(0);
 
     /* "System" has only 1 pixel size defined, otherwise the test breaks */
@@ -2851,7 +2848,7 @@ static void test_orientation(void)
 static void test_oemcharset(void)
 {
     HDC hdc;
-    LOGFONTA lf;
+    LOGFONTA lf, clf;
     HFONT hfont, old_hfont;
     int charset;
 
@@ -2866,7 +2863,12 @@ static void test_oemcharset(void)
     charset = GetTextCharset(hdc);
 todo_wine
     ok(charset == OEM_CHARSET, "expected %d charset, got %d\n", OEM_CHARSET, charset);
-    SelectObject(hdc, old_hfont);
+    hfont = SelectObject(hdc, old_hfont);
+    GetObjectA(hfont, sizeof(clf), &clf);
+    ok(!lstrcmpA(clf.lfFaceName, lf.lfFaceName), "expected %s face name, got %s\n", lf.lfFaceName, clf.lfFaceName);
+    ok(clf.lfPitchAndFamily == lf.lfPitchAndFamily, "expected %x family, got %x\n", lf.lfPitchAndFamily, clf.lfPitchAndFamily);
+    ok(clf.lfCharSet == lf.lfCharSet, "expected %d charset, got %d\n", lf.lfCharSet, clf.lfCharSet);
+    ok(clf.lfHeight == lf.lfHeight, "expected %d height, got %d\n", lf.lfHeight, clf.lfHeight);
     DeleteObject(hfont);
     DeleteDC(hdc);
 }