From: Christian Costa titan.costa@gmail.com
Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- dlls/d3dx9_36/tests/mesh.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c index ae7c5f2010c..81f902291de 100644 --- a/dlls/d3dx9_36/tests/mesh.c +++ b/dlls/d3dx9_36/tests/mesh.c @@ -10126,10 +10126,10 @@ static void test_clone_mesh(void)
hr = mesh->lpVtbl->CloneMesh(mesh, tc[i].clone_options, tc[i].new_declaration, test_context->device, &mesh_clone); - ok(hr == D3D_OK, "CloneMesh test case %d failed. Got %x\n, expected D3D_OK\n", i, hr); + ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr);
hr = mesh_clone->lpVtbl->GetDeclaration(mesh_clone, new_declaration); - ok(hr == D3D_OK, "GetDeclaration test case %d failed. Got %x\n, expected D3D_OK\n", i, hr); + ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr); /* Check declaration elements */ for (j = 0; tc[i].new_declaration[j].Stream != 0xFF; j++) { @@ -10315,8 +10315,7 @@ static void test_valid_mesh(void) }
hr = D3DXValidMesh(mesh, tc[i].adjacency, &errors_and_warnings); - todo_wine ok(hr == tc[i].exp_hr, "D3DXValidMesh test case %d failed. " - "Got %x\n, expected %x\n", i, hr, tc[i].exp_hr); + todo_wine ok(hr == tc[i].exp_hr, "Test %u, got unexpected hr %#x, expected %#x.\n", i, hr, tc[i].exp_hr);
/* Note errors_and_warnings is deliberately not checked because that * would require copying wast amounts of the text output. */ @@ -10459,8 +10458,7 @@ static void test_optimize_faces(void) hr = D3DXOptimizeFaces(tc[i].indices, tc[i].num_faces, tc[i].num_vertices, tc[i].indices_are_32bit, face_remap); - ok(hr == D3D_OK, "D3DXOptimizeFaces test case %d failed. " - "Got %x\n, expected D3D_OK\n", i, hr); + ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr);
/* Compare face remap with expected face remap */ for (j = 0; j < tc[i].num_faces; j++) @@ -10477,15 +10475,13 @@ static void test_optimize_faces(void) hr = D3DXOptimizeFaces(tc[0].indices, tc[0].num_faces, tc[0].num_vertices, tc[0].indices_are_32bit, NULL); - ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeFaces passed NULL face_remap " - "pointer. Got %x\n, expected D3DERR_INVALIDCALL\n", hr); + ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
/* Number of faces must be smaller than 2^15 */ hr = D3DXOptimizeFaces(tc[0].indices, 2 << 15, tc[0].num_vertices, FALSE, &smallest_face_remap); - ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeFaces should not accept 2^15 " - "faces when using 16-bit indices. Got %x\n, expected D3DERR_INVALIDCALL\n", hr); + ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr); }
static HRESULT clear_normals(ID3DXMesh *mesh)
Not a problem with the patch, but with the already-existing code. Something is off with that last D3DXOptimizeFaces test. The comment and error message both mention 2^15, but the code uses 2<<15 (2^16) instead of 1<<15 (2^15).
On Tue, Apr 28, 2020 at 6:43 AM Matteo Bruni mbruni@codeweavers.com wrote:
From: Christian Costa titan.costa@gmail.com
Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com
dlls/d3dx9_36/tests/mesh.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c index ae7c5f2010c..81f902291de 100644 --- a/dlls/d3dx9_36/tests/mesh.c +++ b/dlls/d3dx9_36/tests/mesh.c @@ -10126,10 +10126,10 @@ static void test_clone_mesh(void)
hr = mesh->lpVtbl->CloneMesh(mesh, tc[i].clone_options, tc[i].new_declaration, test_context->device, &mesh_clone);
ok(hr == D3D_OK, "CloneMesh test case %d failed. Got %x\n, expected D3D_OK\n", i, hr);
ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr); hr = mesh_clone->lpVtbl->GetDeclaration(mesh_clone, new_declaration);
ok(hr == D3D_OK, "GetDeclaration test case %d failed. Got %x\n, expected D3D_OK\n", i, hr);
ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr); /* Check declaration elements */ for (j = 0; tc[i].new_declaration[j].Stream != 0xFF; j++) {
@@ -10315,8 +10315,7 @@ static void test_valid_mesh(void) }
hr = D3DXValidMesh(mesh, tc[i].adjacency, &errors_and_warnings);
todo_wine ok(hr == tc[i].exp_hr, "D3DXValidMesh test case %d failed. "
"Got %x\n, expected %x\n", i, hr, tc[i].exp_hr);
todo_wine ok(hr == tc[i].exp_hr, "Test %u, got unexpected hr %#x, expected %#x.\n", i, hr, tc[i].exp_hr); /* Note errors_and_warnings is deliberately not checked because that * would require copying wast amounts of the text output. */
@@ -10459,8 +10458,7 @@ static void test_optimize_faces(void) hr = D3DXOptimizeFaces(tc[i].indices, tc[i].num_faces, tc[i].num_vertices, tc[i].indices_are_32bit, face_remap);
ok(hr == D3D_OK, "D3DXOptimizeFaces test case %d failed. "
"Got %x\n, expected D3D_OK\n", i, hr);
ok(hr == D3D_OK, "Test %u, got unexpected hr %#x.\n", i, hr); /* Compare face remap with expected face remap */ for (j = 0; j < tc[i].num_faces; j++)
@@ -10477,15 +10475,13 @@ static void test_optimize_faces(void) hr = D3DXOptimizeFaces(tc[0].indices, tc[0].num_faces, tc[0].num_vertices, tc[0].indices_are_32bit, NULL);
- ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeFaces passed NULL face_remap "
"pointer. Got %x\n, expected D3DERR_INVALIDCALL\n", hr);
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
/* Number of faces must be smaller than 2^15 */ hr = D3DXOptimizeFaces(tc[0].indices, 2 << 15, tc[0].num_vertices, FALSE, &smallest_face_remap);
- ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeFaces should not accept 2^15 "
- "faces when using 16-bit indices. Got %x\n, expected D3DERR_INVALIDCALL\n", hr);
- ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr);
}
static HRESULT clear_normals(ID3DXMesh *mesh)
2.24.1
On Tue, Apr 28, 2020 at 10:08 PM Jeff Smith whydoubt@gmail.com wrote:
Not a problem with the patch, but with the already-existing code. Something is off with that last D3DXOptimizeFaces test. The comment and error message both mention 2^15, but the code uses 2<<15 (2^16) instead of 1<<15 (2^15).
Yeah. Also the actual upper limit is 65534, starting from 65535 it returns an error. I have a couple patches for this and another silly mistake in that test but I don't know that it's worth it. There are way bigger issues in the area, both the test and the implementation should be redone from scratch.