Dmitry Timoshkov : user32: Add more tests for GetUpdateRect.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Sep 10 10:17:50 CDT 2007
Module: wine
Branch: master
Commit: 3de83dcb3444148341b4d2fd41feaa8b8865dbb1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3de83dcb3444148341b4d2fd41feaa8b8865dbb1
Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date: Tue Sep 4 16:50:16 2007 +0900
user32: Add more tests for GetUpdateRect.
---
dlls/user32/tests/win.c | 50 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 44 insertions(+), 6 deletions(-)
diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index f3a2ac3..8da30bf 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -4211,10 +4211,12 @@ static void test_gettext(void)
static void test_GetUpdateRect(void)
{
+ MSG msg;
+ BOOL ret, parent_wm_paint, grandparent_wm_paint;
RECT rc1, rc2;
HWND hgrandparent, hparent, hchild;
WNDCLASSA cls;
- const char* classNameA = "GetUpdateRectClass";
+ static const char classNameA[] = "GetUpdateRectClass";
hgrandparent = CreateWindowA("static", "grandparent", WS_OVERLAPPEDWINDOW,
0, 0, 100, 100, NULL, NULL, 0, NULL);
@@ -4230,17 +4232,33 @@ static void test_GetUpdateRect(void)
ShowWindow(hchild, SW_HIDE);
SetRect(&rc2, 0, 0, 0, 0);
- GetUpdateRect(hgrandparent, &rc1, FALSE);
+ ret = GetUpdateRect(hgrandparent, &rc1, FALSE);
+ ok(!ret, "GetUpdateRect returned not empty region\n");
ok(EqualRect(&rc1, &rc2), "rects do not match (%d,%d,%d,%d) / (%d,%d,%d,%d)\n",
rc1.left, rc1.top, rc1.right, rc1.bottom,
rc2.left, rc2.top, rc2.right, rc2.bottom);
SetRect(&rc2, 10, 10, 40, 40);
- GetUpdateRect(hparent, &rc1, FALSE);
+ ret = GetUpdateRect(hparent, &rc1, FALSE);
+ ok(ret, "GetUpdateRect returned empty region\n");
ok(EqualRect(&rc1, &rc2), "rects do not match (%d,%d,%d,%d) / (%d,%d,%d,%d)\n",
rc1.left, rc1.top, rc1.right, rc1.bottom,
rc2.left, rc2.top, rc2.right, rc2.bottom);
+ parent_wm_paint = FALSE;
+ grandparent_wm_paint = FALSE;
+ while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ if (msg.message == WM_PAINT)
+ {
+ if (msg.hwnd == hgrandparent) grandparent_wm_paint = TRUE;
+ if (msg.hwnd == hparent) parent_wm_paint = TRUE;
+ }
+ DispatchMessage(&msg);
+ }
+ ok(parent_wm_paint, "WM_PAINT should have been recieved in parent\n");
+ ok(!grandparent_wm_paint, "WM_PAINT should NOT have been recieved in grandparent\n");
+
DestroyWindow(hgrandparent);
cls.style = 0;
@@ -4259,7 +4277,7 @@ static void test_GetUpdateRect(void)
return;
}
- hgrandparent = CreateWindowA("static", "grandparent", WS_OVERLAPPEDWINDOW,
+ hgrandparent = CreateWindowA(classNameA, "grandparent", WS_OVERLAPPEDWINDOW,
0, 0, 100, 100, NULL, NULL, 0, NULL);
hparent = CreateWindowA(classNameA, "parent", WS_CHILD|WS_VISIBLE,
@@ -4271,19 +4289,39 @@ static void test_GetUpdateRect(void)
ShowWindow(hgrandparent, SW_SHOW);
UpdateWindow(hgrandparent);
+ ret = GetUpdateRect(hgrandparent, &rc1, FALSE);
+ ok(!ret, "GetUpdateRect returned not empty region\n");
+
ShowWindow(hchild, SW_HIDE);
+
SetRect(&rc2, 0, 0, 0, 0);
- GetUpdateRect(hgrandparent, &rc1, FALSE);
+ ret = GetUpdateRect(hgrandparent, &rc1, FALSE);
+ ok(!ret, "GetUpdateRect returned not empty region\n");
ok(EqualRect(&rc1, &rc2), "rects do not match (%d,%d,%d,%d) / (%d,%d,%d,%d)\n",
rc1.left, rc1.top, rc1.right, rc1.bottom,
rc2.left, rc2.top, rc2.right, rc2.bottom);
SetRect(&rc2, 10, 10, 40, 40);
- GetUpdateRect(hparent, &rc1, FALSE);
+ ret = GetUpdateRect(hparent, &rc1, FALSE);
+ ok(ret, "GetUpdateRect returned empty region\n");
ok(EqualRect(&rc1, &rc2), "rects do not match (%d,%d,%d,%d) / (%d,%d,%d,%d)\n",
rc1.left, rc1.top, rc1.right, rc1.bottom,
rc2.left, rc2.top, rc2.right, rc2.bottom);
+ parent_wm_paint = FALSE;
+ grandparent_wm_paint = FALSE;
+ while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
+ {
+ if (msg.message == WM_PAINT)
+ {
+ if (msg.hwnd == hgrandparent) grandparent_wm_paint = TRUE;
+ if (msg.hwnd == hparent) parent_wm_paint = TRUE;
+ }
+ DispatchMessage(&msg);
+ }
+ ok(parent_wm_paint, "WM_PAINT should have been recieved in parent\n");
+ ok(!grandparent_wm_paint, "WM_PAINT should NOT have been recieved in grandparent\n");
+
DestroyWindow(hgrandparent);
}
More information about the wine-cvs
mailing list