[PATCH 5/5] d3d9/tests: Make the sanity test a normal test.

Henri Verbeet hverbeet at codeweavers.com
Fri Apr 11 00:53:22 CDT 2014


---
 dlls/d3d9/tests/visual.c |  140 ++++++++++++++++++++--------------------------
 1 file changed, 60 insertions(+), 80 deletions(-)

diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 0a1d05f..6760f9b 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -192,44 +192,6 @@ static IDirect3DDevice9 *create_device(IDirect3D9 *d3d, HWND device_window, HWND
     return NULL;
 }
 
-static IDirect3DDevice9 *init_d3d9(void)
-{
-    D3DADAPTER_IDENTIFIER9 identifier;
-    IDirect3DDevice9 *device;
-    IDirect3D9 *d3d9;
-    HWND window;
-    HRESULT hr;
-
-    if (!(d3d9 = Direct3DCreate9(D3D_SDK_VERSION)))
-    {
-        win_skip("could not create D3D9\n");
-        return NULL;
-    }
-
-    memset(&identifier, 0, sizeof(identifier));
-    hr = IDirect3D9_GetAdapterIdentifier(d3d9, 0, 0, &identifier);
-    ok(hr == D3D_OK, "Failed to get adapter identifier description\n");
-    trace("Driver string: \"%s\"\n", identifier.Driver);
-    trace("Description string: \"%s\"\n", identifier.Description);
-    /* Only Windows XP's default VGA driver should have an empty description */
-    ok(identifier.Description[0] != '\0' ||
-       broken(strcmp(identifier.Driver, "vga.dll") == 0),
-       "Empty driver description\n");
-    trace("Device name string: \"%s\"\n", identifier.DeviceName);
-    ok(identifier.DeviceName[0]  != '\0', "Empty device name\n");
-    trace("Driver version %d.%d.%d.%d\n",
-          HIWORD(U(identifier.DriverVersion).HighPart), LOWORD(U(identifier.DriverVersion).HighPart),
-          HIWORD(U(identifier.DriverVersion).LowPart), LOWORD(U(identifier.DriverVersion).LowPart));
-
-    window = CreateWindowA("static", "d3d9_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
-            0, 0, 640, 480, NULL, NULL, NULL, NULL);
-    if ((device = create_device(d3d9, window, window, TRUE)))
-        return device;
-
-    DestroyWindow(window);
-    return NULL;
-}
-
 static void cleanup_device(IDirect3DDevice9 *device)
 {
     if (device)
@@ -266,6 +228,48 @@ struct nvertex
     DWORD diffuse;
 };
 
+static void test_sanity(void)
+{
+    IDirect3DDevice9 *device;
+    IDirect3D9 *d3d;
+    D3DCOLOR color;
+    ULONG refcount;
+    HWND window;
+    HRESULT hr;
+
+    window = CreateWindowA("static", "d3d9_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+            0, 0, 640, 480, NULL, NULL, NULL, NULL);
+    d3d = Direct3DCreate9(D3D_SDK_VERSION);
+    ok(!!d3d, "Failed to create a D3D object.\n");
+    if (!(device = create_device(d3d, window, window, TRUE)))
+    {
+        skip("Failed to create a D3D device, skipping tests.\n");
+        goto done;
+    }
+
+    hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffff0000, 1.0f, 0);
+    ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
+    color = getPixelColor(device, 1, 1);
+    ok(color == 0x00ff0000, "Got unexpected color 0x%08x.\n", color);
+
+    hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
+    ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
+
+    hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff00ddee, 0.0, 0);
+    ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
+    color = getPixelColor(device, 639, 479);
+    ok(color == 0x0000ddee, "Got unexpected color 0x%08x.\n", color);
+
+    hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
+    ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
+
+    refcount = IDirect3DDevice9_Release(device);
+    ok(!refcount, "Device has %u references left.\n", refcount);
+done:
+    IDirect3D9_Release(d3d);
+    DestroyWindow(window);
+}
+
 static void lighting_test(void)
 {
     DWORD nfvf = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL;
@@ -16556,53 +16560,32 @@ static void add_dirty_rect_test(void)
 
 START_TEST(visual)
 {
-    IDirect3DDevice9 *device_ptr;
-    D3DCAPS9 caps;
+    D3DADAPTER_IDENTIFIER9 identifier;
+    IDirect3D9 *d3d;
     HRESULT hr;
-    DWORD color;
 
-    if (!(device_ptr = init_d3d9()))
+    if (!(d3d = Direct3DCreate9(D3D_SDK_VERSION)))
     {
-        skip("Creating the device failed\n");
+        skip("could not create D3D9 object\n");
         return;
     }
 
-    IDirect3DDevice9_GetDeviceCaps(device_ptr, &caps);
-
-    /* Check for the reliability of the returned data */
-    hr = IDirect3DDevice9_Clear(device_ptr, 0, NULL, D3DCLEAR_TARGET, 0xffff0000, 0.0, 0);
-    if(FAILED(hr))
-    {
-        skip("Clear failed, can't assure correctness of the test results, skipping\n");
-        goto cleanup;
-    }
-
-    color = getPixelColor(device_ptr, 1, 1);
-    if(color !=0x00ff0000)
-    {
-        skip("Sanity check returned an incorrect color(%08x), can't assure the correctness of the tests, skipping\n", color);
-        goto cleanup;
-    }
-    IDirect3DDevice9_Present(device_ptr, NULL, NULL, NULL, NULL);
-
-    hr = IDirect3DDevice9_Clear(device_ptr, 0, NULL, D3DCLEAR_TARGET, 0xff00ddee, 0.0, 0);
-    if(FAILED(hr))
-    {
-        skip("Clear failed, can't assure correctness of the test results, skipping\n");
-        goto cleanup;
-    }
-
-    color = getPixelColor(device_ptr, 639, 479);
-    if(color != 0x0000ddee)
-    {
-        skip("Sanity check returned an incorrect color(%08x), can't assure the correctness of the tests, skipping\n", color);
-        goto cleanup;
-    }
-    IDirect3DDevice9_Present(device_ptr, NULL, NULL, NULL, NULL);
+    memset(&identifier, 0, sizeof(identifier));
+    hr = IDirect3D9_GetAdapterIdentifier(d3d, 0, 0, &identifier);
+    ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr);
+    trace("Driver string: \"%s\"\n", identifier.Driver);
+    trace("Description string: \"%s\"\n", identifier.Description);
+    /* Only Windows XP's default VGA driver should have an empty description */
+    ok(identifier.Description[0] || broken(!strcmp(identifier.Driver, "vga.dll")), "Empty driver description.\n");
+    trace("Device name string: \"%s\"\n", identifier.DeviceName);
+    ok(identifier.DeviceName[0], "Empty device name.\n");
+    trace("Driver version %d.%d.%d.%d\n",
+            HIWORD(U(identifier.DriverVersion).HighPart), LOWORD(U(identifier.DriverVersion).HighPart),
+            HIWORD(U(identifier.DriverVersion).LowPart), LOWORD(U(identifier.DriverVersion).LowPart));
 
-    cleanup_device(device_ptr);
-    device_ptr = NULL;
+    IDirect3D9_Release(d3d);
 
+    test_sanity();
     depth_clamp_test();
     stretchrect_test();
     lighting_test();
@@ -16681,7 +16664,4 @@ START_TEST(visual)
     multisampled_depth_buffer_test();
     resz_test();
     stencil_cull_test();
-
-cleanup:
-    cleanup_device(device_ptr);
 }
-- 
1.7.10.4




More information about the wine-patches mailing list