From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/d2d1/tests/d2d1.c | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c index 625ad53292f..a76f37ce57b 100644 --- a/dlls/d2d1/tests/d2d1.c +++ b/dlls/d2d1/tests/d2d1.c @@ -15439,6 +15439,51 @@ static void test_effect_blob_property(BOOL d3d11) release_test_context(&ctx); }
+static void test_get_dxgi_device(BOOL d3d11) +{ + IDXGIDevice *dxgi_device = NULL; + struct d2d1_test_context ctx; + ID2D1Device2 *device2; + ID2D1Device *device; + HRESULT hr; + + if (!init_test_context(&ctx, d3d11)) + return; + + if (!ctx.factory1) + { + win_skip("ID2D1Factory1 is not supported.\n"); + release_test_context(&ctx); + return; + } + + hr = ID2D1Factory1_CreateDevice(ctx.factory1, ctx.device, &device); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + hr = ID2D1Device_QueryInterface(device, &IID_ID2D1Device2, (void **)&device2); + if (FAILED(hr)) + { + win_skip("ID2D1Device2 is not supported.\n"); + ID2D1Device_Release(device); + release_test_context(&ctx); + return; + } + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + hr = ID2D1Device2_GetDxgiDevice(device2, &dxgi_device); + todo_wine + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + if (hr == S_OK) + { + ok(dxgi_device == ctx.device, "Got unexpected IDXGIDevice.\n"); + IDXGIDevice_Release(dxgi_device); + } + + ID2D1Device2_Release(device2); + ID2D1Device_Release(device); + release_test_context(&ctx); +} + START_TEST(d2d1) { HMODULE d2d1_dll = GetModuleHandleA("d2d1.dll"); @@ -15536,6 +15581,7 @@ START_TEST(d2d1) queue_test(test_compute_geometry_area); queue_test(test_wic_target_format); queue_test(test_effect_blob_property); + queue_test(test_get_dxgi_device);
run_queued_tests(); }