comctl32: datetime: initial tests for date and time picker
Kanit Therdsteerasukdi
therdste at ucla.edu
Thu Feb 8 13:50:37 CST 2007
Hi,
I'm a student at UCLA taking CS130: Software Engineering. For CS130, we
are writing conformance tests for Common Controls (comctl32). I will be
working on the Date and Time Picker. Attached is an initial test,
testing the getters and setters.
Disclaimer: I have never seen any secret Microsoft source code.
-------------- next part --------------
>From f9577ab349027fc18e8b325086cdd24fee768777 Mon Sep 17 00:00:00 2001
From: Kanit Therdsteerasukdi <therdste at ucla.edu>
Date: Wed, 7 Feb 2007 23:52:33 -0800
Subject: [PATCH] initial tests for datetime
---
dlls/comctl32/tests/Makefile.in | 1 +
dlls/comctl32/tests/datetime.c | 403 +++++++++++++++++++++++++++++++++++++++
2 files changed, 404 insertions(+), 0 deletions(-)
diff --git a/dlls/comctl32/tests/Makefile.in b/dlls/comctl32/tests/Makefile.in
index b879575..3e71106 100644
--- a/dlls/comctl32/tests/Makefile.in
+++ b/dlls/comctl32/tests/Makefile.in
@@ -7,6 +7,7 @@ IMPORTS = comctl32 ole32 shlwapi user32 gdi32 advapi32 kernel32
CTESTS = \
comboex.c \
+ datetime.c \
dpa.c \
header.c \
imagelist.c \
diff --git a/dlls/comctl32/tests/datetime.c b/dlls/comctl32/tests/datetime.c
new file mode 100755
index 0000000..59d3170
--- /dev/null
+++ b/dlls/comctl32/tests/datetime.c
@@ -0,0 +1,403 @@
+/* Unit test suite for datetime control.
+ *
+ * Copyright 2007 Kanit Therdsteerasukdi
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <assert.h>
+#include <windows.h>
+#include <commctrl.h>
+#include <stdio.h>
+
+#include "wine/test.h"
+
+static HINSTANCE g_hinst;
+
+static HWND create_datetime_control(DWORD style, DWORD exstyle)
+{
+ HWND hWndDateTime = NULL;
+
+ hWndDateTime = CreateWindowEx(0,
+ DATETIMEPICK_CLASS,
+ NULL,
+ style,
+ 0,50,300,120,
+ NULL,
+ NULL,
+ g_hinst,
+ NULL);
+
+ assert(hWndDateTime!=NULL);
+ return hWndDateTime;
+}
+
+static void test_dtm_setformat(HWND hWndDateTime)
+{
+ LRESULT r;
+
+ r = SendMessage(hWndDateTime, DTM_SETFORMAT, 0, (LPARAM)NULL);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETFORMAT, 0, (LPARAM)"'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy");
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+
+ return;
+}
+
+static void test_dtm_setandgetmccolor(HWND hWndDateTime)
+{
+ LRESULT r;
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_BACKGROUND, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_BACKGROUND, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_BACKGROUND, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_BACKGROUND, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_MONTHBK, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_MONTHBK, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_MONTHBK, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_MONTHBK, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TEXT, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TEXT, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TEXT, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_TEXT, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLEBK, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLEBK, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLEBK, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_TITLEBK, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLETEXT, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLETEXT, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TITLETEXT, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_TITLETEXT, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TRAILINGTEXT, RGB(0,0,0));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TRAILINGTEXT, RGB(255,255,255));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETMCCOLOR, MCSC_TRAILINGTEXT, RGB(100,180,220));
+ ok(r != -1, "Expected COLORREF of previous value, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETMCCOLOR, MCSC_TRAILINGTEXT, 0);
+ ok(r != -1 && r==RGB(100,180,220), "Expected %d, got %ld\n", RGB(100,180,220), r);
+
+ return;
+}
+
+static void test_dtm_setandgetmcfont(HWND hWndDateTime)
+{
+ HFONT hFontOrig, hFontNew;
+
+ hFontOrig = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
+ 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);
+
+ return;
+}
+
+static void test_dtm_getmonthcal(HWND hWndDateTime)
+{
+ LRESULT r;
+
+ todo_wine {
+ r = SendMessage(hWndDateTime, DTM_GETMONTHCAL, 0, 0);
+ ok(r == (LPARAM)NULL, "Expected NULL(no child month calendar control), got %ld\n", r);
+ }
+
+ return;
+}
+
+static void test_dtm_setandgetrange(HWND hWndDateTime)
+{
+ LRESULT r;
+ SYSTEMTIME st[2];
+ SYSTEMTIME getSt[2];
+
+ /* initialize st[0] to lowest possible value */
+ st[0].wYear=1601;
+ st[0].wMonth=1;
+ st[0].wDayOfWeek=0;
+ st[0].wDay=1;
+ st[0].wHour=0;
+ st[0].wMinute=0;
+ st[0].wSecond=0;
+ st[0].wMilliseconds=0;
+ /* intialize st[1] to all invalid numbers */
+ st[1].wYear=0;
+ st[1].wMonth=0;
+ st[1].wDayOfWeek=7;
+ st[1].wDay=0;
+ st[1].wHour=24;
+ st[1].wMinute=60;
+ st[1].wSecond=60;
+ st[1].wMilliseconds=1000;
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETRANGE, 0, (LPARAM)getSt);
+ ok(r == GDTR_MIN, "Expected %d, not %d(GDTR_MAX) or %d(GDTR_MIN | GDTR_MAX), got %ld\n", GDTR_MIN, GDTR_MAX, GDTR_MIN | GDTR_MAX, r);
+ ok(st[0].wYear == getSt[0].wYear, "Expected %d, got %d\n", st[0].wYear, getSt[0].wYear);
+ ok(st[0].wMonth == getSt[0].wMonth, "Expected %d, got %d\n", st[0].wMonth, getSt[0].wMonth);
+ ok(st[0].wDayOfWeek == getSt[0].wDayOfWeek, "Expected %d, got %d\n", st[0].wDayOfWeek, getSt[0].wDayOfWeek);
+ ok(st[0].wDay == getSt[0].wDay, "Expected %d, got %d\n", st[0].wDay, getSt[0].wDay);
+ ok(st[0].wHour == getSt[0].wHour, "Expected %d, got %d\n", st[0].wHour, getSt[0].wHour);
+ ok(st[0].wMinute == getSt[0].wMinute, "Expected %d, got %d\n", st[0].wMinute, getSt[0].wMinute);
+ ok(st[0].wSecond == getSt[0].wSecond, "Expected %d, got %d\n", st[0].wSecond, getSt[0].wSecond);
+ ok(st[0].wMilliseconds == getSt[0].wMilliseconds, "Expected %d, got %d\n", st[0].wMilliseconds, getSt[0].wMilliseconds);
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
+ ok(r == 0, "Expected zero(unsuccessful), got %ld(successful)\n", r);
+
+ /* set st[0] to all invalid numbers */
+ st[0].wYear=0;
+ st[0].wMonth=0;
+ st[0].wDayOfWeek=7;
+ st[0].wDay=0;
+ st[0].wHour=24;
+ st[0].wMinute=60;
+ st[0].wSecond=60;
+ st[0].wMilliseconds=1000;
+ /* set st[1] to highest possible value */
+ st[1].wYear=30827;
+ st[1].wMonth=12;
+ st[1].wDayOfWeek=6;
+ st[1].wDay=31;
+ st[1].wHour=23;
+ st[1].wMinute=59;
+ st[1].wSecond=59;
+ st[1].wMilliseconds=999;
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MAX, (LPARAM)st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETRANGE, 0, (LPARAM)getSt);
+ todo_wine {
+ ok(r == GDTR_MAX, "Expected %d, not %d(GDTR_MIN) or %d(GDTR_MIN | GDTR_MAX), got %ld\n", GDTR_MAX, GDTR_MIN, GDTR_MIN | GDTR_MAX, r);
+ }
+ ok(st[1].wYear == getSt[1].wYear, "Expected %d, got %d\n", st[1].wYear, getSt[1].wYear);
+ ok(st[1].wMonth == getSt[1].wMonth, "Expected %d, got %d\n", st[1].wMonth, getSt[1].wMonth);
+ ok(st[1].wDayOfWeek == getSt[1].wDayOfWeek, "Expected %d, got %d\n", st[1].wDayOfWeek, getSt[1].wDayOfWeek);
+ ok(st[1].wDay == getSt[1].wDay, "Expected %d, got %d\n", st[1].wDay, getSt[1].wDay);
+ ok(st[1].wHour == getSt[1].wHour, "Expected %d, got %d\n", st[1].wHour, getSt[1].wHour);
+ ok(st[1].wMinute == getSt[1].wMinute, "Expected %d, got %d\n", st[1].wMinute, getSt[1].wMinute);
+ ok(st[1].wSecond == getSt[1].wSecond, "Expected %d, got %d\n", st[1].wSecond, getSt[1].wSecond);
+ ok(st[1].wMilliseconds == getSt[1].wMilliseconds, "Expected %d, got %d\n", st[1].wMilliseconds, getSt[1].wMilliseconds);
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MIN, (LPARAM)st);
+ ok(r == 0, "Expected zero(unsuccessful), got %ld(successful)\n", r);
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
+ ok(r == 0, "Expected zero(unsuccessful), got %ld(successful)\n", r);
+
+ /* set st[0] to highest possible value */
+ st[0].wYear=30827;
+ st[0].wMonth=12;
+ st[0].wDayOfWeek=6;
+ st[0].wDay=31;
+ st[0].wHour=23;
+ st[0].wMinute=59;
+ st[0].wSecond=59;
+ st[0].wMilliseconds=999;
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETRANGE, 0, (LPARAM)getSt);
+ ok(r == (GDTR_MIN | GDTR_MAX), "Expected %d, not %d(GDTR_MIN) or %d(GDTR_MAX), got %ld\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
+ ok(st[0].wYear == getSt[0].wYear, "Expected %d, got %d\n", st[0].wYear, getSt[0].wYear);
+ ok(st[0].wMonth == getSt[0].wMonth, "Expected %d, got %d\n", st[0].wMonth, getSt[0].wMonth);
+ ok(st[0].wDayOfWeek == getSt[0].wDayOfWeek, "Expected %d, got %d\n", st[0].wDayOfWeek, getSt[0].wDayOfWeek);
+ ok(st[0].wDay == getSt[0].wDay, "Expected %d, got %d\n", st[0].wDay, getSt[0].wDay);
+ ok(st[0].wHour == getSt[0].wHour, "Expected %d, got %d\n", st[0].wHour, getSt[0].wHour);
+ ok(st[0].wMinute == getSt[0].wMinute, "Expected %d, got %d\n", st[0].wMinute, getSt[0].wMinute);
+ ok(st[0].wSecond == getSt[0].wSecond, "Expected %d, got %d\n", st[0].wSecond, getSt[0].wSecond);
+ ok(st[0].wMilliseconds == getSt[0].wMilliseconds, "Expected %d, got %d\n", st[0].wMilliseconds, getSt[0].wMilliseconds);
+ ok(st[1].wYear == getSt[1].wYear, "Expected %d, got %d\n", st[1].wYear, getSt[1].wYear);
+ ok(st[1].wMonth == getSt[1].wMonth, "Expected %d, got %d\n", st[1].wMonth, getSt[1].wMonth);
+ ok(st[1].wDayOfWeek == getSt[1].wDayOfWeek, "Expected %d, got %d\n", st[1].wDayOfWeek, getSt[1].wDayOfWeek);
+ ok(st[1].wDay == getSt[1].wDay, "Expected %d, got %d\n", st[1].wDay, getSt[1].wDay);
+ ok(st[1].wHour == getSt[1].wHour, "Expected %d, got %d\n", st[1].wHour, getSt[1].wHour);
+ ok(st[1].wMinute == getSt[1].wMinute, "Expected %d, got %d\n", st[1].wMinute, getSt[1].wMinute);
+ ok(st[1].wSecond == getSt[1].wSecond, "Expected %d, got %d\n", st[1].wSecond, getSt[1].wSecond);
+ ok(st[1].wMilliseconds == getSt[1].wMilliseconds, "Expected %d, got %d\n", st[1].wMilliseconds, getSt[1].wMilliseconds);
+
+ /* set st[0] to value higher than minimum */
+ st[0].wYear=1980;
+ st[0].wMonth=1;
+ st[0].wDayOfWeek=3;
+ st[0].wDay=23;
+ st[0].wHour=14;
+ st[0].wMinute=34;
+ st[0].wSecond=37;
+ st[0].wMilliseconds=465;
+ /* set st[1] to value lower than maximum */
+ st[1].wYear=2007;
+ st[1].wMonth=3;
+ st[1].wDayOfWeek=2;
+ st[1].wDay=31;
+ st[1].wHour=23;
+ st[1].wMinute=59;
+ st[1].wSecond=59;
+ st[1].wMilliseconds=999;
+
+ r = SendMessage(hWndDateTime, DTM_SETRANGE, GDTR_MIN | GDTR_MAX, (LPARAM)st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETRANGE, 0, (LPARAM)getSt);
+ ok(r == (GDTR_MIN | GDTR_MAX), "Expected %d, not %d(GDTR_MIN) or %d(GDTR_MAX), got %ld\n", (GDTR_MIN | GDTR_MAX), GDTR_MIN, GDTR_MAX, r);
+ ok(st[0].wYear == getSt[0].wYear, "Expected %d, got %d\n", st[0].wYear, getSt[0].wYear);
+ ok(st[0].wMonth == getSt[0].wMonth, "Expected %d, got %d\n", st[0].wMonth, getSt[0].wMonth);
+ ok(st[0].wDayOfWeek == getSt[0].wDayOfWeek, "Expected %d, got %d\n", st[0].wDayOfWeek, getSt[0].wDayOfWeek);
+ ok(st[0].wDay == getSt[0].wDay, "Expected %d, got %d\n", st[0].wDay, getSt[0].wDay);
+ ok(st[0].wHour == getSt[0].wHour, "Expected %d, got %d\n", st[0].wHour, getSt[0].wHour);
+ ok(st[0].wMinute == getSt[0].wMinute, "Expected %d, got %d\n", st[0].wMinute, getSt[0].wMinute);
+ ok(st[0].wSecond == getSt[0].wSecond, "Expected %d, got %d\n", st[0].wSecond, getSt[0].wSecond);
+ ok(st[0].wMilliseconds == getSt[0].wMilliseconds, "Expected %d, got %d\n", st[0].wMilliseconds, getSt[0].wMilliseconds);
+ ok(st[1].wYear == getSt[1].wYear, "Expected %d, got %d\n", st[1].wYear, getSt[1].wYear);
+ ok(st[1].wMonth == getSt[1].wMonth, "Expected %d, got %d\n", st[1].wMonth, getSt[1].wMonth);
+ ok(st[1].wDayOfWeek == getSt[1].wDayOfWeek, "Expected %d, got %d\n", st[1].wDayOfWeek, getSt[1].wDayOfWeek);
+ ok(st[1].wDay == getSt[1].wDay, "Expected %d, got %d\n", st[1].wDay, getSt[1].wDay);
+ ok(st[1].wHour == getSt[1].wHour, "Expected %d, got %d\n", st[1].wHour, getSt[1].wHour);
+ ok(st[1].wMinute == getSt[1].wMinute, "Expected %d, got %d\n", st[1].wMinute, getSt[1].wMinute);
+ ok(st[1].wSecond == getSt[1].wSecond, "Expected %d, got %d\n", st[1].wSecond, getSt[1].wSecond);
+ ok(st[1].wMilliseconds == getSt[1].wMilliseconds, "Expected %d, got %d\n", st[1].wMilliseconds, getSt[1].wMilliseconds);
+
+ return;
+}
+
+static void test_dtm_setandgetsystemtime(HWND hWndDateTime)
+{
+ LRESULT r;
+ SYSTEMTIME st;
+ SYSTEMTIME getSt;
+
+ r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_NONE, (LPARAM)&st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
+ ok(r == GDT_NONE, "Expected %d, not %d(GDT_VALID) or %d(GDT_ERROR), got %ld\n", GDT_NONE, GDT_VALID, GDT_ERROR, r);
+
+ /* set st to lowest possible value */
+ st.wYear=1601;
+ st.wMonth=1;
+ st.wDayOfWeek=0;
+ st.wDay=1;
+ st.wHour=0;
+ st.wMinute=0;
+ st.wSecond=0;
+ st.wMilliseconds=0;
+
+ r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+
+ /* set st to highest possible value */
+ st.wYear=30827;
+ st.wMonth=12;
+ st.wDayOfWeek=6;
+ st.wDay=31;
+ st.wHour=23;
+ st.wMinute=59;
+ st.wSecond=59;
+ st.wMilliseconds=999;
+
+ r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+
+ /* set st to value between min and max */
+ st.wYear=1980;
+ st.wMonth=1;
+ st.wDayOfWeek=3;
+ st.wDay=23;
+ st.wHour=14;
+ st.wMinute=34;
+ st.wSecond=37;
+ st.wMilliseconds=465;
+
+ r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
+ ok(r != 0, "Expected nonzero, got %ld\n", r);
+ r = SendMessage(hWndDateTime, DTM_GETSYSTEMTIME, 0, (LPARAM)&getSt);
+ ok(r == GDT_VALID, "Expected %d, not %d(GDT_NONE) or %d(GDT_ERROR), got %ld\n", GDT_VALID, GDT_NONE, GDT_ERROR, r);
+ ok(st.wYear == getSt.wYear, "Expected %d, got %d\n", st.wYear, getSt.wYear);
+ ok(st.wMonth == getSt.wMonth, "Expected %d, got %d\n", st.wMonth, getSt.wMonth);
+ ok(st.wDayOfWeek == getSt.wDayOfWeek, "Expected %d, got %d\n", st.wDayOfWeek, getSt.wDayOfWeek);
+ ok(st.wDay == getSt.wDay, "Expected %d, got %d\n", st.wDay, getSt.wDay);
+ ok(st.wHour == getSt.wHour, "Expected %d, got %d\n", st.wHour, getSt.wHour);
+ ok(st.wMinute == getSt.wMinute, "Expected %d, got %d\n", st.wMinute, getSt.wMinute);
+ ok(st.wSecond == getSt.wSecond, "Expected %d, got %d\n", st.wSecond, getSt.wSecond);
+ ok(st.wMilliseconds == getSt.wMilliseconds, "Expected %d, got %d\n", st.wMilliseconds, getSt.wMilliseconds);
+
+ /* set st to invalid value */
+ st.wYear=0;
+ st.wMonth=0;
+ st.wDayOfWeek=7;
+ st.wDay=0;
+ st.wHour=24;
+ st.wMinute=60;
+ st.wSecond=60;
+ st.wMilliseconds=1000;
+
+ todo_wine {
+ r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
+ ok(r == 0, "Expected zero(not successful), got %ld(succesful)\n", r);
+ }
+
+ return;
+}
+
+static void test_datetime_control(void)
+{
+ HWND hWndDateTime;
+
+ hWndDateTime = create_datetime_control(DTS_SHOWNONE, 0);
+
+ test_dtm_setformat(hWndDateTime);
+ test_dtm_setandgetmccolor(hWndDateTime);
+ test_dtm_setandgetmcfont(hWndDateTime);
+ test_dtm_getmonthcal(hWndDateTime);
+ test_dtm_setandgetrange(hWndDateTime);
+ test_dtm_setandgetsystemtime(hWndDateTime);
+
+ DestroyWindow(hWndDateTime);
+}
+
+START_TEST(datetime)
+{
+ INITCOMMONCONTROLSEX icex;
+
+ g_hinst = GetModuleHandleA(NULL);
+
+ icex.dwSize = sizeof(icex);
+ icex.dwICC = ICC_DATE_CLASSES;
+ InitCommonControlsEx(&icex);
+
+ test_datetime_control();
+}
--
1.4.4.4
More information about the wine-patches
mailing list