[PATCH 1/7] dxgi/tests: Add test for CreateDXGIFactory2().

Józef Kucia jkucia at codeweavers.com
Wed Feb 14 05:35:48 CST 2018


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 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 58c3bba64230..ee4a22b67d32 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)
-- 
2.13.6




More information about the wine-devel mailing list