[ros-diffs] [gadamopoulos] 54023: [user32_apitest] - remove all previous SetActiveWindow tests as they were completely wrong. This is because changing the z-order of the owner windows is done by SetWindowPos a...

gadamopoulos at svn.reactos.org gadamopoulos at svn.reactos.org
Thu Oct 6 13:06:53 UTC 2011


Author: gadamopoulos
Date: Thu Oct  6 13:06:52 2011
New Revision: 54023

URL: http://svn.reactos.org/svn/reactos?rev=54023&view=rev
Log:
[user32_apitest]
- remove all previous SetActiveWindow tests as they were completely wrong. This is because changing the z-order of the owner windows is done by SetWindowPos as tested in the same test suite. However SetActiveWindow calls SetWindowPos without SWP_NOOWNERZORDER parameter which leads to changing the zorder of owner windows 

Modified:
    trunk/rostests/apitests/user32/SetActiveWindow.c

Modified: trunk/rostests/apitests/user32/SetActiveWindow.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/user32/SetActiveWindow.c?rev=54023&r1=54022&r2=54023&view=diff
==============================================================================
--- trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] Thu Oct  6 13:06:52 2011
@@ -11,15 +11,13 @@
 #include "helper.h"
 #include <undocuser.h>
 
-HWND hWnd1, hWnd2, hWnd3, hWnd4;
+HWND hWnd1, hWnd2;
 
 /* FIXME: test for HWND_TOP, etc...*/
 static int get_iwnd(HWND hWnd)
 {
     if(hWnd == hWnd1) return 1;
     else if(hWnd == hWnd2) return 2;
-    else if(hWnd == hWnd3) return 3;
-    else if(hWnd == hWnd4) return 4;
     else return 0;
 }
 
@@ -79,31 +77,13 @@
                         20, 20, 300, 300, NULL, NULL, 0, NULL);
 
     hWnd2 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW,
-                         20, 350, 300, 300, hWnd1, NULL, 0, NULL);
-
-    hWnd3 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW,
                          200, 200, 300, 300, NULL, NULL, 0, NULL);
