From 7635cc18b197f4419eff8cda8c3a2cb2b14f0c5c Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Wed, 7 Sep 2011 23:08:14 +0000 Subject: [PATCH] [user32_apitest] - Add some more tests hoping that SetActiveWindow will reveal its secrets svn path=/trunk/; revision=53632 --- rostests/apitests/user32/SetActiveWindow.c | 74 +++++++++++++++++----- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/rostests/apitests/user32/SetActiveWindow.c b/rostests/apitests/user32/SetActiveWindow.c index 1f8aae2740e..3a5b6c1405b 100644 --- a/rostests/apitests/user32/SetActiveWindow.c +++ b/rostests/apitests/user32/SetActiveWindow.c @@ -9,41 +9,81 @@ #include #include + +#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 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 20, 20, 300, 300, NULL, NULL, 0, NULL); + HWND hWnd1, hWnd2, hWnd3, hWnd4; hWnd1 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 20, 350, 300, 300, hWnd, NULL, 0, NULL); + 20, 20, 300, 300, NULL, NULL, 0, NULL); hWnd2 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, + 20, 350, 300, 300, hWnd1, NULL, 0, NULL); + + 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()); - - SetActiveWindow(hWnd); + EXPECT_NEXT(hWnd2,hWnd4); + EXPECT_NEXT(hWnd4,hWnd1); + 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)