Module: wine Branch: master Commit: 09dd10e7f5c0b0133a1d7dede4a1809aa5690a7c URL: http://source.winehq.org/git/wine.git/?a=commit;h=09dd10e7f5c0b0133a1d7dede4...
Author: Henri Verbeet hverbeet@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);