Module: wine Branch: master Commit: 9ea9a053b9d28cff9ae3aa1d2c684192d1df2e39 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9ea9a053b9d28cff9ae3aa1d2c...
Author: Rico Schüller kgbricola@web.de Date: Sun Mar 27 22:13:02 2011 +0200
d3dx9/tests: Add ID3DXEffectCompiler test.
---
dlls/d3dx9_36/tests/effect.c | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c index 6f4b674..483efd4 100644 --- a/dlls/d3dx9_36/tests/effect.c +++ b/dlls/d3dx9_36/tests/effect.c @@ -117,6 +117,60 @@ static void test_create_effect_and_pool(IDirect3DDevice9 *device) ok(count == 0, "Release failed %u\n", count); }
+static void test_create_effect_compiler(void) +{ + HRESULT hr; + ID3DXEffectCompiler *compiler, *compiler2; + ID3DXBaseEffect *base; + IUnknown *unknown; + ULONG count; + + hr = D3DXCreateEffectCompiler(NULL, 0, NULL, NULL, 0, &compiler, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(NULL, 0, NULL, NULL, 0, NULL, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(effect_desc, 0, NULL, NULL, 0, &compiler, NULL); + ok(hr == D3D_OK, "Got result %x, expected %x (D3D_OK)\n", hr, D3D_OK); + + count = compiler->lpVtbl->Release(compiler); + ok(count == 0, "Release failed %u\n", count); + + hr = D3DXCreateEffectCompiler(effect_desc, 0, NULL, NULL, 0, NULL, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(NULL, sizeof(effect_desc), NULL, NULL, 0, &compiler, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(NULL, sizeof(effect_desc), NULL, NULL, 0, NULL, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(effect_desc, sizeof(effect_desc), NULL, NULL, 0, NULL, NULL); + ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL); + + hr = D3DXCreateEffectCompiler(effect_desc, sizeof(effect_desc), NULL, NULL, 0, &compiler, NULL); + ok(hr == D3D_OK, "Got result %x, expected %x (D3D_OK)\n", hr, D3D_OK); + + hr = compiler->lpVtbl->QueryInterface(compiler, &IID_ID3DXBaseEffect, (void **)&base); + ok(hr == E_NOINTERFACE, "QueryInterface failed, got %x, expected %x (E_NOINTERFACE)\n", hr, E_NOINTERFACE); + + hr = compiler->lpVtbl->QueryInterface(compiler, &IID_ID3DXEffectCompiler, (void **)&compiler2); + ok(hr == D3D_OK, "QueryInterface failed, got %x, expected %x (D3D_OK)\n", hr, D3D_OK); + + hr = compiler->lpVtbl->QueryInterface(compiler, &IID_IUnknown, (void **)&unknown); + ok(hr == D3D_OK, "QueryInterface failed, got %x, expected %x (D3D_OK)\n", hr, D3D_OK); + + count = unknown->lpVtbl->Release(unknown); + ok(count == 2, "Release failed, got %u, expected %u\n", count, 2); + + count = compiler2->lpVtbl->Release(compiler2); + ok(count == 1, "Release failed, got %u, expected %u\n", count, 1); + + count = compiler->lpVtbl->Release(compiler); + ok(count == 0, "Release failed %u\n", count); +} + START_TEST(effect) { HWND wnd; @@ -150,6 +204,7 @@ START_TEST(effect) }
test_create_effect_and_pool(device); + test_create_effect_compiler();
count = IDirect3DDevice9_Release(device); ok(count == 0, "The device was not properly freed: refcount %u\n", count);