From a70df444aec2ebf80ff63b0b76b4f9187a21420b Mon Sep 17 00:00:00 2001 From: Bill Medland Date: Thu, 3 May 2007 16:11:08 -0700 Subject: [PATCH] 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(+) diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 08f4982dd81..9f1d7d78e07 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 4ce3851b0fd..5f4c5b43512 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))), -- 2.11.4.GIT