From d35a25dfbd9b7dd7d8b9cdc0b158bc7cc6ba8def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Wed, 14 Feb 2018 12:35:48 +0100 Subject: [PATCH] dxgi/tests: Add test for CreateDXGIFactory2(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/dxgi/tests/device.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/dlls/dxgi/tests/device.c b/dlls/dxgi/tests/device.c index 58c3bba6423..ee4a22b67d3 100644 --- a/dlls/dxgi/tests/device.c +++ b/dlls/dxgi/tests/device.c @@ -64,8 +64,6 @@ static HRESULT check_interface_(unsigned int line, void *iface, REFIID iid, "Got hr %#x, expected %#x.\n", hr, expected_hr); if (SUCCEEDED(hr)) IUnknown_Release(out); - else - ok_(__FILE__, line)(!out, "Got unexpected pointer %p.\n", out); return hr; } @@ -2562,7 +2560,7 @@ static void test_create_factory(void) if (!pCreateDXGIFactory1) { - win_skip("CreateDXGIFactory1 not available, skipping tests.\n"); + win_skip("CreateDXGIFactory1 not available.\n"); return; } @@ -2598,6 +2596,33 @@ static void test_create_factory(void) refcount = IUnknown_Release(iface); ok(!refcount, "Factory has %u references left.\n", refcount); } + + if (!pCreateDXGIFactory2) + { + win_skip("CreateDXGIFactory2 not available.\n"); + return; + } + + hr = pCreateDXGIFactory2(0, &IID_IDXGIFactory3, (void **)&iface); + ok(hr == S_OK, "Failed to create factory, hr %#x.\n", hr); + check_interface(iface, &IID_IDXGIFactory, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory1, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory2, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory3, TRUE, FALSE); + /* Not available on all Windows versions. */ + check_interface(iface, &IID_IDXGIFactory4, TRUE, TRUE); + todo_wine check_interface(iface, &IID_IDXGIFactory5, TRUE, TRUE); + refcount = IUnknown_Release(iface); + ok(!refcount, "Factory has %u references left.\n", refcount); + + hr = pCreateDXGIFactory2(0, &IID_IDXGIFactory, (void **)&iface); + ok(hr == S_OK, "Failed to create factory, hr %#x.\n", hr); + check_interface(iface, &IID_IDXGIFactory, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory1, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory2, TRUE, FALSE); + check_interface(iface, &IID_IDXGIFactory3, TRUE, FALSE); + refcount = IUnknown_Release(iface); + ok(!refcount, "Factory has %u references left.\n", refcount); } static void test_private_data(void)