Nikolay Sivov : d2d1/tests: Some tests for GetRect() and GetRoundedRect().
Alexandre Julliard
julliard at winehq.org
Wed Nov 9 13:47:01 CST 2016
Module: wine
Branch: master
Commit: adfdfe79b2183c35b16e761ac7bdd3ed924f40db
URL: http://source.winehq.org/git/wine.git/?a=commit;h=adfdfe79b2183c35b16e761ac7bdd3ed924f40db
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue Nov 8 20:14:22 2016 +0300
d2d1/tests: Some tests for GetRect() and GetRoundedRect().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d2d1/tests/d2d1.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 94 insertions(+), 1 deletion(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index 721afa4..04ce2b5 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -55,6 +55,14 @@ static void set_rect(D2D1_RECT_F *rect, float left, float top, float right, floa
rect->bottom = bottom;
}
+static void set_rounded_rect(D2D1_ROUNDED_RECT *rect, float left, float top, float right, float bottom,
+ float radius_x, float radius_y)
+{
+ set_rect(&rect->rect, left, top, right, bottom);
+ rect->radiusX = radius_x;
+ rect->radiusY = radius_y;
+}
+
static void set_rect_u(D2D1_RECT_U *rect, UINT32 left, UINT32 top, UINT32 right, UINT32 bottom)
{
rect->left = left;
@@ -1752,15 +1760,47 @@ static void test_path_geometry(void)
static void test_rectangle_geometry(void)
{
ID2D1RectangleGeometry *geometry;
+ D2D1_RECT_F rect, rect2;
ID2D1Factory *factory;
D2D1_POINT_2F point;
- D2D1_RECT_F rect;
BOOL contains;
HRESULT hr;
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory);
ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr);
+ set_rect(&rect, 0.0f, 0.0f, 0.0f, 0.0f);
+ hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
+ ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
+ ID2D1RectangleGeometry_GetRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.left, rect2.top, rect2.right, rect2.bottom);
+ ID2D1RectangleGeometry_Release(geometry);
+
+ set_rect(&rect, 50.0f, 0.0f, 40.0f, 100.0f);
+ hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
+ ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
+ ID2D1RectangleGeometry_GetRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.left, rect2.top, rect2.right, rect2.bottom);
+ ID2D1RectangleGeometry_Release(geometry);
+
+ set_rect(&rect, 0.0f, 100.0f, 40.0f, 50.0f);
+ hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
+ ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
+ ID2D1RectangleGeometry_GetRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.left, rect2.top, rect2.right, rect2.bottom);
+ ID2D1RectangleGeometry_Release(geometry);
+
+ set_rect(&rect, 50.0f, 100.0f, 40.0f, 50.0f);
+ hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
+ ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
+ ID2D1RectangleGeometry_GetRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.left, rect2.top, rect2.right, rect2.bottom);
+ ID2D1RectangleGeometry_Release(geometry);
+
set_rect(&rect, 0.0f, 0.0f, 10.0f, 20.0f);
hr = ID2D1Factory_CreateRectangleGeometry(factory, &rect, &geometry);
ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
@@ -1809,6 +1849,58 @@ static void test_rectangle_geometry(void)
ID2D1Factory_Release(factory);
}
+static void test_rounded_rectangle_geometry(void)
+{
+ ID2D1RoundedRectangleGeometry *geometry;
+ D2D1_ROUNDED_RECT rect, rect2;
+ ID2D1Factory *factory;
+ HRESULT hr;
+
+ hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory);
+ ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr);
+
+ set_rounded_rect(&rect, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
+ hr = ID2D1Factory_CreateRoundedRectangleGeometry(factory, &rect, &geometry);
+todo_wine
+ ok(SUCCEEDED(hr), "Failed to create geometry, hr %#x.\n", hr);
+ if (FAILED(hr))
+ {
+ ID2D1Factory_Release(factory);
+ return;
+ }
+
+ ID2D1RoundedRectangleGeometry_GetRoundedRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.rect.left, rect2.rect.top, rect2.rect.right, rect2.rect.bottom, rect2.radiusX, rect2.radiusY);
+ ID2D1RoundedRectangleGeometry_Release(geometry);
+
+ /* X radius larger than half width. */
+ set_rounded_rect(&rect, 0.0f, 0.0f, 50.0f, 40.0f, 30.0f, 5.0f);
+ hr = ID2D1Factory_CreateRoundedRectangleGeometry(factory, &rect, &geometry);
+ ID2D1RoundedRectangleGeometry_GetRoundedRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.rect.left, rect2.rect.top, rect2.rect.right, rect2.rect.bottom, rect2.radiusX, rect2.radiusY);
+ ID2D1RoundedRectangleGeometry_Release(geometry);
+
+ /* Y radius larger than half height. */
+ set_rounded_rect(&rect, 0.0f, 0.0f, 50.0f, 40.0f, 5.0f, 30.0f);
+ hr = ID2D1Factory_CreateRoundedRectangleGeometry(factory, &rect, &geometry);
+ ID2D1RoundedRectangleGeometry_GetRoundedRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.rect.left, rect2.rect.top, rect2.rect.right, rect2.rect.bottom, rect2.radiusX, rect2.radiusY);
+ ID2D1RoundedRectangleGeometry_Release(geometry);
+
+ /* Both exceed rectangle size. */
+ set_rounded_rect(&rect, 0.0f, 0.0f, 50.0f, 40.0f, 30.0f, 25.0f);
+ hr = ID2D1Factory_CreateRoundedRectangleGeometry(factory, &rect, &geometry);
+ ID2D1RoundedRectangleGeometry_GetRoundedRect(geometry, &rect2);
+ ok(!memcmp(&rect, &rect2, sizeof(rect)), "Got unexpected rectangle {%.8e, %.8e, %.8e, %.8e, %.8e, %.8e}.\n",
+ rect2.rect.left, rect2.rect.top, rect2.rect.right, rect2.rect.bottom, rect2.radiusX, rect2.radiusY);
+ ID2D1RoundedRectangleGeometry_Release(geometry);
+
+ ID2D1Factory_Release(factory);
+}
+
static void test_bitmap_formats(void)
{
D2D1_BITMAP_PROPERTIES bitmap_desc;
@@ -3249,6 +3341,7 @@ START_TEST(d2d1)
test_bitmap_brush();
test_path_geometry();
test_rectangle_geometry();
+ test_rounded_rectangle_geometry();
test_bitmap_formats();
test_alpha_mode();
test_shared_bitmap();
More information about the wine-cvs
mailing list