[PATCH 6/8] ddraw/tests: Test WM_SYSCOMMAND handling.

Stefan Dösinger stefan at codeweavers.com
Thu Dec 4 03:36:32 CST 2014


---
 dlls/ddraw/tests/ddraw1.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw2.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw4.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 dlls/ddraw/tests/ddraw7.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 168 insertions(+)

diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 6ab51fa..41bf432 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -2233,6 +2233,30 @@ static void test_coop_level_mode_set(void)
         {WM_SIZE,               TRUE,   SIZE_RESTORED}, /* DefWindowProc. */
         {0,                     FALSE,  0},
     };
+    static const struct message sc_restore_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_RESTORE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_RESTORED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_minimize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MINIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MINIMIZED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_maximize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MAXIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MAXIMIZED},
+        {0,                     FALSE,  0},
+    };
 
     static const struct message normal_messages[] =
     {
@@ -2400,6 +2424,24 @@ static void test_coop_level_mode_set(void)
      * testbot. Another Restore call would presumably avoid the crash, but it also moots
      * the point of the GetSurfaceDesc call. */
 
+    expect_messages = sc_minimize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_restore_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_RESTORE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_maximize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    hr = IDirectDraw_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+    ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+
     PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
     expect_messages = exclusive_messages;
     screen_size.cx = 0;
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index b79aed6..c421d12 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -2432,6 +2432,30 @@ static void test_coop_level_mode_set(void)
         {WM_SIZE,               TRUE,   SIZE_RESTORED}, /* DefWindowProc. */
         {0,                     FALSE,  0},
     };
+    static const struct message sc_restore_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_RESTORE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_RESTORED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_minimize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MINIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MINIMIZED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_maximize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MAXIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MAXIMIZED},
+        {0,                     FALSE,  0},
+    };
 
     static const struct message normal_messages[] =
     {
@@ -2606,6 +2630,24 @@ static void test_coop_level_mode_set(void)
      * testbot. Another Restore call would presumably avoid the crash, but it also moots
      * the point of the GetSurfaceDesc call. */
 
+    expect_messages = sc_minimize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_restore_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_RESTORE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_maximize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    hr = IDirectDraw2_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+    ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+
     PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
     expect_messages = exclusive_messages;
     screen_size.cx = 0;
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index fb20d70..f7f6f45 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -2619,6 +2619,30 @@ static void test_coop_level_mode_set(void)
         {WM_SIZE,               TRUE,   SIZE_RESTORED}, /* DefWindowProc. */
         {0,                     FALSE,  0},
     };
+    static const struct message sc_restore_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_RESTORE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_RESTORED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_minimize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MINIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MINIMIZED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_maximize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MAXIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MAXIMIZED},
+        {0,                     FALSE,  0},
+    };
 
     static const struct message normal_messages[] =
     {
@@ -2793,6 +2817,24 @@ static void test_coop_level_mode_set(void)
      * testbot. Another Restore call would presumably avoid the crash, but it also moots
      * the point of the GetSurfaceDesc call. */
 
+    expect_messages = sc_minimize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_restore_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_RESTORE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_maximize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    hr = IDirectDraw4_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+    ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+
     PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
     expect_messages = exclusive_messages;
     screen_size.cx = 0;
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 0ac7d7e..e1913f8 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -2296,6 +2296,30 @@ static void test_coop_level_mode_set(void)
         {WM_SIZE,               TRUE,   SIZE_RESTORED}, /* DefWindowProc. */
         {0,                     FALSE,  0},
     };
+    static const struct message sc_restore_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_RESTORE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_RESTORED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_minimize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MINIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MINIMIZED},
+        {0,                     FALSE,  0},
+    };
+    static const struct message sc_maximize_messages[] =
+    {
+        {WM_SYSCOMMAND,         TRUE,   SC_MAXIMIZE},
+        {WM_WINDOWPOSCHANGING,  FALSE,  0},
+        {WM_WINDOWPOSCHANGED,   FALSE,  0},
+        {WM_SIZE,               TRUE,   SIZE_MAXIMIZED},
+        {0,                     FALSE,  0},
+    };
 
     static const struct message normal_messages[] =
     {
@@ -2470,6 +2494,24 @@ static void test_coop_level_mode_set(void)
      * testbot. Another Restore call would presumably avoid the crash, but it also moots
      * the point of the GetSurfaceDesc call. */
 
+    expect_messages = sc_minimize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MINIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_restore_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_RESTORE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    expect_messages = sc_maximize_messages;
+    SendMessageA(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
+    ok(!expect_messages->message, "Expected message %#x, but didn't receive it.\n", expect_messages->message);
+    expect_messages = NULL;
+
+    hr = IDirectDraw7_SetCooperativeLevel(ddraw, window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+    ok(SUCCEEDED(hr), "SetCooperativeLevel failed, hr %#x.\n", hr);
+
     PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);
     expect_messages = exclusive_messages;
     screen_size.cx = 0;
-- 
2.0.4




More information about the wine-patches mailing list