Boundary test cases for SystemTimeToFileTime and GetDateFormat

James Hawkins truiken at gmail.com
Thu May 3 17:43:45 CDT 2007


On 5/3/07, Bill Medland <billmedland at shaw.ca> wrote:
> Bill Medland (billmedland at 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



More information about the wine-devel mailing list