[PATCH 3/3] d3dx9: Add test for IsParameterUsed function.

Paul Gofman gofmanp at gmail.com
Fri May 20 14:04:35 CDT 2016


Signed-off-by: Paul Gofman <gofmanp at gmail.com>
---
 dlls/d3dx9_36/tests/effect.c | 79 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index 5963725..ba58585 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -4169,6 +4169,84 @@ static void test_effect_preshader_ops(IDirect3DDevice9 *device)
                 &op_tests[i]);
 }
 
+static void test_effect_isparameterused(IDirect3DDevice9 *device)
+{
+    ID3DXEffect *effect;
+    HRESULT hr;
+    D3DXHANDLE param, tech, param_child;
+    unsigned int i;
+
+    hr = D3DXCreateEffect(device, test_effect_preshader_effect_blob, sizeof(test_effect_preshader_effect_blob),
+            NULL, NULL, 0, NULL, &effect, NULL);
+    ok(hr == D3D_OK, "Got result %#x.\n", hr);
+
+    tech = effect->lpVtbl->GetTechniqueByName(effect, "tech0");
+    ok(!!tech, "GetTechniqueByName failed.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "opvect3");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for opvect3.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "arr2");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for arr2.\n");
+    for (i = 0; i < 2; ++i)
+    {
+        param_child = effect->lpVtbl->GetParameterElement(effect, param, i);
+        ok(!!param_child, "GetParameterElement failed.\n");
+        ok(!effect->lpVtbl->IsParameterUsed(effect, param_child, tech),
+                "IsParameterUsed should be FALSE for arr2[%u].\n", i);
+    }
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "vs_arr");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for vs_arr.\n");
+    for (i = 0; i < 3; ++i)
+    {
+        param_child = effect->lpVtbl->GetParameterElement(effect, param, i);
+        ok(!!param_child, "GetParameterElement failed.\n");
+        ok(!effect->lpVtbl->IsParameterUsed(effect, param_child, tech),
+                "IsParameterUsed should be FALSE for vs_arr[%u].\n", i);
+    }
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "g_iVect");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for g_iVect.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "vect_sampler");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for vect_sampler.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "tex1");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for tex1.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "tex2");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(!effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be FALSE for tex2.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "sampler1");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for sampler1.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "ts3");
+    ok(!!param, "GetParameterByName failed.\n");
+    param_child = effect->lpVtbl->GetParameterByName(effect, param, "ts");
+    ok(!!param_child, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for ts3.\n");
+    ok(!effect->lpVtbl->IsParameterUsed(effect, param_child, tech), "IsParameterUsed should be FALSE for ts3.ts.\n");
+
+    param = effect->lpVtbl->GetParameterByName(effect, NULL, "ts1");
+    ok(!!param, "GetParameterByName failed.\n");
+    ok(effect->lpVtbl->IsParameterUsed(effect, param, tech), "IsParameterUsed should be TRUE for ts1.\n");
+    param_child = effect->lpVtbl->GetParameterElement(effect, param, 0);
+    ok(!!param_child, "GetParameterElement failed.\n");
+    ok(!effect->lpVtbl->IsParameterUsed(effect, param_child, tech),
+            "IsParameterUsed should be FALSE for ts1[0].\n");
+
+    effect->lpVtbl->Release(effect);
+}
+
 START_TEST(effect)
 {
     HWND wnd;
@@ -4211,6 +4289,7 @@ START_TEST(effect)
     test_effect_states(device);
     test_effect_preshader(device);
     test_effect_preshader_ops(device);
+    test_effect_isparameterused(device);
 
     count = IDirect3DDevice9_Release(device);
     ok(count == 0, "The device was not properly freed: refcount %u\n", count);
-- 
2.5.5




More information about the wine-patches mailing list