[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