Rico Schüller : d3d10/tests: Add ID3D10Effect:: GetVariableBy*() test.
Alexandre Julliard
julliard at winehq.org
Thu May 6 11:13:22 CDT 2010
Module: wine
Branch: master
Commit: 89b0c8437516786e8713cfe0fb6786f65f6a1425
URL: http://source.winehq.org/git/wine.git/?a=commit;h=89b0c8437516786e8713cfe0fb6786f65f6a1425
Author: Rico Schüller <kgbricola at web.de>
Date: Wed May 5 19:02:02 2010 +0200
d3d10/tests: Add ID3D10Effect::GetVariableBy*() test.
---
dlls/d3d10/tests/effect.c | 126 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 126 insertions(+), 0 deletions(-)
diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c
index ee96fb9..f37f945 100644
--- a/dlls/d3d10/tests/effect.c
+++ b/dlls/d3d10/tests/effect.c
@@ -3441,6 +3441,131 @@ static void test_effect_local_shader(ID3D10Device *device)
effect->lpVtbl->Release(effect);
}
+/*
+ * test_effect_get_variable_by
+ */
+#if 0
+cbuffer cb
+{
+ float f1 : SV_POSITION;
+ float f2 : COLOR0;
+};
+cbuffer cb2
+{
+ float f3 : SV_POSITION;
+ float f4 : COLOR1;
+};
+Texture1D tex1 : COLOR2;
+Texture1D tex2 : COLOR1;
+#endif
+static DWORD fx_test_egvb[] = {
+0x43425844, 0x63d60ede, 0xf75a09d1, 0x47da5604, 0x7ef6e331, 0x00000001, 0x000001ca, 0x00000001,
+0x00000024, 0x30315846, 0x0000019e, 0xfeff1001, 0x00000002, 0x00000004, 0x00000002, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x0000008a, 0x00000000, 0x00000002, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x66006263,
+0x74616f6c, 0x00000700, 0x00000100, 0x00000000, 0x00000400, 0x00001000, 0x00000400, 0x00090900,
+0x00316600, 0x505f5653, 0x5449534f, 0x004e4f49, 0x43003266, 0x524f4c4f, 0x62630030, 0x33660032,
+0x00346600, 0x4f4c4f43, 0x54003152, 0x75747865, 0x44316572, 0x00005300, 0x00000200, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000a00, 0x78657400, 0x4f430031, 0x32524f4c, 0x78657400,
+0x00040032, 0x00100000, 0x00000000, 0x00020000, 0xffff0000, 0x0000ffff, 0x00290000, 0x000d0000,
+0x002c0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380000, 0x000d0000, 0x003b0000,
+0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00420000, 0x00100000, 0x00000000, 0x00020000,
+0xffff0000, 0x0000ffff, 0x00460000, 0x000d0000, 0x002c0000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0x00490000, 0x000d0000, 0x004c0000, 0x00040000, 0x00000000, 0x00000000, 0x00000000,
+0x00790000, 0x005d0000, 0x007e0000, 0xffff0000, 0x0000ffff, 0x00850000, 0x005d0000, 0x004c0000,
+0xffff0000, 0x0000ffff, 0x00000000,
+};
+
+static void test_effect_get_variable_by(ID3D10Device *device)
+{
+ ID3D10Effect *effect;
+ ID3D10EffectVariable *variable_by_index, *variable, *null_variable;
+ HRESULT hr;
+
+ hr = create_effect(fx_test_egvb, 0, device, NULL, &effect);
+ ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
+
+ /* get the null variable */
+ null_variable = effect->lpVtbl->GetVariableByIndex(effect, 0xffffffff);
+
+ /* check for invalid arguments */
+ variable = effect->lpVtbl->GetVariableByName(effect, NULL);
+ ok(null_variable == variable, "GetVariableByName got %p, expected %p\n", variable, null_variable);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, NULL);
+ ok(null_variable == variable, "GetVariableBySemantic got %p, expected %p\n", variable, null_variable);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "invalid");
+ ok(null_variable == variable, "GetVariableByName got %p, expected %p\n", variable, null_variable);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "invalid");
+ ok(null_variable == variable, "GetVariableBySemantic got %p, expected %p\n", variable, null_variable);
+
+ /* variable f1 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 0);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "f1");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "SV_POSITION");
+ ok(variable_by_index == variable, "GetVariableBySemantic got %p, expected %p\n", variable, variable_by_index);
+
+ /* variable f2 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 1);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "f2");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "COLOR0");
+ ok(variable_by_index == variable, "GetVariableBySemantic got %p, expected %p\n", variable, variable_by_index);
+
+ /* variable f3 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 2);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "f3");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "SV_POSITION");
+ ok(variable != null_variable, "GetVariableBySemantic failed %p", variable);
+ ok(variable != variable_by_index, "GetVariableBySemantic failed %p", variable);
+
+ /* variable f4 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 3);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "f4");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "COLOR1");
+ ok(variable_by_index == variable, "GetVariableBySemantic got %p, expected %p\n", variable, variable_by_index);
+
+ /* variable tex1 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 4);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "tex1");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "COLOR2");
+ ok(variable_by_index == variable, "GetVariableBySemantic got %p, expected %p\n", variable, variable_by_index);
+
+ /* variable tex2 */
+ variable_by_index = effect->lpVtbl->GetVariableByIndex(effect, 5);
+ ok(null_variable != variable_by_index, "GetVariableByIndex failed %p", variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableByName(effect, "tex2");
+ ok(variable_by_index == variable, "GetVariableByName got %p, expected %p\n", variable, variable_by_index);
+
+ variable = effect->lpVtbl->GetVariableBySemantic(effect, "COLOR1");
+ ok(variable != null_variable, "GetVariableBySemantic failed %p", variable);
+ ok(variable != variable_by_index, "GetVariableBySemantic failed %p", variable);
+
+ effect->lpVtbl->Release(effect);
+}
+
START_TEST(effect)
{
ID3D10Device *device;
@@ -3460,6 +3585,7 @@ START_TEST(effect)
test_effect_variable_type_class(device);
test_effect_constant_buffer_stride(device);
test_effect_local_shader(device);
+ test_effect_get_variable_by(device);
refcount = ID3D10Device_Release(device);
ok(!refcount, "Device has %u references left\n", refcount);
More information about the wine-cvs
mailing list