[PATCH 2/4] d2d1/tests: Factor tests initialization sequence.
Rémi Bernon
rbernon at codeweavers.com
Thu Jan 7 13:43:54 CST 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/d2d1/tests/d2d1.c | 285 +++++++++--------------------------------
1 file changed, 57 insertions(+), 228 deletions(-)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index ec4fb093635..78a16a90252 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -1110,6 +1110,26 @@ static void geometry_sink_check_(unsigned int line, const struct geometry_sink *
}
}
+#define init_test(a, b, c, d, e) init_test_(__LINE__, a, b, c, d, e)
+static BOOL init_test_(int line, IDXGIDevice **device, HWND *window, IDXGISwapChain **swapchain, IDXGISurface **surface, ID2D1RenderTarget **rt)
+{
+ HRESULT hr;
+
+ if (!(*device = create_device()))
+ {
+ skip_(__FILE__, line)("Failed to create device, skipping tests.\n");
+ return FALSE;
+ }
+ *window = create_window();
+ *swapchain = create_swapchain(*device, *window, TRUE);
+ hr = IDXGISwapChain_GetBuffer(*swapchain, 0, &IID_IDXGISurface, (void **)surface);
+ ok_(__FILE__, line)(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ *rt = create_render_target(*surface);
+ ok_(__FILE__, line)(!!*rt, "Failed to create render target.\n");
+
+ return TRUE;
+}
+
static void test_clip(void)
{
IDXGISwapChain *swapchain;
@@ -1133,17 +1153,8 @@ static void test_clip(void)
0.0f, 0.0f,
}}};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_GetDpi(rt, &dpi_x, &dpi_y);
ok(dpi_x == 96.0f, "Got unexpected dpi_x %.8e.\n", dpi_x);
@@ -1351,17 +1362,9 @@ static void test_state_block(void)
11.0f, 12.0f,
}}};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, &IID_IDWriteFactory, (IUnknown **)&dwrite_factory);
ok(SUCCEEDED(hr), "Failed to create dwrite factory, hr %#x.\n", hr);
@@ -1607,17 +1610,8 @@ static void test_color_brush(void)
HRESULT hr;
BOOL match;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -1746,17 +1740,8 @@ static void test_bitmap_brush(void)
0xffffffff, 0xff000000, 0xff000000, 0xff000000,
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2050,17 +2035,8 @@ static void test_linear_brush(void)
{520, 390, 0xff90ae40},
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2256,17 +2232,8 @@ static void test_radial_brush(void)
{520, 390, 0xff4059e6},
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -2862,17 +2829,9 @@ static void test_path_geometry(void)
{D2D1_FIGURE_BEGIN_HOLLOW, D2D1_FIGURE_END_OPEN, { 40.0f, 20.0f}, 2, &expected_segments[172]},
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -3963,17 +3922,8 @@ static void test_bitmap_formats(void)
{DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, 0x8a},
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
bitmap_desc.dpiX = 96.0f;
bitmap_desc.dpiY = 96.0f;
@@ -4032,17 +3982,8 @@ static void test_alpha_mode(void)
0x7f7f7f7f, 0x7f000000, 0x7f000000, 0x7f000000,
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4241,7 +4182,7 @@ static void test_shared_bitmap(void)
ID2D1GdiInteropRenderTarget *interop;
D2D1_RENDER_TARGET_PROPERTIES desc;
D2D1_BITMAP_PROPERTIES bitmap_desc;
- ID2D1RenderTarget *rt1, *rt2, *rt3;
+ ID2D1RenderTarget *rt, *rt1, *rt2, *rt3;
IDXGISurface *surface1, *surface2;
ID2D1Factory *factory1, *factory2;
IDXGIDevice *device1, *device2;
@@ -4254,18 +4195,12 @@ static void test_shared_bitmap(void)
HWND window1, window2;
HRESULT hr;
- if (!(device1 = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device1, &window1, &swapchain1, &surface1, &rt))
return;
- }
+ ID2D1RenderTarget_Release(rt);
- window1 = create_window();
window2 = create_window();
- swapchain1 = create_swapchain(device1, window1, TRUE);
swapchain2 = create_swapchain(device1, window2, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain1, 0, &IID_IDXGISurface, (void **)&surface1);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
hr = IDXGISwapChain_GetBuffer(swapchain2, 0, &IID_IDXGISurface, (void **)&surface2);
ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
@@ -4514,17 +4449,8 @@ static void test_bitmap_updates(void)
0xffffffff, 0xff000000, 0xff000000, 0xff000000,
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
ID2D1RenderTarget_SetAntialiasMode(rt, D2D1_ANTIALIAS_MODE_ALIASED);
@@ -4622,17 +4548,9 @@ static void test_opacity_brush(void)
0xffffffff, 0x40000000, 0x40000000, 0xff000000,
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -4800,15 +4718,9 @@ static void test_create_target(void)
};
unsigned int i;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ ID2D1RenderTarget_Release(rt);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory);
ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr);
@@ -4917,15 +4829,9 @@ static void test_draw_text_layout(void)
D2D1_RECT_F rect;
unsigned int i;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ ID2D1RenderTarget_Release(rt);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory, NULL, (void **)&factory);
ok(SUCCEEDED(hr), "Failed to create factory, hr %#x.\n", hr);
@@ -5812,17 +5718,8 @@ static void test_gradient(void)
HWND window;
HRESULT hr;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
stops2[0].position = 0.5f;
set_color(&stops2[0].color, 1.0f, 1.0f, 0.0f, 1.0f);
@@ -5880,17 +5777,9 @@ static void test_draw_geometry(void)
HRESULT hr;
BOOL match;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -6807,17 +6696,9 @@ static void test_fill_geometry(void)
HRESULT hr;
BOOL match;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -7745,17 +7626,9 @@ static void test_layer(void)
HWND window;
HRESULT hr;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -7805,17 +7678,9 @@ static void test_bezier_intersect(void)
HRESULT hr;
BOOL match;
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
ID2D1RenderTarget_GetFactory(rt, &factory);
ID2D1RenderTarget_SetDpi(rt, 192.0f, 48.0f);
@@ -8231,11 +8096,8 @@ static void test_bitmap_surface(void)
IWICBitmap *wic_bitmap;
IWICImagingFactory *wic_factory;
- if (!(d3d_device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt))
return;
- }
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory)))
{
@@ -8244,14 +8106,6 @@ static void test_bitmap_surface(void)
return;
}
- /* DXGI target */
- window = create_window();
- swapchain = create_swapchain(d3d_device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
-
hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context);
ok(SUCCEEDED(hr), "Failed to get device context, hr %#x.\n", hr);
@@ -8465,11 +8319,8 @@ static void test_device_context(void)
IWICBitmap *wic_bitmap;
IWICImagingFactory *wic_factory;
- if (!(d3d_device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt))
return;
- }
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory)))
{
@@ -8501,14 +8352,6 @@ static void test_device_context(void)
ID2D1DeviceContext_Release(device_context);
- /* DXGI target */
- window = create_window();
- swapchain = create_swapchain(d3d_device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
-
hr = ID2D1RenderTarget_QueryInterface(rt, &IID_ID2D1DeviceContext, (void **)&device_context);
ok(SUCCEEDED(hr), "Failed to get device context interface, hr %#x.\n", hr);
ID2D1DeviceContext_GetTarget(device_context, (ID2D1Image **)&bitmap);
@@ -9160,6 +9003,7 @@ static void test_dpi(void)
IWICImagingFactory *wic_factory;
IDXGISwapChain *swapchain;
IDXGIDevice *d3d_device;
+ ID2D1RenderTarget *rt;
ID2D1Factory1 *factory;
IDXGISurface *surface;
ID2D1Bitmap1 *bitmap;
@@ -9187,11 +9031,9 @@ static void test_dpi(void)
static const float dc_dpi_x = 120.0f, dc_dpi_y = 144.0f;
unsigned int i;
- if (!(d3d_device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&d3d_device, &window, &swapchain, &surface, &rt))
return;
- }
+ ID2D1RenderTarget_Release(rt);
if (FAILED(D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &IID_ID2D1Factory1, NULL, (void **)&factory)))
{
@@ -9200,11 +9042,6 @@ static void test_dpi(void)
return;
}
- window = create_window();
- swapchain = create_swapchain(d3d_device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-
device_context = create_device_context(factory, d3d_device);
ok(!!device_context, "Failed to create device context.\n");
@@ -9404,17 +9241,9 @@ static void test_wic_bitmap_format(void)
{&GUID_WICPixelFormat32bppBGR, {DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE}},
};
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests.\n");
+ if (!init_test(&device, &window, &swapchain, &surface, &rt))
return;
- }
- window = create_window();
- swapchain = create_swapchain(device, window, TRUE);
- hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(hr == S_OK, "Failed to get buffer, hr %#x.\n", hr);
- rt = create_render_target(surface);
- ok(!!rt, "Failed to create render target.\n");
+
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER,
--
2.29.2
More information about the wine-devel
mailing list