=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: ddraw/tests: Extend TransformVertices invalid data tests.
Alexandre Julliard
julliard at winehq.org
Thu Sep 1 09:55:29 CDT 2016
Module: wine
Branch: master
Commit: b12ab05f101c4fc64219e811f92743ce8efc996e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b12ab05f101c4fc64219e811f92743ce8efc996e
Author: Stefan Dösinger <stefandoesinger at gmx.at>
Date: Wed Aug 31 22:01:27 2016 +0100
ddraw/tests: Extend TransformVertices invalid data tests.
Signed-off-by: Stefan Dösinger <stefandoesinger at gmx.at>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ddraw/tests/ddraw1.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index f04ccd3..e8194b3 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -9440,9 +9440,61 @@ static void test_transform_vertices(void)
ok(offscreen == D3DCLIP_RIGHT, "Offscreen is %x.\n", offscreen);
/* Invalid flags. */
+ offscreen = 0xdeadbeef;
hr = IDirect3DViewport_TransformVertices(viewport, ARRAY_SIZE(position_tests),
&transformdata, 0, &offscreen);
ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+ ok(offscreen == 0xdeadbeef, "Offscreen is %x.\n", offscreen);
+
+ /* NULL transform data. */
+ hr = IDirect3DViewport_TransformVertices(viewport, 1,
+ NULL, D3DTRANSFORM_UNCLIPPED, &offscreen);
+ ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+ ok(offscreen == 0xdeadbeef, "Offscreen is %x.\n", offscreen);
+ hr = IDirect3DViewport_TransformVertices(viewport, 0,
+ NULL, D3DTRANSFORM_UNCLIPPED, &offscreen);
+ ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+ ok(offscreen == 0xdeadbeef, "Offscreen is %x.\n", offscreen);
+
+ /* NULL transform data and NULL dwOffscreen.
+ *
+ * Valid transform data + NULL dwOffscreen -> crash. */
+ hr = IDirect3DViewport_TransformVertices(viewport, 1,
+ NULL, D3DTRANSFORM_UNCLIPPED, NULL);
+ ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+
+ /* No vertices. */
+ hr = IDirect3DViewport_TransformVertices(viewport, 0,
+ &transformdata, D3DTRANSFORM_UNCLIPPED, &offscreen);
+ ok(SUCCEEDED(hr), "Failed to transform vertices, hr %#x.\n", hr);
+ ok(!offscreen, "Offscreen is %x.\n", offscreen);
+ hr = IDirect3DViewport_TransformVertices(viewport, 0,
+ &transformdata, D3DTRANSFORM_CLIPPED, &offscreen);
+ ok(SUCCEEDED(hr), "Failed to transform vertices, hr %#x.\n", hr);
+ ok(offscreen == ~0U, "Offscreen is %x.\n", offscreen);
+
+ /* Invalid sizes. */
+ offscreen = 0xdeadbeef;
+ transformdata.dwSize = sizeof(transformdata) - 1;
+ hr = IDirect3DViewport_TransformVertices(viewport, 1,
+ &transformdata, D3DTRANSFORM_UNCLIPPED, &offscreen);
+ ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+ ok(offscreen == 0xdeadbeef, "Offscreen is %x.\n", offscreen);
+ transformdata.dwSize = sizeof(transformdata) + 1;
+ hr = IDirect3DViewport_TransformVertices(viewport, 1,
+ &transformdata, D3DTRANSFORM_UNCLIPPED, &offscreen);
+ ok(hr == DDERR_INVALIDPARAMS, "TransformVertices returned %#x.\n", hr);
+ ok(offscreen == 0xdeadbeef, "Offscreen is %x.\n", offscreen);
+
+ /* NULL lpIn or lpOut -> crash, except when transforming 0 vertices. */
+ transformdata.dwSize = sizeof(transformdata);
+ transformdata.lpIn = NULL;
+ transformdata.lpOut = NULL;
+ offscreen = 0xdeadbeef;
+ hr = IDirect3DViewport_TransformVertices(viewport, 0,
+ &transformdata, D3DTRANSFORM_CLIPPED, &offscreen);
+ ok(SUCCEEDED(hr), "Failed to transform vertices, hr %#x.\n", hr);
+ ok(offscreen == ~0U, "Offscreen is %x.\n", offscreen);
destroy_viewport(device, viewport);
refcount = IDirect3DDevice_Release(device);
More information about the wine-cvs
mailing list