Henri Verbeet : dxgi/tests: Add some tests for IDXGIObject::GetParent().

Alexandre Julliard julliard at winehq.org
Thu Dec 3 10:29:54 CST 2009


Module: wine
Branch: master
Commit: 09dd10e7f5c0b0133a1d7dede4a1809aa5690a7c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=09dd10e7f5c0b0133a1d7dede4a1809aa5690a7c

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Dec  3 11:38:22 2009 +0100

dxgi/tests: Add some tests for IDXGIObject::GetParent().

---

 dlls/dxgi/tests/device.c |   44 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/dlls/dxgi/tests/device.c b/dlls/dxgi/tests/device.c
index 12893b1..491616c 100644
--- a/dlls/dxgi/tests/device.c
+++ b/dlls/dxgi/tests/device.c
@@ -121,6 +121,49 @@ static void test_create_surface(IDXGIDevice *device)
     IDXGISurface_Release(surface);
 }
 
+static void test_parents(IDXGIDevice *device)
+{
+    IDXGIFactory *factory;
+    IDXGIAdapter *adapter;
+    IDXGIOutput *output;
+    IUnknown *parent;
+    HRESULT hr;
+
+    hr = IDXGIDevice_GetAdapter(device, &adapter);
+    ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr);
+
+    hr = IDXGIAdapter_EnumOutputs(adapter, 0, &output);
+    if (hr == DXGI_ERROR_NOT_FOUND)
+    {
+        skip("Adapter has not outputs, skipping output tests.\n");
+    }
+    else
+    {
+        ok(SUCCEEDED(hr), "EnumOutputs failed, hr %#x.\n", hr);
+
+        hr = IDXGIOutput_GetParent(output, &IID_IDXGIAdapter, (void **)&parent);
+        IDXGIOutput_Release(output);
+        ok(SUCCEEDED(hr), "GetParent failed, hr %#x.\n", hr);
+        ok(parent == (IUnknown *)adapter, "Got parent %p, expected %p.\n", parent, adapter);
+        IUnknown_Release(parent);
+    }
+
+    hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory);
+    ok(SUCCEEDED(hr), "GetParent failed, hr %#x.\n", hr);
+
+    hr = IDXGIFactory_GetParent(factory, &IID_IUnknown, (void **)&parent);
+    ok(hr == E_NOINTERFACE, "GetParent returned %#x, expected %#x.\n", hr, E_NOINTERFACE);
+    ok(parent == NULL, "Got parent %p, expected %p.\n", parent, NULL);
+    IDXGIFactory_Release(factory);
+
+    hr = IDXGIDevice_GetParent(device, &IID_IDXGIAdapter, (void **)&parent);
+    ok(SUCCEEDED(hr), "GetParent failed, hr %#x.\n", hr);
+    ok(parent == (IUnknown *)adapter, "Got parent %p, expected %p.\n", parent, adapter);
+    IUnknown_Release(parent);
+
+    IDXGIAdapter_Release(adapter);
+}
+
 START_TEST(device)
 {
     HMODULE d3d10core = LoadLibraryA("d3d10core.dll");
@@ -143,6 +186,7 @@ START_TEST(device)
 
     test_device_interfaces(device);
     test_create_surface(device);
+    test_parents(device);
 
     refcount = IDXGIDevice_Release(device);
     ok(!refcount, "Device has %u references left\n", refcount);




More information about the wine-cvs mailing list