Re: Boundary test cases for SystemTimeToFileTime and GetDateFormat
On 5/3/07, Bill Medland <billmedland(a)shaw.ca> wrote:
Bill Medland (billmedland(a)shaw.ca) Lower boundary test cases for SystemTimeToFileTime and GetDateFormat
Index: wine/dlls/kernel32/tests/locale.c =================================================================== RCS file: /home/wine/wine/dlls/kernel32/tests/locale.c,v retrieving revision 1.11 diff -u -r1.11 locale.c --- wine/dlls/kernel32/tests/locale.c 2 Apr 2007 11:24:36 -0000 1.11 +++ wine/dlls/kernel32/tests/locale.c 3 May 2007 22:21:55 -0000 @@ -424,6 +424,34 @@ STRINGSW("dddd d MMMM yyyy","Wednesday 23 October 2002"); /* Incorrect DOW and time */ ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer)); EXPECT_VALID; EXPECT_LENW; EXPECT_EQW; + + /* Limit tests */ + + curtime.wYear = 1601; + curtime.wMonth = 1; + curtime.wDay = 1; + curtime.wDayOfWeek = 0; /* Irrelevant */ + curtime.wHour = 0; + curtime.wMinute = 0; + curtime.wSecond = 0; + curtime.wMilliseconds = 0; + STRINGSW("dddd d MMMM yyyy","Monday 1 January 1601"); + SetLastError(0xdeadbeef); + ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer)); + EXPECT_VALID; EXPECT_LENW; EXPECT_EQW; + + curtime.wYear = 1600; + curtime.wMonth = 12; + curtime.wDay = 31; + curtime.wDayOfWeek = 0; /* Irrelevant */ + curtime.wHour = 23; + curtime.wMinute = 59; + curtime.wSecond = 59; + curtime.wMilliseconds = 999; + STRINGSW("dddd d MMMM yyyy","Friday 31 December 1600"); + SetLastError(0xdeadbeef); + ret = GetDateFormatW (lcid, 0, &curtime, input, buffer, COUNTOF(buffer)); + EXPECT_INVALID; }
Index: wine/dlls/kernel32/tests/time.c =================================================================== RCS file: /home/wine/wine/dlls/kernel32/tests/time.c,v retrieving revision 1.3 diff -u -r1.3 time.c --- wine/dlls/kernel32/tests/time.c 4 Jan 2007 10:46:26 -0000 1.3 +++ wine/dlls/kernel32/tests/time.c 3 May 2007 22:22:04 -0000 @@ -73,6 +73,23 @@ (st).wSecond = 32; \ (st).wMilliseconds = 123;
+#define SETUP_ZEROTIME(st) \ + (st).wYear = 1601; \ + (st).wMonth = 1; \ + (st).wDay = 1; \ + (st).wHour = 0; \ + (st).wMinute = 0; \ + (st).wSecond = 0; \ + (st).wMilliseconds = 0; + +#define SETUP_EARLY(st) \ + (st).wYear = 1600; \ + (st).wMonth = 12; \ + (st).wDay = 31; \ + (st).wHour = 23; \ + (st).wMinute = 59; \ + (st).wSecond = 59; \ + (st).wMilliseconds = 999;
static void test_conversions(void) @@ -82,6 +99,12 @@
memset(&ft,0,sizeof ft);
+ SETUP_EARLY(st) + ok ((!SystemTimeToFileTime(&st, &ft) && GetLastError() == ERROR_INVALID_PARAMETER), "Conversion failed EARLY\n"); + + SETUP_ZEROTIME(st) + ok (SystemTimeToFileTime(&st, &ft) && ft.dwHighDateTime == 0 && ft.dwLowDateTime == 0, "Conversion failed ZERO_TIME\n"); +
You need to check each part of those conditions separately in their own ok()'s. -- James Hawkins
participants (1)
-
James Hawkins