Henri Verbeet : ddraw: Add a small tests for SetCooperativeLevel() calls with different windows.

Alexandre Julliard julliard at winehq.org
Tue Jan 15 13:46:17 CST 2013


Module: wine
Branch: master
Commit: ae725df54a4ea8c414043b252929bd85f7ce33f0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ae725df54a4ea8c414043b252929bd85f7ce33f0

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Jan 15 08:46:53 2013 +0100

ddraw: Add a small tests for SetCooperativeLevel() calls with different windows.

In particular, test that the windows aren't destroyed by accident.

---

 dlls/ddraw/tests/ddraw1.c |   31 +++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw2.c |   31 +++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw4.c |   31 +++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw7.c |   31 +++++++++++++++++++++++++++++++
 4 files changed, 124 insertions(+), 0 deletions(-)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index cf83b98..a37e0b7 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -2629,6 +2629,36 @@ static void test_coop_level_surf_create(void)
     IDirectDraw_Release(ddraw);
 }
 
+static void test_coop_level_multi_window(void)
+{
+    HWND window1, window2;
+    IDirectDraw *ddraw;
+    HRESULT hr;
+
+    window1 = CreateWindowA("static", "ddraw_test1", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    window2 = CreateWindowA("static", "ddraw_test2", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    if (!(ddraw = create_ddraw()))
+    {
+        skip("Failed to create a ddraw object, skipping test.\n");
+        DestroyWindow(window2);
+        DestroyWindow(window1);
+        return;
+    }
+
+    hr = IDirectDraw_SetCooperativeLevel(ddraw, window1, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    hr = IDirectDraw_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n");
+    ok(IsWindow(window2), "Window 2 was destroyed.\n");
+
+    IDirectDraw_Release(ddraw);
+    DestroyWindow(window2);
+    DestroyWindow(window1);
+}
+
 START_TEST(ddraw1)
 {
     test_coop_level_create_device_window();
@@ -2649,4 +2679,5 @@ START_TEST(ddraw1)
     test_coop_level_mode_set_multi();
     test_initialize();
     test_coop_level_surf_create();
+    test_coop_level_multi_window();
 }
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 303c634..e475f5b 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -2748,6 +2748,36 @@ static void test_coop_level_surf_create(void)
     IDirectDraw2_Release(ddraw);
 }
 
+static void test_coop_level_multi_window(void)
+{
+    HWND window1, window2;
+    IDirectDraw2 *ddraw;
+    HRESULT hr;
+
+    window1 = CreateWindowA("static", "ddraw_test1", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    window2 = CreateWindowA("static", "ddraw_test2", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    if (!(ddraw = create_ddraw()))
+    {
+        skip("Failed to create a ddraw object, skipping test.\n");
+        DestroyWindow(window2);
+        DestroyWindow(window1);
+        return;
+    }
+
+    hr = IDirectDraw2_SetCooperativeLevel(ddraw, window1, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    hr = IDirectDraw2_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n");
+    ok(IsWindow(window2), "Window 2 was destroyed.\n");
+
+    IDirectDraw2_Release(ddraw);
+    DestroyWindow(window2);
+    DestroyWindow(window1);
+}
+
 START_TEST(ddraw2)
 {
     test_coop_level_create_device_window();
@@ -2770,4 +2800,5 @@ START_TEST(ddraw2)
     test_coop_level_mode_set_multi();
     test_initialize();
     test_coop_level_surf_create();
+    test_coop_level_multi_window();
 }
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 2e9c845..82cd5d5 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -2935,6 +2935,36 @@ static void test_vb_discard(void)
     DestroyWindow(window);
 }
 
+static void test_coop_level_multi_window(void)
+{
+    HWND window1, window2;
+    IDirectDraw4 *ddraw;
+    HRESULT hr;
+
+    window1 = CreateWindowA("static", "ddraw_test1", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    window2 = CreateWindowA("static", "ddraw_test2", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    if (!(ddraw = create_ddraw()))
+    {
+        skip("Failed to create a ddraw object, skipping test.\n");
+        DestroyWindow(window2);
+        DestroyWindow(window1);
+        return;
+    }
+
+    hr = IDirectDraw4_SetCooperativeLevel(ddraw, window1, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    hr = IDirectDraw4_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n");
+    ok(IsWindow(window2), "Window 2 was destroyed.\n");
+
+    IDirectDraw4_Release(ddraw);
+    DestroyWindow(window2);
+    DestroyWindow(window1);
+}
+
 START_TEST(ddraw4)
 {
     test_process_vertices();
@@ -2959,4 +2989,5 @@ START_TEST(ddraw4)
     test_initialize();
     test_coop_level_surf_create();
     test_vb_discard();
+    test_coop_level_multi_window();
 }
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 2b7e075..cd22e0c 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -2744,6 +2744,36 @@ static void test_vb_discard(void)
     DestroyWindow(window);
 }
 
+static void test_coop_level_multi_window(void)
+{
+    HWND window1, window2;
+    IDirectDraw7 *ddraw;
+    HRESULT hr;
+
+    window1 = CreateWindowA("static", "ddraw_test1", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    window2 = CreateWindowA("static", "ddraw_test2", WS_OVERLAPPEDWINDOW,
+            0, 0, 640, 480, 0, 0, 0, 0);
+    if (!(ddraw = create_ddraw()))
+    {
+        skip("Failed to create a ddraw object, skipping test.\n");
+        DestroyWindow(window2);
+        DestroyWindow(window1);
+        return;
+    }
+
+    hr = IDirectDraw7_SetCooperativeLevel(ddraw, window1, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    hr = IDirectDraw7_SetCooperativeLevel(ddraw, window2, DDSCL_NORMAL);
+    ok(SUCCEEDED(hr), "Failed to set cooperative level, hr %#x.\n", hr);
+    todo_wine ok(IsWindow(window1), "Window 1 was destroyed.\n");
+    ok(IsWindow(window2), "Window 2 was destroyed.\n");
+
+    IDirectDraw7_Release(ddraw);
+    DestroyWindow(window2);
+    DestroyWindow(window1);
+}
+
 START_TEST(ddraw7)
 {
     HMODULE module = GetModuleHandleA("ddraw.dll");
@@ -2775,4 +2805,5 @@ START_TEST(ddraw7)
     test_initialize();
     test_coop_level_surf_create();
     test_vb_discard();
+    test_coop_level_multi_window();
 }




More information about the wine-cvs mailing list