-
-    hWnd4 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW,
-                         250, 250, 200, 200, hWnd1, NULL, 0, NULL);
 }
 
 static void set_default_zorder()
 {
-    /* show the windows */
-    ShowWindow(hWnd1, SW_SHOW);
-    UpdateWindow(hWnd1);
-    ShowWindow(hWnd2, SW_SHOW);
-    UpdateWindow(hWnd2);
-    ShowWindow(hWnd3, SW_SHOW);
-    UpdateWindow(hWnd3);
-    ShowWindow(hWnd4, SW_SHOW);
-    UpdateWindow(hWnd4);
-
-    SetWindowPos(hWnd3, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    SetWindowPos(hWnd2, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    SetWindowPos(hWnd4, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
+    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
+    SetWindowPos(hWnd2, 0, 0,0,0,0, SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
 
     FlushMessages();
     empty_message_cache();
@@ -113,198 +93,50 @@
 {
     DestroyWindow(hWnd1);
     DestroyWindow(hWnd2);
-    DestroyWindow(hWnd3);
-    DestroyWindow(hWnd4);
     UnregisterClassW(L"testClass", 0);
 }
 
-#define EXPECT_NEXT(hWnd1, hWnd2)                                         \
-       ok(get_iwnd(GetWindow(hWnd1,GW_HWNDNEXT)) == get_iwnd(hWnd2),      \
-       "After hwnd%d, expected hwnd%d not hwnd%d\n",                      \
-        get_iwnd(hWnd1), get_iwnd(hWnd2),get_iwnd(GetWindow(hWnd1,GW_HWNDNEXT)) )
-
-#define EXPECT_CHAIN(A,B,C,D,X)     \
-    EXPECT_NEXT(hWnd##A, hWnd##B);  \
-    EXPECT_NEXT(hWnd##B, hWnd##C);  \
-    EXPECT_NEXT(hWnd##C, hWnd##D);  \
-    EXPECT_NEXT(hWnd##D, 0);        \
-    EXPECT_ACTIVE(hWnd##X);
-
-/* the actual test begins here */
-
-MSG_ENTRY Activate1_chain[]=
-     {{4,WM_NCACTIVATE},
-      {4,WM_ACTIVATE},
-      {4,WM_WINDOWPOSCHANGING,SENT,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {2,WM_WINDOWPOSCHANGING,SENT,4,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {1,WM_WINDOWPOSCHANGING,SENT,2,SWP_NOMOVE | SWP_NOSIZE},
-      {1,WM_NCACTIVATE},
-      {1,WM_ACTIVATE},
-      {4,WM_KILLFOCUS},
-      {1,WM_SETFOCUS},
-      {0,0}};
-
-MSG_ENTRY Activate2_chain[]=
-     {{1,WM_NCACTIVATE},
-      {1,WM_ACTIVATE},
-      {3,WM_WINDOWPOSCHANGING,SENT, 0, SWP_NOMOVE | SWP_NOSIZE},
-      {3,WM_WINDOWPOSCHANGED ,SENT, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
-      {3,WM_NCACTIVATE},
-      {3,WM_ACTIVATE},
-      {1,WM_KILLFOCUS},
-      {3,WM_SETFOCUS},
-      {0,0}};
-
-MSG_ENTRY Activate3_chain[]=
-     {{3,WM_NCACTIVATE},
-      {3,WM_ACTIVATE},
-      {2,WM_WINDOWPOSCHANGING, SENT,0, SWP_NOMOVE | SWP_NOSIZE },
-      {4,WM_WINDOWPOSCHANGING, SENT,2, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {1,WM_WINDOWPOSCHANGING, SENT,4, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {2,WM_WINDOWPOSCHANGED,  SENT,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOCLIENTMOVE |SWP_NOCLIENTSIZE },
-      {4,WM_WINDOWPOSCHANGED,  SENT,2, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE |SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
-      {1,WM_WINDOWPOSCHANGED,  SENT,4, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE |SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
+MSG_ENTRY activate2to1_chain[]={
       {2,WM_NCACTIVATE},
       {2,WM_ACTIVATE},
-      {3,WM_KILLFOCUS},
-      {2,WM_SETFOCUS},
-      {0,0}};
-
-MSG_ENTRY Activate4_chain[]=
-     {{2,WM_NCACTIVATE, },
-      {2,WM_ACTIVATE},
-      {2,WM_WINDOWPOSCHANGING, SENT ,0 ,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {4,WM_WINDOWPOSCHANGING, SENT, 2, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE} ,
-      {1,WM_WINDOWPOSCHANGING, SENT, 4, SWP_NOMOVE | SWP_NOSIZE},
+      {1,WM_WINDOWPOSCHANGING, SENT,0, SWP_NOSIZE|SWP_NOMOVE},
+      {1,WM_WINDOWPOSCHANGED, SENT,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
       {1,WM_NCACTIVATE},
       {1,WM_ACTIVATE},
       {2,WM_KILLFOCUS},
       {1,WM_SETFOCUS},
       {0,0}};
 
-MSG_ENTRY Activate5_chain[]=
-     {{1,WM_NCACTIVATE, },
+MSG_ENTRY activate1to2_chain[]={
+      {1,WM_NCACTIVATE},
       {1,WM_ACTIVATE},
-      {4,WM_WINDOWPOSCHANGING, SENT, 0 ,SWP_NOMOVE | SWP_NOSIZE},
-      {2,WM_WINDOWPOSCHANGING, SENT, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {1,WM_WINDOWPOSCHANGING, SENT, 2, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE},
-      {4,WM_WINDOWPOSCHANGED,  SENT, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
-      {4,WM_NCACTIVATE},
-      {4,WM_ACTIVATE},
+      {2,WM_WINDOWPOSCHANGING, SENT,0, SWP_NOSIZE|SWP_NOMOVE},
+      {2,WM_WINDOWPOSCHANGED, SENT,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTMOVE|SWP_NOCLIENTSIZE},
+      {2,WM_NCACTIVATE},
+      {2,WM_ACTIVATE},
       {1,WM_KILLFOCUS},
-      {4,WM_SETFOCUS},
+      {2,WM_SETFOCUS},
       {0,0}};
 
-/*
-   some notes about this testcase:
-   from the expected series of messages it is obbvious that SetActiveWindow uses SetWindowPos. 
-   So the big question is, that if this behaviour (of changing the z order of owner and owned windows) 
-   is implemented in SetActiveWindow or SetWindowPos.
-   More tests reveal that calling SetWindowPos like this, has the same effect in the zorder:
-   SetWindowPos(hWndX, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-   However if it is called like this it does NOT change the z-order of owner or owned windows:
-   SetWindowPos(hWndX, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-   So the conclusion is that SetActiveWindow calls Begin/Defer/EndDeferWindow pos
-   moving all affected windows in a batch move operation
-*/
-
-void Test_OwnerWindows()
+void Test_msg_simple()
 {
     SetCursorPos(0,0);
 
     create_test_windows();
     set_default_zorder();
 
-    /* before we start testing SetActiveWindow we have to be sure they are on the ocrrect order*/
-    EXPECT_CHAIN(4,2,1,3,4);
-
-    /* move the windows on top in the following order 1 2 3 1 4 */
     SetActiveWindow(hWnd1);
     FlushMessages();
-    EXPECT_CHAIN(4,2,1,3,1);
-    COMPARE_CACHE(Activate1_chain);
-
-    SetActiveWindow(hWnd3);
-    FlushMessages();
-    EXPECT_CHAIN(3,4,2,1,3);
-    COMPARE_CACHE(Activate2_chain);
+    COMPARE_CACHE(activate2to1_chain);
 
     SetActiveWindow(hWnd2);
     FlushMessages();
-    EXPECT_CHAIN(2,4,1,3,2);
-    COMPARE_CACHE(Activate3_chain);
-
-    SetActiveWindow(hWnd1);
-    FlushMessages();
-    EXPECT_CHAIN(2,4,1,3,1);
-    COMPARE_CACHE(Activate4_chain);
-
-    SetActiveWindow(hWnd4);
-    FlushMessages();
-    EXPECT_CHAIN(4,2,1,3,4);
-    /* in this test xp and 7 give different results :/ */
-    /*COMPARE_CACHE(Activate5_chain);*/
-
-    /* move the windows on top with the same order but now using SetWindowPos */
-    /* note: the zorder of windows change in the same way they change with SetActiveWindow */
-    set_default_zorder();
-
-    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(4,2,1,3,1);
-
-    SetWindowPos(hWnd3, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(3,4,2,1,3);
-
-    SetWindowPos(hWnd2, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(2,4,1,3,2);
-
-    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(2,4,1,3,1);
-
-    SetWindowPos(hWnd4, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(4,2,1,3,4);
-
-    /* now do the same thing one more time with SWP_NOACTIVATE */
-    set_default_zorder();
-
-    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(1,4,2,3,4);
-
-    SetWindowPos(hWnd3, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(3,1,4,2,4);
-
-    SetWindowPos(hWnd2, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(2,3,1,4,4);
-
-    SetWindowPos(hWnd1, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    FlushMessages();
-    empty_message_cache();
-    EXPECT_CHAIN(1,2,3,4,4);
-
-    SetWindowPos(hWnd4, 0, 0,0,0,0, SWP_NOSENDCHANGING|SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);
-    FlushMessages();
-    EXPECT_CHAIN(4,1,2,3,4);
+    COMPARE_CACHE(activate1to2_chain);
 
     destroy_test_window();
 }
 
 START_TEST(SetActiveWindow)
 {
-    Test_OwnerWindows();
+    Test_msg_simple();
 }




More information about the Ros-diffs mailing list