Paul Vriens : comctl32/tests: Fix some test failures.
Alexandre Julliard
julliard at winehq.org
Fri Oct 2 11:02:20 CDT 2009
Module: wine
Branch: master
Commit: 46bba98bdf1a8984a2157f7e682482b3503721d3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=46bba98bdf1a8984a2157f7e682482b3503721d3
Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date: Fri Oct 2 09:21:44 2009 +0200
comctl32/tests: Fix some test failures.
---
dlls/comctl32/tests/monthcal.c | 114 ++++++++++++++++++++++------------------
1 files changed, 63 insertions(+), 51 deletions(-)
diff --git a/dlls/comctl32/tests/monthcal.c b/dlls/comctl32/tests/monthcal.c
index e0479cd..28b3646 100644
--- a/dlls/comctl32/tests/monthcal.c
+++ b/dlls/comctl32/tests/monthcal.c
@@ -216,9 +216,6 @@ static const struct message monthcal_hit_test_seq[] = {
{ MCM_HITTEST, sent|wparam, 0},
{ MCM_HITTEST, sent|wparam, 0},
{ MCM_HITTEST, sent|wparam, 0},
- { MCM_HITTEST, sent|wparam, 0},
- { MCM_HITTEST, sent|wparam, 0},
- { MCM_HITTEST, sent|wparam, 0},
{ 0 }
};
@@ -868,12 +865,14 @@ static void test_monthcal_hittest(void)
} hittest_test_t;
static const hittest_test_t title_hits[] = {
- { MCHT_NOWHERE, 0 },
+ /* Start is the same everywhere */
+ { MCHT_TITLE, 0 },
{ MCHT_TITLEBTNPREV, 0 },
- { MCHT_TITLEMONTH, 1 },
- { MCHT_TITLEYEAR, 1 },
+ /* The middle piece is only tested for presence of items */
+ /* End is the same everywhere */
{ MCHT_TITLEBTNNEXT, 0 },
- { MCHT_NOWHERE, 0 }
+ { MCHT_TITLE, 0 },
+ { MCHT_NOWHERE, 1 }
};
MCHITTESTINFO mchit;
@@ -883,6 +882,9 @@ static void test_monthcal_hittest(void)
UINT title_index;
HWND hwnd;
RECT r;
+ char yearmonth[80], *locale_month, *locale_year;
+ int month_count, year_count;
+ BOOL in_the_middle;
memset(&mchit, 0, sizeof(MCHITTESTINFO));
@@ -991,33 +993,6 @@ static void test_monthcal_hittest(void)
expect(MCHT_CALENDARDATE, res);
#endif
- /* in active area - background section of the title */
- mchit.pt.x = 2 * r.right / 7;
- mchit.pt.y = 2 * r.bottom / 19;
- res = SendMessage(hwnd, MCM_HITTEST, 0, (LPARAM) & mchit);
- expect(2 * r.right / 7, mchit.pt.x);
- expect(2 * r.bottom / 19, mchit.pt.y);
- expect(mchit.uHit, res);
- expect_hex(MCHT_TITLEBK, res);
-
- /* in active area - month section of the title */
- mchit.pt.x = r.right / 2;
- mchit.pt.y = 2 * r.bottom / 19;
- res = SendMessage(hwnd, MCM_HITTEST, 0, (LPARAM) & mchit);
- expect(r.right / 2, mchit.pt.x);
- expect(2 * r.bottom / 19, mchit.pt.y);
- expect(mchit.uHit, res);
- expect_hex(MCHT_TITLE, res);
-
- /* in active area - year section of the title */
- mchit.pt.x = 3 * r.right / 4;
- mchit.pt.y = 2 * r.bottom / 19;
- res = SendMessage(hwnd, MCM_HITTEST, 0, (LPARAM) & mchit);
- expect(3 * r.right / 4, mchit.pt.x);
- expect(2 * r.bottom / 19, mchit.pt.y);
- expect(mchit.uHit, res);
- expect_hex(MCHT_TITLE, res);
-
/* in active area - date from next month */
mchit.pt.x = 11 * r.right / 14;
mchit.pt.y = 16 * r.bottom / 19;
@@ -1059,38 +1034,75 @@ static void test_monthcal_hittest(void)
/* The horizontal position of title bar elements depends on locale (y pos
is constant), so we sample across a horizontal line and make sure we
find all elements. */
+
+ /* Get the format of the title */
+ GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SYEARMONTH, yearmonth, 80);
+ /* Find out if we have a month and/or year */
+ locale_year = strstr(yearmonth, "y");
+ locale_month = strstr(yearmonth, "M");
+
mchit.pt.x = 0;
mchit.pt.y = (5/2) * r.bottom / 19;
title_index = 0;
old_res = SendMessage(hwnd, MCM_HITTEST, 0, (LPARAM) & mchit);
+ expect_hex(title_hits[title_index].ht, old_res);
+ in_the_middle = FALSE;
+ month_count = year_count = 0;
for (x = 0; x < r.right; x++){
mchit.pt.x = x;
res = SendMessage(hwnd, MCM_HITTEST, 0, (LPARAM) & mchit);
expect(x, mchit.pt.x);
expect((5/2) * r.bottom / 19, mchit.pt.y);
expect(mchit.uHit, res);
-
- if (res != MCHT_TITLEBK && res != old_res) {
- title_index++;
- old_res = res;
-
- if (sizeof(title_hits) / sizeof(title_hits[0]) <= title_index)
- break;
-
- if (title_hits[title_index].todo) {
- todo_wine
- ok(title_hits[title_index].ht == res, "Expected %x, got %x, pos %d\n",
- title_hits[title_index].ht, res, x);
+ if (res != old_res) {
+
+ if (old_res == MCHT_TITLEBTNPREV)
+ in_the_middle = TRUE;
+
+ if (res == MCHT_TITLEBTNNEXT)
+ in_the_middle = FALSE;
+
+ if (in_the_middle) {
+ if (res == MCHT_TITLEMONTH)
+ month_count++;
+ else if (res == MCHT_TITLEYEAR)
+ year_count++;
+ } else {
+ title_index++;
+
+ if (sizeof(title_hits) / sizeof(title_hits[0]) <= title_index)
+ break;
+
+ if (title_hits[title_index].todo) {
+ todo_wine
+ ok(title_hits[title_index].ht == res, "Expected %x, got %x, pos %d\n",
+ title_hits[title_index].ht, res, x);
+ } else {
+ ok(title_hits[title_index].ht == res, "Expected %x, got %x, pos %d\n",
+ title_hits[title_index].ht, res, x);
+ }
}
- else ok(title_hits[title_index].ht == res, "Expected %x, got %x, pos %d\n",
- title_hits[title_index].ht, res, x);
+ old_res = res;
}
}
- todo_wine
- ok(r.right <= x && title_index + 1 == sizeof(title_hits) / sizeof(title_hits[0]),
- "Wrong title layout\n");
+ /* There are some limits, even if LOCALE_SYEARMONTH contains rubbish
+ * or no month/year indicators at all */
+ if (locale_month)
+ todo_wine ok(month_count == 1, "Expected 1 month item, got %d\n", month_count);
+ else
+ ok(month_count <= 1, "Too many month items: %d\n", month_count);
+
+ if (locale_year)
+ todo_wine ok(year_count == 1, "Expected 1 year item, got %d\n", year_count);
+ else
+ ok(year_count <= 1, "Too many year items: %d\n", year_count);
+
+ todo_wine ok(month_count + year_count >= 1, "Not enough month and year items\n");
+
+ ok(r.right <= x && title_index + 1 == sizeof(title_hits) / sizeof(title_hits[0]),
+ "Wrong title layout\n");
DestroyWindow(hwnd);
}
More information about the wine-cvs
mailing list