=?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