d3dx9/tests: Add tests for setting strings in effect.

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Paul Gofman 2017-05-05 14:34:31 +03:00 committed by Alexandre Julliard
parent a79da9689d
commit 97dcf42ff2
1 changed files with 51 additions and 4 deletions

View File

@ -2402,12 +2402,18 @@ static void test_effect_parameter_value(IDirect3DDevice9 *device)
static void test_effect_setvalue_object(IDirect3DDevice9 *device)
{
ID3DXEffect *effect;
D3DXHANDLE parameter;
IDirect3DTexture9 *texture;
static const char expected_string[] = "test_string_1";
static const char expected_string2[] = "test_longer_string_2";
static const char *expected_string_array[] = {expected_string, expected_string2};
const char *string_array[ARRAY_SIZE(expected_string_array)];
const char *string, *string2;
IDirect3DTexture9 *texture_set;
HRESULT hr;
IDirect3DTexture9 *texture;
D3DXHANDLE parameter;
ID3DXEffect *effect;
unsigned int i;
ULONG count;
HRESULT hr;
hr = D3DXCreateEffect(device, test_effect_parameter_value_blob_object,
sizeof(test_effect_parameter_value_blob_object), NULL, NULL, 0, NULL, &effect, NULL);
@ -2434,6 +2440,47 @@ static void test_effect_setvalue_object(IDirect3DDevice9 *device)
count = IDirect3DTexture9_Release(texture);
ok(!count, "Got reference count %u, expected 0.\n", count);
hr = effect->lpVtbl->SetString(effect, "s", expected_string);
todo_wine
ok(hr == D3D_OK, "Got result %#x.\n", hr);
string = NULL;
hr = effect->lpVtbl->GetString(effect, "s", &string);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetString(effect, "s", &string2);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(string != expected_string, "String pointers are the same.\n");
ok(string == string2, "String pointers differ.\n");
todo_wine
ok(!strcmp(string, expected_string), "Unexpected string '%s'.\n", string);
string = expected_string2;
hr = effect->lpVtbl->SetValue(effect, "s", &string, sizeof(string) - 1);
ok(hr == D3DERR_INVALIDCALL, "Got result %#x.\n", hr);
hr = effect->lpVtbl->SetValue(effect, "s", &string, sizeof(string));
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->SetValue(effect, "s", &string, sizeof(string) * 2);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
string = NULL;
hr = effect->lpVtbl->GetValue(effect, "s", &string, sizeof(string));
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(string != expected_string2, "String pointers are the same.\n");
todo_wine
ok(!strcmp(string, expected_string2), "Unexpected string '%s'.\n", string);
hr = effect->lpVtbl->SetValue(effect, "s_2", expected_string_array,
sizeof(expected_string_array));
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetValue(effect, "s_2", string_array,
sizeof(string_array));
ok(hr == D3D_OK, "Got result %#x.\n", hr);
for (i = 0; i < ARRAY_SIZE(expected_string_array); ++i)
{
todo_wine
ok(!strcmp(string_array[i], expected_string_array[i]), "Unexpected string '%s', i %u.\n",
string_array[i], i);
}
effect->lpVtbl->Release(effect);
}