comctl32: datetime: tests for events for date and time picker added
Kanit Therdsteerasukdi
therdste at ucla.edu
Fri Mar 2 11:05:40 CST 2007
I added the tests for events for the date and time picker control. It
tests the order of the message sequences.
-------------- next part --------------
>From 1702f8e2b11bc530a386cd65cd6453c3473b0a7d Mon Sep 17 00:00:00 2001
From: Kanit <therdste at dellnotebook.(none)>
Date: Wed, 28 Feb 2007 17:03:37 -0800
Subject: [PATCH] added tests for events for datetime
---
dlls/comctl32/tests/datetime.c | 168 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 167 insertions(+), 1 deletions(-)
diff --git a/dlls/comctl32/tests/datetime.c b/dlls/comctl32/tests/datetime.c
index 28e0e53..0d84df6 100644
--- a/dlls/comctl32/tests/datetime.c
+++ b/dlls/comctl32/tests/datetime.c
@@ -21,15 +21,149 @@
#include <commctrl.h>
#include "wine/test.h"
+#include "msg.h"
#define expect(EXPECTED, GOT) ok((GOT)==(EXPECTED), "Expected %d, got %ld\n", (EXPECTED), (GOT))
#define expect_unsuccess(EXPECTED, GOT) ok((GOT)==(EXPECTED), "Expected %d(unsuccessful), got %ld(successful)\n", (EXPECTED), (GOT))
+#define NUM_MSG_SEQUENCES 1
+#define DATETIME_SEQ_INDEX 0
+
+static struct msg_sequence *sequences[NUM_MSG_SEQUENCES];
+
+static const struct message test_dtm_set_format_seq[] = {
+ { DTM_SETFORMATA, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { DTM_SETFORMATA, sent|wparam, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_set_and_get_mccolor_seq[] = {
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000000, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000000, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000004, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000004, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000004, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000004, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000001, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000001, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000001, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000001, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000002, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000002, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000002, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000002, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000003, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000003, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000003, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000003, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000005, 0x00000000 },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000005, 0x00ffffff },
+ { DTM_SETMCCOLOR, sent|wparam|lparam, 0x00000005, 0x00dcb464 },
+ { DTM_GETMCCOLOR, sent|wparam|lparam, 0x00000005, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_set_and_get_mcfont_seq[] = {
+ { DTM_SETMCFONT, sent|lparam, 0, 0x00000001 },
+ { DTM_GETMCFONT, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_get_monthcal_seq[] = {
+ { DTM_GETMONTHCAL, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_set_and_get_range_seq[] = {
+ { DTM_SETRANGE, sent|wparam, 0x00000001 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000002 },
+ { DTM_SETRANGE, sent|wparam, 0x00000002 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000},
+ { DTM_SETRANGE, sent|wparam, 0x00000001 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_set_range_swap_min_max_seq[] = {
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_GETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_GETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { DTM_SETRANGE, sent|wparam, 0x00000003 },
+ { DTM_GETRANGE, sent|wparam, 0x00000000 },
+ { 0 }
+};
+
+static const struct message test_dtm_set_and_get_system_time_seq[] = {
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000001 },
+ { DTM_GETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_GETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { DTM_SETSYSTEMTIME, sent|wparam, 0x00000000 },
+ { 0 }
+};
+
+static const struct message destroy_window_seq[] = {
+ { WM_DESTROY, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { WM_NCDESTROY, sent|wparam|lparam, 0x00000000, 0x00000000 },
+ { 0 }
+};
+
+struct subclass_info
+{
+ WNDPROC oldproc;
+};
+
+static LRESULT WINAPI datetime_subclass_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ struct subclass_info *info = (struct subclass_info *)GetWindowLongA(hwnd, GWL_USERDATA);
+ static long defwndproc_counter = 0;
+ LRESULT ret;
+ struct message msg;
+
+ trace("datetime: %p, %04x, %08x, %08lx\n", hwnd, message, wParam, lParam);
+
+ msg.message = message;
+ msg.flags = sent|wparam|lparam;
+ if (defwndproc_counter) msg.flags |= defwinproc;
+ msg.wParam = wParam;
+ msg.lParam = lParam;
+ add_message(sequences, DATETIME_SEQ_INDEX, &msg);
+
+ defwndproc_counter++;
+ ret = CallWindowProcA(info->oldproc, hwnd, message, wParam, lParam);
+ defwndproc_counter--;
+
+ return ret;
+}
+
static HWND create_datetime_control(DWORD style, DWORD exstyle)
{
+ struct subclass_info *info;
HWND hWndDateTime = NULL;
+ info = HeapAlloc(GetProcessHeap(), 0, sizeof(struct subclass_info));
+ if (!info)
+ return NULL;
+
hWndDateTime = CreateWindowEx(0,
DATETIMEPICK_CLASS,
NULL,
@@ -40,6 +174,15 @@ static HWND create_datetime_control(DWORD style, DWORD exstyle)
NULL,
NULL);
+ if (!hWndDateTime) {
+ HeapFree(GetProcessHeap(), 0, info);
+ return NULL;
+ }
+
+ info->oldproc = (WNDPROC)SetWindowLongA(hWndDateTime, GWL_WNDPROC,
+ (LONG)datetime_subclass_proc);
+ SetWindowLongA(hWndDateTime, GWL_USERDATA, (LONG)info);
+
return hWndDateTime;
}
@@ -55,6 +198,9 @@ static void test_dtm_set_format(HWND hWndDateTime)
(LPARAM)"'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy");
expect(1, r);
}
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_format_seq, "test_dtm_set_format", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
void test_mccolor_types(HWND hWndDateTime, int mccolor_type, const char* mccolor_name)
@@ -85,6 +231,9 @@ static void test_dtm_set_and_get_mccolor(HWND hWndDateTime)
test_mccolor_types(hWndDateTime, MCSC_TITLEBK, "MCSC_TITLEBK");
test_mccolor_types(hWndDateTime, MCSC_TITLETEXT, "MCSC_TITLETEXT");
test_mccolor_types(hWndDateTime, MCSC_TRAILINGTEXT, "MCSC_TRAILINGTEXT");
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_mccolor_seq, "test_dtm_set_and_get_mccolor", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
static void test_dtm_set_and_get_mcfont(HWND hWndDateTime)
@@ -95,6 +244,9 @@ static void test_dtm_set_and_get_mcfont(HWND hWndDateTime)
SendMessage(hWndDateTime, DTM_SETMCFONT, (WPARAM)hFontOrig, TRUE);
hFontNew = (HFONT)SendMessage(hWndDateTime, DTM_GETMCFONT, 0, 0);
ok(hFontOrig == hFontNew, "Expected hFontOrig==hFontNew, hFontOrig=%p, hFontNew=%p\n", hFontOrig, hFontNew);
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_mcfont_seq, "test_dtm_set_and_get_mcfont", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
static void test_dtm_get_monthcal(HWND hWndDateTime)
@@ -105,6 +257,9 @@ static void test_dtm_get_monthcal(HWND hWndDateTime)
r = SendMessage(hWndDateTime, DTM_GETMONTHCAL, 0, 0);
ok(r == (LPARAM)NULL, "Expected NULL(no child month calendar control), got %ld\n", r);
}
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_get_monthcal_seq, "test_dtm_get_monthcal", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
void fill_systime_struct(SYSTEMTIME *st, int year, int month, int dayofweek, int day, int hour, int minute, int second, int milliseconds)
@@ -218,6 +373,9 @@ static void test_dtm_set_and_get_range(HWND hWndDateTime)
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_range_seq, "test_dtm_set_and_get_range", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
/* when max<min for DTM_SETRANGE, Windows seems to swap the min and max values,
@@ -311,6 +469,9 @@ static void test_dtm_set_range_swap_min_max(HWND hWndDateTime)
ok(r == (GDTR_MIN | GDTR_MAX), "Expected %x, not %x(GDTR_MIN) or %x(GDTR_MAX), got %lx\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
expect_systime(&st[0], &getSt[0]);
expect_systime(&st[1], &getSt[1]);
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_range_swap_min_max_seq, "test_dtm_set_range_swap_min_max", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
static void test_dtm_set_and_get_system_time(HWND hWndDateTime)
@@ -352,6 +513,9 @@ static void test_dtm_set_and_get_system_time(HWND hWndDateTime)
r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
expect_unsuccess(0, r);
}
+
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_system_time_seq, "test_dtm_set_and_get_system_time", FALSE);
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
}
static void test_datetime_control(void)
@@ -369,12 +533,13 @@ static void test_datetime_control(void)
test_dtm_set_and_get_range(hWndDateTime);
test_dtm_set_range_swap_min_max(hWndDateTime);
test_dtm_set_and_get_system_time(hWndDateTime);
- }
+ }
else {
skip("hWndDateTime is NULL\n");
}
DestroyWindow(hWndDateTime);
+ ok_sequence(sequences, DATETIME_SEQ_INDEX, destroy_window_seq, "test_dtm_set_and_get_system_time", TRUE);
}
START_TEST(datetime)
@@ -384,6 +549,7 @@ START_TEST(datetime)
icex.dwSize = sizeof(icex);
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
+ init_msg_sequences(sequences, NUM_MSG_SEQUENCES);
test_datetime_control();
}
--
1.4.4.4
More information about the wine-patches
mailing list