Author: gadamopoulos
Date: Wed Sep  7 23:08:14 2011
New Revision: 53632

URL: http://svn.reactos.org/svn/reactos?rev=53632&view=rev
Log:
[user32_apitest]
- Add some more tests hoping that SetActiveWindow will reveal its secrets

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=53632&r1=53631&r2=53632&view=diff
==============================================================================
--- trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] Wed Sep  7 
23:08:14 2011
@@ -9,41 +9,81 @@
 #include <wine/test.h>
 #include <windows.h>
 
+
+#define EXPECT_NEXT(hWnd1, hWnd2) ok(GetWindow(hWnd1,GW_HWNDNEXT) == hWnd2, 
"Expected %p after %p, not %p\n",hWnd2,hWnd1,GetWindow(hWnd1,GW_HWNDNEXT) )
+#define EXPECT_ACTIVE(hwnd) ok(GetActiveWindow() == hwnd, "Expected %p to be 
the active window, not %p\n",hwnd,GetActiveWindow())
+
 void Test_SetActiveWindow()
 {
     MSG msg;
-    HWND hWnd, hWnd1, hWnd2;
+    HWND hWnd1, hWnd2, hWnd3, hWnd4;
 
-    hWnd = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
+    hWnd1 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
                         20, 20, 300, 300, NULL, NULL, 0, NULL);
 
-    hWnd1 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
-                         20, 350, 300, 300, hWnd, NULL, 0, NULL);
+    hWnd2 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
+                         20, 350, 300, 300, hWnd1, NULL, 0, NULL);
 
-    hWnd2 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
+    hWnd3 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
                          200, 200, 300, 300, NULL, NULL, 0, NULL);
 
-    ShowWindow(hWnd, SW_SHOW);
-    UpdateWindow(hWnd);
+    hWnd4 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW,
+                         250, 250, 200, 200, hWnd1, NULL, 0, NULL);
+
     ShowWindow(hWnd1, SW_SHOW);
     UpdateWindow(hWnd1);
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
+
+    EXPECT_NEXT(hWnd4,hWnd2);
+    EXPECT_NEXT(hWnd1,hWnd3);
+
     ShowWindow(hWnd2, SW_SHOW);
     UpdateWindow(hWnd2);
-
     while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
 
-    ok(GetWindow(hWnd2,GW_HWNDNEXT) == hWnd1, "Expected %p after %p, not 
%p\n",hWnd1,hWnd2,GetWindow(hWnd2,GW_HWNDNEXT) );
-    ok(GetWindow(hWnd1,GW_HWNDNEXT) == hWnd, "Expected %p after %p, not 
%p\n",hWnd,hWnd1,GetWindow(hWnd1,GW_HWNDNEXT));
-    ok(GetActiveWindow() == hWnd2, "Expected %p to be the active window, not 
%p\n",hWnd2,GetActiveWindow());
+    EXPECT_NEXT(hWnd2,hWnd4);
+    EXPECT_NEXT(hWnd4,hWnd1);
 
-    SetActiveWindow(hWnd);
-
+    ShowWindow(hWnd3, SW_SHOW);
+    UpdateWindow(hWnd3);
     while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
 
-    /* note: the owned is moved on top of the three windows */   
-    ok(GetActiveWindow() == hWnd, "Expected %p to be the active window, not 
%p\n",hWnd,GetActiveWindow());
-    ok(GetWindow(hWnd1,GW_HWNDNEXT) == hWnd, "Expected %p after %p, not 
%p\n",hWnd,hWnd1,GetWindow(hWnd1,GW_HWNDNEXT) );
-    ok(GetWindow(hWnd,GW_HWNDNEXT) == hWnd2, "Expected %p after %p, not 
%p\n",hWnd2,hWnd,GetWindow(hWnd,GW_HWNDNEXT) );
+    EXPECT_NEXT(hWnd3,hWnd2);
+    EXPECT_NEXT(hWnd2,hWnd4);
+    EXPECT_NEXT(hWnd4,hWnd1);
+
+    ShowWindow(hWnd4, SW_SHOW);
+    UpdateWindow(hWnd4);
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
+
+    EXPECT_NEXT(hWnd4,hWnd2);
+    EXPECT_NEXT(hWnd2,hWnd1);
+    EXPECT_NEXT(hWnd1,hWnd3);
+    EXPECT_ACTIVE(hWnd4);
+
+    SetActiveWindow(hWnd1);
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
+
+    EXPECT_NEXT(hWnd4,hWnd2);
+    EXPECT_NEXT(hWnd2,hWnd1);
+    EXPECT_NEXT(hWnd1,hWnd3);
+    EXPECT_ACTIVE(hWnd1);
+
+    SetActiveWindow(hWnd3);
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
+
+    EXPECT_NEXT(hWnd3,hWnd4);
+    EXPECT_NEXT(hWnd4,hWnd2);
+    EXPECT_NEXT(hWnd2,hWnd1);
+    EXPECT_ACTIVE(hWnd3);
+
+    SetActiveWindow(hWnd2);
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg );
+
+    EXPECT_NEXT(hWnd2,hWnd4);
+    EXPECT_NEXT(hWnd4,hWnd1);
+    EXPECT_NEXT(hWnd1,hWnd3);
+    EXPECT_ACTIVE(hWnd2);
 }
 
 START_TEST(SetActiveWindow)


Reply via email to