Bill Medland : kernel32/tests: Boundary test cases for SystemTimeToFileTime and GetDateFormat.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 4 07:11:10 CDT 2007


Module: wine
Branch: master
Commit: a70df444aec2ebf80ff63b0b76b4f9187a21420b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a70df444aec2ebf80ff63b0b76b4f9187a21420b

Author: Bill Medland <billmedland at 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))),




More information about the wine-cvs mailing list