Matteo Bruni (@Mystral) commented about dlls/d3dx9_36/tests/effect.c:
- /* Begin value loop. */
- for (x = 0; x < (sizeof( test_set_raw_data_values ) / sizeof( struct test_set_raw_data_value )); x++)
- {
result_buf = malloc( test_set_raw_data_values[x].expected_data_len );
if (result_buf)
{
memset( result_buf, '\0', test_set_raw_data_values[x].expected_data_len );
hr = effect->lpVtbl->SetRawValue( effect,
effect->lpVtbl->GetParameterByName( effect, NULL, test_set_raw_data_values[x].param_name ),
test_set_raw_data_values[x].param_data,
test_set_raw_data_values[x].offset,
test_set_raw_data_values[x].param_data_len );
ok( hr == test_set_raw_data_values[x].expected_result,
"Test # %#1.1x var name %s : got HRESULT %#1.1x, expected %#1.1x.\n", x,
test_set_raw_data_values[x].param_name, hr,
test_set_raw_data_values[x].expected_result );
It's nice to make use of test contexts. At the start of the loop you'd have something like: `winetest_push_context("Test %u, parameter %s", i + 1, tests[i].param_name);` and at the end: `winetest_pop_context();`
Then the ok() call becomes something like ```suggestion:-0+0 ok(hr == tests[i].expected_hr, "Unexpected hr %#x, expected %#x.\n", hr, tests[i].expected_hr); ```