Module: wine Branch: master Commit: a70df444aec2ebf80ff63b0b76b4f9187a21420b URL: http://source.winehq.org/git/wine.git/?a=commit;h=a70df444aec2ebf80ff63b0b76...
Author: Bill Medland billmedland@shaw.ca Date: Thu May 3 16:11:08 2007 -0700
kernel32/tests: Boundary test cases for SystemTimeToFileTime and GetDateFormat.
---
dlls/kernel32/tests/locale.c | 28 ++++++++++++++++++++++++++++ dlls/kernel32/tests/time.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 08f4982..9f1d7d7 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -424,6 +424,34 @@ static void test_GetDateFormatW(void) 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; }
diff --git a/dlls/kernel32/tests/time.c b/dlls/kernel32/tests/time.c index 4ce3851..5f4c5b4 100644 --- a/dlls/kernel32/tests/time.c +++ b/dlls/kernel32/tests/time.c @@ -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,17 @@ static void test_conversions(void)
memset(&ft,0,sizeof ft);
+ SETUP_EARLY(st) + ok (!SystemTimeToFileTime(&st, &ft), "Conversion succeeded EARLY\n"); + ok (GetLastError() == ERROR_INVALID_PARAMETER, "EARLY should be INVALID\n"); + + SETUP_ZEROTIME(st) + ok (SystemTimeToFileTime(&st, &ft), "Conversion failed ZERO_TIME\n"); + ok( (!((ft.dwHighDateTime != 0) || (ft.dwLowDateTime != 0))), + "Wrong time for ATIME: %08x %08x (correct %08x %08x)\n", + ft.dwLowDateTime, ft.dwHighDateTime, 0, 0); + + SETUP_ATIME(st) ok (SystemTimeToFileTime(&st,&ft), "Conversion Failed ATIME\n"); ok( (!((ft.dwHighDateTime != ATIME_HI) || (ft.dwLowDateTime!=ATIME_LOW))),