Rico Schüller : d3dx9/tests: Add ID3DXEffect::Get/ SetStateManager() test.

Alexandre Julliard julliard at winehq.org
Wed May 11 13:02:58 CDT 2011


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

Author: Rico Schüller <kgbricola at web.de>
Date:   Wed May 11 16:47:10 2011 +0200

d3dx9/tests: Add ID3DXEffect::Get/SetStateManager() test.

---

 dlls/d3dx9_36/tests/effect.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index 483efd4..6a8f04f 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -33,6 +33,7 @@ static void test_create_effect_and_pool(IDirect3DDevice9 *device)
     ID3DXBaseEffect *base;
     ULONG count;
     IDirect3DDevice9 *device2;
+    LPD3DXEFFECTSTATEMANAGER manager = (LPD3DXEFFECTSTATEMANAGER)0xdeadbeef;
     ID3DXEffectPool *pool = (ID3DXEffectPool *)0xdeadbeef, *pool2;
 
     hr = D3DXCreateEffect(NULL, effect_desc, sizeof(effect_desc), NULL, NULL, 0, NULL, NULL, NULL);
@@ -53,6 +54,31 @@ static void test_create_effect_and_pool(IDirect3DDevice9 *device)
     hr = effect->lpVtbl->QueryInterface(effect, &IID_ID3DXBaseEffect, (void **)&base);
     ok(hr == E_NOINTERFACE, "QueryInterface failed, got %x, expected %x (E_NOINTERFACE)\n", hr, E_NOINTERFACE);
 
+    hr = effect->lpVtbl->GetStateManager(effect, NULL);
+    ok(hr == D3DERR_INVALIDCALL, "GetStateManager failed, got %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
+
+    hr = effect->lpVtbl->GetStateManager(effect, &manager);
+    ok(hr == D3D_OK, "GetStateManager failed, got %x, expected 0 (D3D_OK)\n", hr);
+    ok(!manager, "GetStateManager failed, got %p\n", manager);
+
+    /* this works, but it is not recommended! */
+    hr = effect->lpVtbl->SetStateManager(effect, (LPD3DXEFFECTSTATEMANAGER) device);
+    ok(hr == D3D_OK, "SetStateManager failed, got %x, expected 0 (D3D_OK)\n", hr);
+
+    hr = effect->lpVtbl->GetStateManager(effect, &manager);
+    ok(hr == D3D_OK, "GetStateManager failed, got %x, expected 0 (D3D_OK)\n", hr);
+    ok(manager != NULL, "GetStateManager failed\n");
+
+    IDirect3DDevice9_AddRef(device);
+    count = IDirect3DDevice9_Release(device);
+    ok(count == 4, "Release failed, got %u, expected 4\n", count);
+
+    count = IUnknown_Release(manager);
+    ok(count == 3, "Release failed, got %u, expected 3\n", count);
+
+    hr = effect->lpVtbl->SetStateManager(effect, NULL);
+    ok(hr == D3D_OK, "SetStateManager failed, got %x, expected 0 (D3D_OK)\n", hr);
+
     hr = effect->lpVtbl->GetPool(effect, &pool);
     ok(hr == D3D_OK, "GetPool failed, got %x, expected 0 (D3D_OK)\n", hr);
     ok(!pool, "GetPool failed, got %p\n", pool);




More information about the wine-cvs mailing list