2699 lines
88 KiB
C
2699 lines
88 KiB
C
/*++
|
|
|
|
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
gdftest.c
|
|
|
|
Abstract:
|
|
|
|
Test module for NLS API GetDateFormat.
|
|
|
|
NOTE: This code was simply hacked together quickly in order to
|
|
test the different code modules of the NLS component.
|
|
This is NOT meant to be a formal regression test.
|
|
|
|
Revision History:
|
|
|
|
04-30-93 JulieB Created.
|
|
|
|
--*/
|
|
|
|
|
|
|
|
//
|
|
// Include Files.
|
|
//
|
|
|
|
#include "nlstest.h"
|
|
|
|
|
|
|
|
|
|
//
|
|
// Constant Declarations.
|
|
//
|
|
|
|
#define BUFSIZE 50 // buffer size in wide chars
|
|
#define GDF_INVALID_FLAGS ((DWORD)(~(LOCALE_NOUSEROVERRIDE | \
|
|
DATE_SHORTDATE | \
|
|
DATE_LONGDATE | \
|
|
DATE_YEARMONTH | \
|
|
DATE_USE_ALT_CALENDAR)))
|
|
|
|
#define ENGLISH_US L"5/1/1993"
|
|
#define L_ENGLISH_US L"Saturday, May 01, 1993"
|
|
#define CZECH L"1.5.1993"
|
|
|
|
#define YEAR L"1993"
|
|
#define YEAR_2 L"93"
|
|
|
|
#define US_DAYOFWEEK L"Saturday"
|
|
#define US_MONTH L"May"
|
|
#define US_ABBREVDAY L"Sat"
|
|
#define US_ABBREVMONTH L"May"
|
|
|
|
#define SPANISH_DAYOFWEEK L"sábado"
|
|
#define SPANISH_MONTH L"mayo"
|
|
#define SPANISH_ABBREVDAY L"sáb"
|
|
#define SPANISH_ABBREVMONTH L"may"
|
|
|
|
#define L_RUSSIAN_2 L"\x041c\x0430\x0439"
|
|
#define L_RUSSIAN_3 L"\x043c\x0430\x044f 1"
|
|
#define L_RUSSIAN_4 L"1 93 \x041c\x0430\x0439"
|
|
|
|
#define L_POLISH_2 L"maj"
|
|
#define L_POLISH_3 L"maja 1"
|
|
#define L_POLISH_4 L"1 93 maj"
|
|
|
|
#define JAPAN_ALT L"\x5e73\x6210 5/5/1"
|
|
#define CHINA_ALT L"82/5/1"
|
|
#define KOREA_ALT L"\xb2e8\xae30 4326-05-01"
|
|
|
|
#define L_JAPAN_ALT L"\x5e73\x6210 5\x5e74\x0035\x6708\x0031\x65e5"
|
|
#define L_CHINA_ALT L"\x4e2d\x83ef\x6c11\x570b\x0038\x0032\x5e74\x0035\x6708\x0031\x65e5"
|
|
#define L_KOREA_ALT L"\xb2e8\xae30 4326\xb144 5\xc6d4 1\xc77c \xd1a0\xc694\xc77c"
|
|
|
|
#define L_JAPAN_ALT_2 L"\x5927\x6b63 2\x5e74\x0035\x6708\x0031\x65e5"
|
|
#define L_CHINA_ALT_2 L"1832\x5e74\x0035\x6708\x0031\x65e5"
|
|
#define L_KOREA_ALT_2 L"\xb2e8\xae30 4165\xb144 5\xc6d4 1\xc77c \xd654\xc694\xc77c"
|
|
|
|
#define L_JAPAN_ALT_3 L" 32\x5e74\x0035\x6708\x0031\x65e5"
|
|
|
|
|
|
|
|
|
|
//
|
|
// Global Variables.
|
|
//
|
|
|
|
LCID Locale;
|
|
|
|
SYSTEMTIME SysDate;
|
|
|
|
WCHAR lpDateStr[BUFSIZE];
|
|
|
|
WCHAR pSShortDate[BUFSIZE];
|
|
|
|
|
|
//
|
|
// Date format buffers must be in line with the pAllLocales global
|
|
// buffer.
|
|
//
|
|
LPWSTR pShortDate[] =
|
|
{
|
|
L"01.5.1993 \x0433.", // 0x0402
|
|
L"1993/5/1", // 0x0404
|
|
L"1993-5-1", // 0x0804
|
|
L"1/5/1993", // 0x0c04
|
|
L"1/5/1993", // 0x1004
|
|
L"1.5.1993", // 0x0405
|
|
L"01-05-1993", // 0x0406
|
|
L"01.05.1993", // 0x0407
|
|
L"01.05.1993", // 0x0807
|
|
L"01.05.1993", // 0x0c07
|
|
L"1/5/1993", // 0x0408
|
|
L"5/1/1993", // 0x0409
|
|
L"01/05/1993", // 0x0809
|
|
L"1/05/1993", // 0x0c09
|
|
L"01/05/1993", // 0x1009
|
|
L"1/05/1993", // 0x1409
|
|
L"01/05/1993", // 0x1809
|
|
L"01/05/1993", // 0x040a
|
|
L"01/05/1993", // 0x080a
|
|
L"01/05/1993", // 0x0c0a
|
|
L"1.5.1993", // 0x040b
|
|
L"01/05/1993", // 0x040c
|
|
L"1/05/1993", // 0x080c
|
|
L"1993-05-01", // 0x0c0c
|
|
L"01.05.1993", // 0x100c
|
|
L"1993. 05. 01.", // 0x040e
|
|
L"1.5.1993", // 0x040f
|
|
L"01/05/1993", // 0x0410
|
|
L"01.05.1993", // 0x0810
|
|
L"1993/05/01", // 0x0411
|
|
L"1993-05-01", // 0x0412
|
|
L"1-5-1993", // 0x0413
|
|
L"1/05/1993", // 0x0813
|
|
L"01.05.1993", // 0x0414
|
|
L"01.05.1993", // 0x0814
|
|
L"1993-05-01", // 0x0415
|
|
L"1/5/1993", // 0x0416
|
|
L"01-05-1993", // 0x0816
|
|
L"01.05.1993", // 0x0418
|
|
L"01.05.1993", // 0x0419
|
|
L"1.5.1993", // 0x041a
|
|
L"1. 5. 1993", // 0x041b
|
|
L"1993-05-01", // 0x041d
|
|
L"01.05.1993", // 0x041f
|
|
L"1.5.1993" // 0x0424
|
|
};
|
|
|
|
LPWSTR pLongDate[] =
|
|
{
|
|
L"01 \x041c\x0430\x0439 1993 \x0433.", // 0x0402
|
|
L"1993\x5e74\x0035\x6708\x0031\x65e5", // 0x0404
|
|
L"1993\x5e74\x0035\x6708\x0031\x65e5", // 0x0804
|
|
L"Saturday, 1 May, 1993", // 0x0c04
|
|
L"\x661f\x671f\x516d, 1 \x4e94\x6708, 1993", // 0x1004
|
|
L"1. kv\x011btna 1993", // 0x0405
|
|
L"1. maj 1993", // 0x0406
|
|
L"Samstag, 1. Mai 1993", // 0x0407
|
|
L"Samstag, 1. Mai 1993", // 0x0807
|
|
L"Samstag, 01. Mai 1993", // 0x0c07
|
|
L"\x03a3\x03ac\x03b2\x03b2\x03b1\x03c4\x03bf, 1 \x039c\x03b1\x0390\x03bf\x03c5 1993", // 0x0408
|
|
L"Saturday, May 01, 1993", // 0x0409
|
|
L"01 May 1993", // 0x0809
|
|
L"Saturday, 1 May 1993", // 0x0c09
|
|
L"May 1, 1993", // 0x1009
|
|
L"Saturday, 1 May 1993", // 0x1409
|
|
L"01 May 1993", // 0x1809
|
|
L"sábado, 01 de mayo de 1993", // 0x040a
|
|
L"Sábado, 01 de Mayo de 1993", // 0x080a
|
|
L"sábado, 01 de mayo de 1993", // 0x0c0a
|
|
L"1. toukokuuta 1993", // 0x040b
|
|
L"samedi 1 mai 1993", // 0x040c
|
|
L"samedi 1 mai 1993", // 0x080c
|
|
L"1 mai, 1993", // 0x0c0c
|
|
L"samedi, 1. mai 1993", // 0x100c
|
|
L"1993. május 1.", // 0x040e
|
|
L"1. maí 1993", // 0x040f
|
|
L"sabato 1 maggio 1993", // 0x0410
|
|
L"sabato, 1. maggio 1993", // 0x0810
|
|
L"1993\x5e74\x0035\x6708\x0031\x65e5", // 0x0411
|
|
L"1993\xb144 5\xc6d4 1\xc77c \xd1a0\xc694\xc77c", // 0x0412
|
|
L"zaterdag 1 mei 1993", // 0x0413
|
|
L"zaterdag 1 mei 1993", // 0x0813
|
|
L"1. mai 1993", // 0x0414
|
|
L"1. mai 1993", // 0x0814
|
|
L"1 maja 1993", // 0x0415
|
|
L"sábado, 1 de maio de 1993", // 0x0416
|
|
L"sábado, 1 de Maio de 1993", // 0x0816
|
|
L"1 mai 1993", // 0x0418
|
|
L"1 \x043c\x0430\x044f 1993 \x0433.", // 0x0419
|
|
L"1. svibanj 1993", // 0x041a
|
|
L"1. m\x00e1ja 1993", // 0x041b
|
|
L"den 1 maj 1993", // 0x041d
|
|
L"01 May\x0131s 1993 Cumartesi", // 0x041f
|
|
L"1. maj 1993" // 0x0424
|
|
};
|
|
|
|
LPWSTR pYearMonth[] =
|
|
{
|
|
L"\x041c\x0430\x0439 1993 \x0433.", // 0x0402
|
|
L"1993\x5e74\x0035\x6708", // 0x0404
|
|
L"1993\x5e74\x0035\x6708", // 0x0804
|
|
L"May, 1993", // 0x0c04
|
|
L"\x4e94\x6708, 1993", // 0x1004
|
|
L"kv\x011bten 1993", // 0x0405
|
|
L"maj 1993", // 0x0406
|
|
L"Mai 1993", // 0x0407
|
|
L"Mai 1993", // 0x0807
|
|
L"Mai 1993", // 0x0c07
|
|
L"\x039c\x03ac\x03b9\x03bf\x03c2 1993", // 0x0408
|
|
L"May, 1993", // 0x0409
|
|
L"May 1993", // 0x0809
|
|
L"May 1993", // 0x0c09
|
|
L"May, 1993", // 0x1009
|
|
L"May 1993", // 0x1409
|
|
L"May 1993", // 0x1809
|
|
L"mayo de 1993", // 0x040a
|
|
L"Mayo de 1993", // 0x080a
|
|
L"mayo de 1993", // 0x0c0a
|
|
L"toukokuu 1993", // 0x040b
|
|
L"mai 1993", // 0x040c
|
|
L"mai 1993", // 0x080c
|
|
L"mai, 1993", // 0x0c0c
|
|
L"mai 1993", // 0x100c
|
|
L"1993. május", // 0x040e
|
|
L"maí 1993", // 0x040f
|
|
L"maggio 1993", // 0x0410
|
|
L"maggio 1993", // 0x0810
|
|
L"1993\x5e74\x0035\x6708", // 0x0411
|
|
L"1993\xb144 5\xc6d4", // 0x0412
|
|
L"mei 1993", // 0x0413
|
|
L"mei 1993", // 0x0813
|
|
L"mai 1993", // 0x0414
|
|
L"mai 1993", // 0x0814
|
|
L"maj 1993", // 0x0415
|
|
L"maio de 1993", // 0x0416
|
|
L"Maio de 1993", // 0x0816
|
|
L"mai 1993", // 0x0418
|
|
L"\x041c\x0430\x0439 1993 \x0433.", // 0x0419
|
|
L"svibanj, 1993", // 0x041a
|
|
L"máj 1993", // 0x041b
|
|
L"maj 1993", // 0x041d
|
|
L"May\x0131s 1993", // 0x041f
|
|
L"maj 1993" // 0x0424
|
|
};
|
|
|
|
|
|
|
|
|
|
//
|
|
// Forward Declarations.
|
|
//
|
|
|
|
BOOL
|
|
InitGetDateFormat();
|
|
|
|
int
|
|
GDF_BadParamCheck();
|
|
|
|
int
|
|
GDF_NormalCase();
|
|
|
|
int
|
|
GDF_Ansi();
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// TestGetDateFormat
|
|
//
|
|
// Test routine for GetDateFormatW API.
|
|
//
|
|
// 04-30-93 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int TestGetDateFormat()
|
|
{
|
|
int ErrCount = 0; // error count
|
|
|
|
|
|
//
|
|
// Print out what's being done.
|
|
//
|
|
printf("\n\nTESTING GetDateFormatW...\n\n");
|
|
|
|
//
|
|
// Initialize global variables.
|
|
//
|
|
if (!InitGetDateFormat())
|
|
{
|
|
printf("\nABORTED TestGetDateFormat: Could not Initialize.\n");
|
|
return (1);
|
|
}
|
|
|
|
//
|
|
// Test bad parameters.
|
|
//
|
|
ErrCount += GDF_BadParamCheck();
|
|
|
|
//
|
|
// Test normal cases.
|
|
//
|
|
ErrCount += GDF_NormalCase();
|
|
|
|
//
|
|
// Test Ansi version.
|
|
//
|
|
ErrCount += GDF_Ansi();
|
|
|
|
//
|
|
// Print out result.
|
|
//
|
|
printf("\nGetDateFormatW: ERRORS = %d\n", ErrCount);
|
|
|
|
//
|
|
// Return total number of errors found.
|
|
//
|
|
return (ErrCount);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// InitGetDateFormat
|
|
//
|
|
// This routine initializes the global variables. If no errors were
|
|
// encountered, then it returns TRUE. Otherwise, it returns FALSE.
|
|
//
|
|
// 04-30-93 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
BOOL InitGetDateFormat()
|
|
{
|
|
//
|
|
// Make a Locale.
|
|
//
|
|
Locale = MAKELCID(0x0409, 0);
|
|
|
|
//
|
|
// Initialize the system date.
|
|
//
|
|
SysDate.wYear = 1993;
|
|
SysDate.wMonth = 5;
|
|
SysDate.wDayOfWeek = 6;
|
|
SysDate.wDay = 1;
|
|
SysDate.wHour = 15;
|
|
SysDate.wMinute = 45;
|
|
SysDate.wSecond = 25;
|
|
SysDate.wMilliseconds = 13;
|
|
|
|
//
|
|
// Return success.
|
|
//
|
|
return (TRUE);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GDF_BadParamCheck
|
|
//
|
|
// This routine passes in bad parameters to the API routines and checks to
|
|
// be sure they are handled properly. The number of errors encountered
|
|
// is returned to the caller.
|
|
//
|
|
// 04-30-93 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int GDF_BadParamCheck()
|
|
{
|
|
int NumErrors = 0; // error count - to be returned
|
|
int rc; // return code
|
|
SYSTEMTIME MyDate; // structure to hold custom date
|
|
|
|
|
|
//
|
|
// Bad Locale.
|
|
//
|
|
|
|
// Variation 1 - Bad Locale
|
|
rc = GetDateFormatW( (LCID)333,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"Bad Locale",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Null Pointers.
|
|
//
|
|
|
|
// Variation 1 - lpDateStr = NULL
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"lpDateStr NULL",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Bad Count.
|
|
//
|
|
|
|
// Variation 1 - cchDate < 0
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
-1 );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"cchDate < 0",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Invalid Flag.
|
|
//
|
|
|
|
// Variation 1 - flags invalid
|
|
rc = GetDateFormatW( Locale,
|
|
GDF_INVALID_FLAGS,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"Flag invalid",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - short date AND long date
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_SHORTDATE | DATE_LONGDATE,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"Flag invalid (shortdate and longdate)",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - pFormat not null AND short date
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_SHORTDATE,
|
|
NULL,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"pFormat not null and short date",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - pFormat not null AND long date
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_LONGDATE,
|
|
NULL,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"pFormat not null and long date",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - pFormat not null AND no user override
|
|
rc = GetDateFormatW( Locale,
|
|
LOCALE_NOUSEROVERRIDE,
|
|
NULL,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"pFormat not null and no user override",
|
|
&NumErrors );
|
|
|
|
// Variation 6 - Use CP ACP, pFormat not null AND no user override
|
|
rc = GetDateFormatW( Locale,
|
|
LOCALE_USE_CP_ACP | LOCALE_NOUSEROVERRIDE,
|
|
NULL,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"Use CP ACP, pFormat not null and no user override",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Buffer Too Small.
|
|
//
|
|
|
|
// Variation 1 - cchDate = too small
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
2 );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INSUFFICIENT_BUFFER,
|
|
"cchDate too small",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Bad date passed in.
|
|
//
|
|
|
|
// Variation 1 - bad wMonth (0)
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 0;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wMonth (0)",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - bad wMonth (13)
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 13;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wMonth (13)",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 32;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (May 32)",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 4;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 31;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (April 31)",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 6;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 31;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (June 31)",
|
|
&NumErrors );
|
|
|
|
// Variation 6 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 9;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 31;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (Sept 31)",
|
|
&NumErrors );
|
|
|
|
// Variation 7 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 31;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (Nov 31)",
|
|
&NumErrors );
|
|
|
|
// Variation 8 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 2;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 29;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (Feb 29, 1993)",
|
|
&NumErrors );
|
|
|
|
// Variation 9 - bad wDay
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 2;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 30;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (Feb 30, 1993)",
|
|
&NumErrors );
|
|
|
|
// Variation 10 - bad wDay
|
|
MyDate.wYear = 2100;
|
|
MyDate.wMonth = 2;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 29;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"bad wDay (Feb 29, 2100)",
|
|
&NumErrors );
|
|
|
|
// Variation 11 - bad wDayOfWeek
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 7;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"bad wDayOfWeek (7)",
|
|
&NumErrors );
|
|
|
|
// Variation 12 - bad wDayOfWeek
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 4;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"bad wDayOfWeek (Thursday, May 1, 1993)",
|
|
&NumErrors );
|
|
|
|
|
|
|
|
//
|
|
// DATE_LTRREADING and DATE_RTLREADING flags.
|
|
//
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_LTRREADING | DATE_RTLREADING,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"LTR and RTL flags",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Return total number of errors found.
|
|
//
|
|
return (NumErrors);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GDF_NormalCase
|
|
//
|
|
// This routine tests the normal cases of the API routine.
|
|
//
|
|
// 04-30-93 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int GDF_NormalCase()
|
|
{
|
|
int NumErrors = 0; // error count - to be returned
|
|
int rc; // return code
|
|
SYSTEMTIME MyDate; // structure to hold custom date
|
|
int ctr; // loop counter
|
|
|
|
|
|
#ifdef PERF
|
|
|
|
DbgBreakPoint();
|
|
|
|
#endif
|
|
|
|
|
|
//
|
|
// Locales.
|
|
//
|
|
|
|
// Variation 1 - System Default Locale
|
|
rc = GetDateFormatW( LOCALE_SYSTEM_DEFAULT,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnEqual( rc,
|
|
0,
|
|
"system default locale",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Current User Locale
|
|
rc = GetDateFormatW( LOCALE_USER_DEFAULT,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnEqual( rc,
|
|
0,
|
|
"current user locale",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Language Neutral.
|
|
//
|
|
|
|
// Variation 1 - neutral
|
|
rc = GetDateFormatW( 0x0000,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"neutral locale",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - sys default
|
|
rc = GetDateFormatW( 0x0400,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"sys default locale",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - user default
|
|
rc = GetDateFormatW( 0x0800,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"user default locale",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - sub lang neutral US
|
|
rc = GetDateFormatW( 0x0009,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"sub lang neutral US",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - sub lang neutral Czech
|
|
rc = GetDateFormatW( 0x0005,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
CZECH,
|
|
"sub lang neutral Czech",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Use CP ACP.
|
|
//
|
|
|
|
// Variation 1 - Use CP ACP, System Default Locale
|
|
rc = GetDateFormatW( LOCALE_SYSTEM_DEFAULT,
|
|
LOCALE_USE_CP_ACP,
|
|
NULL,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnEqual( rc,
|
|
0,
|
|
"Use CP ACP, system default locale",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// cchDate.
|
|
//
|
|
|
|
// Variation 1 - cchDate = size of lpDateStr buffer
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"cchDate = bufsize",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - cchDate = 0
|
|
lpDateStr[0] = 0x0000;
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
0 );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
NULL,
|
|
ENGLISH_US,
|
|
"cchDate zero",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - cchDate = 0, lpDateStr = NULL
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
NULL,
|
|
NULL,
|
|
0 );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
NULL,
|
|
ENGLISH_US,
|
|
"cchDate (NULL ptr)",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// lpFormat.
|
|
//
|
|
|
|
// Variation 1 - Year
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"yyyy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
YEAR,
|
|
"lpFormat year (yyyy)",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Year
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"yyy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
YEAR,
|
|
"lpFormat year (yyy)",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Year
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"yyyyy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
YEAR,
|
|
"lpFormat year (yyyyy)",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Year
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"yy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
YEAR_2,
|
|
"lpFormat year (yy)",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - Year
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"y",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
YEAR_2,
|
|
"lpFormat year (y)",
|
|
&NumErrors );
|
|
|
|
// Variation 6 - US day of week
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_DAYOFWEEK,
|
|
"US day of week",
|
|
&NumErrors );
|
|
|
|
// Variation 7 - US day of week
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"ddddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_DAYOFWEEK,
|
|
"US day of week (ddddd)",
|
|
&NumErrors );
|
|
|
|
// Variation 8 - US abbrev day of week
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"ddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_ABBREVDAY,
|
|
"US abbrev day of week",
|
|
&NumErrors );
|
|
|
|
// Variation 9 - US Month
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_MONTH,
|
|
"US Month",
|
|
&NumErrors );
|
|
|
|
// Variation 10 - US Month
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"MMMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_MONTH,
|
|
"US Month (MMMMM)",
|
|
&NumErrors );
|
|
|
|
// Variation 11 - US Abbrev Month
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"MMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
US_ABBREVMONTH,
|
|
"US Abbrev Month",
|
|
&NumErrors );
|
|
|
|
// Variation 12 - SPANISH day of week
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"dddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_DAYOFWEEK,
|
|
"SPANISH day of week",
|
|
&NumErrors );
|
|
|
|
// Variation 13 - SPANISH day of week
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"ddddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_DAYOFWEEK,
|
|
"SPANISH day of week (ddddd)",
|
|
&NumErrors );
|
|
|
|
// Variation 14 - SPANISH abbrev day of week
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"ddd",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_ABBREVDAY,
|
|
"SPANISH abbrev day of week",
|
|
&NumErrors );
|
|
|
|
// Variation 15 - SPANISH Month
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_MONTH,
|
|
"SPANISH Month",
|
|
&NumErrors );
|
|
|
|
// Variation 16 - SPANISH Month
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"MMMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_MONTH,
|
|
"SPANISH Month (MMMMM)",
|
|
&NumErrors );
|
|
|
|
// Variation 17 - SPANISH Abbrev Month
|
|
rc = GetDateFormatW( 0x040a,
|
|
0,
|
|
&SysDate,
|
|
L"MMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
SPANISH_ABBREVMONTH,
|
|
"SPANISH Abbrev Month",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Single quote usage.
|
|
//
|
|
|
|
// Variation 1 - US single quote
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"dddd, MMMM dd, '''yy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"Saturday, May 01, 'yy",
|
|
"US single quote",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - US single quote 2
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L"dddd, MMMM dd, ''''yy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"Saturday, May 01, '93",
|
|
"US single quote 2",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - US single quote 3
|
|
rc = GetDateFormatW( Locale,
|
|
0,
|
|
&SysDate,
|
|
L" 'year: '''yy",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L" year: '93",
|
|
"US single quote 3",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - SHORTDATE single quote
|
|
rc = GetLocaleInfoW( 0x0409,
|
|
LOCALE_SSHORTDATE,
|
|
pSShortDate,
|
|
BUFSIZE );
|
|
CheckReturnEqual( rc,
|
|
0,
|
|
"GetLocaleInfoW SSHORTDATE",
|
|
&NumErrors );
|
|
|
|
rc = SetLocaleInfoW( 0x0409,
|
|
LOCALE_SSHORTDATE,
|
|
L"MM''''dd''''yy" );
|
|
CheckReturnValidW( rc,
|
|
TRUE,
|
|
NULL,
|
|
NULL,
|
|
"SetLocaleInfoW SSHORTDATE",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( 0x0409,
|
|
DATE_SHORTDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"05'01'93",
|
|
"ShortDate single quote 1",
|
|
&NumErrors );
|
|
|
|
rc = SetLocaleInfoW( 0x0409,
|
|
LOCALE_SSHORTDATE,
|
|
L"'Date: 'MMM ''''yy" );
|
|
CheckReturnValidW( rc,
|
|
TRUE,
|
|
NULL,
|
|
NULL,
|
|
"SetLocaleInfoW SSHORTDATE",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( 0x0409,
|
|
DATE_SHORTDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"Date: May '93",
|
|
"ShortDate single quote 2",
|
|
&NumErrors );
|
|
|
|
rc = SetLocaleInfoW( 0x0409,
|
|
LOCALE_SSHORTDATE,
|
|
pSShortDate );
|
|
CheckReturnValidW( rc,
|
|
TRUE,
|
|
NULL,
|
|
NULL,
|
|
"SetLocaleInfoW SSHORTDATE Final",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Test all locales - Short Date flag value.
|
|
//
|
|
|
|
for (ctr = 0; ctr < NumLocales; ctr++)
|
|
{
|
|
rc = GetDateFormatW( pAllLocales[ctr],
|
|
DATE_SHORTDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidLoopW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
pShortDate[ctr],
|
|
"ShortDate",
|
|
pAllLocales[ctr],
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
//
|
|
// Test all locales - Long Date flag value.
|
|
//
|
|
|
|
for (ctr = 0; ctr < NumLocales; ctr++)
|
|
{
|
|
rc = GetDateFormatW( pAllLocales[ctr],
|
|
DATE_LONGDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidLoopW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
pLongDate[ctr],
|
|
"LongDate",
|
|
pAllLocales[ctr],
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
//
|
|
// Test all locales - Year Month flag value.
|
|
//
|
|
|
|
for (ctr = 0; ctr < NumLocales; ctr++)
|
|
{
|
|
rc = GetDateFormatW( pAllLocales[ctr],
|
|
DATE_YEARMONTH,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidLoopW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
pYearMonth[ctr],
|
|
"YearMonth",
|
|
pAllLocales[ctr],
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
//
|
|
// NO User Override flag value.
|
|
//
|
|
|
|
// Variation 1 - NOUSEROVERRIDE
|
|
rc = GetDateFormatW( Locale,
|
|
LOCALE_NOUSEROVERRIDE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"NoUserOverride",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Test Russian date formats.
|
|
//
|
|
// Variation 1 - LONGDATE Russian
|
|
rc = GetDateFormatW( 0x0419,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_RUSSIAN_2,
|
|
"LongDate Russian 2",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - LONGDATE Russian
|
|
rc = GetDateFormatW( 0x0419,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM d",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_RUSSIAN_3,
|
|
"LongDate Russian 3",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - LONGDATE Russian
|
|
rc = GetDateFormatW( 0x0419,
|
|
0,
|
|
&SysDate,
|
|
L"d yy MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_RUSSIAN_4,
|
|
"LongDate Russian 4",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Test Polish date formats.
|
|
//
|
|
// Variation 1 - LONGDATE Polish
|
|
rc = GetDateFormatW( 0x0415,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_POLISH_2,
|
|
"LongDate Polish 2",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - LONGDATE Polish
|
|
rc = GetDateFormatW( 0x0415,
|
|
0,
|
|
&SysDate,
|
|
L"MMMM d",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_POLISH_3,
|
|
"LongDate Polish 3",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - LONGDATE Polish
|
|
rc = GetDateFormatW( 0x0415,
|
|
0,
|
|
&SysDate,
|
|
L"d yy MMMM",
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_POLISH_4,
|
|
"LongDate Polish 4",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Test various calendars.
|
|
//
|
|
|
|
// Variation 1 - English
|
|
rc = GetDateFormatW( 0x0409,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
ENGLISH_US,
|
|
"Alt Calendar English (ShortDate)",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - English
|
|
rc = GetDateFormatW( 0x0409,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_ENGLISH_US,
|
|
"Alt Calendar English (LongDate)",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Japan
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
JAPAN_ALT,
|
|
"Alt Calendar Japan (ShortDate)",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Japan
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_JAPAN_ALT,
|
|
"Alt Calendar Japan (LongDate)",
|
|
&NumErrors );
|
|
|
|
#if 0
|
|
// Variation 5 - China
|
|
rc = GetDateFormatW( 0x0404,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
CHINA_ALT,
|
|
"Alt Calendar China (ShortDate)",
|
|
&NumErrors );
|
|
|
|
// Variation 6 - China
|
|
rc = GetDateFormatW( 0x0404,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_CHINA_ALT,
|
|
"Alt Calendar China (LongDate)",
|
|
&NumErrors );
|
|
#endif
|
|
|
|
// Variation 7 - Korea
|
|
rc = GetDateFormatW( 0x0412,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
KOREA_ALT,
|
|
"Alt Calendar Korea (ShortDate)",
|
|
&NumErrors );
|
|
|
|
// Variation 8 - Korea
|
|
rc = GetDateFormatW( 0x0412,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_KOREA_ALT,
|
|
"Alt Calendar Korea (LongDate)",
|
|
&NumErrors );
|
|
|
|
|
|
|
|
//
|
|
// Different dates for calendars.
|
|
//
|
|
|
|
// Variation 1 - Japan
|
|
MyDate.wYear = 1913;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_JAPAN_ALT_2,
|
|
"Alt Calendar Japan (long) 2",
|
|
&NumErrors );
|
|
|
|
#if 0
|
|
// Variation 2 - China
|
|
MyDate.wYear = 1832;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0404,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_CHINA_ALT_2,
|
|
"Alt Calendar China (long) 2",
|
|
&NumErrors );
|
|
#endif
|
|
|
|
// Variation 3 - Korea
|
|
MyDate.wYear = 1832;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0412,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_KOREA_ALT_2,
|
|
"Alt Calendar Korea (long) 2",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Japan
|
|
MyDate.wYear = 1832;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L_JAPAN_ALT_3,
|
|
"Alt Calendar Japan (long) 3",
|
|
&NumErrors );
|
|
|
|
|
|
// Variation 5 - Japan
|
|
MyDate.wYear = 1989;
|
|
MyDate.wMonth = 1;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 8;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x5e73\x6210 1/1/8",
|
|
"Alt Calendar Japan (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 6 - Japan
|
|
MyDate.wYear = 1989;
|
|
MyDate.wMonth = 1;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 7;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x662d\x548c 64/1/7",
|
|
"Alt Calendar Japan (short) 2",
|
|
&NumErrors );
|
|
|
|
// Variation 7 - Japan
|
|
MyDate.wYear = 1989;
|
|
MyDate.wMonth = 2;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 3;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x5e73\x6210 1/2/3",
|
|
"Alt Calendar Japan (short) 3",
|
|
&NumErrors );
|
|
|
|
// Variation 8 - Japan
|
|
MyDate.wYear = 1926;
|
|
MyDate.wMonth = 2;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 3;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x5927\x6b63 15/2/3",
|
|
"Alt Calendar Japan (short) 4",
|
|
&NumErrors );
|
|
|
|
// Variation 9 - Japan
|
|
MyDate.wYear = 1989;
|
|
MyDate.wMonth = 1;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 8;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x5e73\x6210 1\x5e74\x0031\x6708\x0038\x65e5",
|
|
"Alt Calendar Japan (long) 4",
|
|
&NumErrors );
|
|
|
|
// Variation 10 - Japan
|
|
MyDate.wYear = 1989;
|
|
MyDate.wMonth = 1;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 7;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0411,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x662d\x548c 64\x5e74\x0031\x6708\x0037\x65e5",
|
|
"Alt Calendar Japan (long) 5",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// DATE_LTRREADING and DATE_RTLREADING flags.
|
|
//
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_LTRREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200e\x0035/\x200e\x0031/\x200e\x0031\x0039\x0039\x0033",
|
|
"LTR flag (shortdate) - US",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_RTLREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200f\x0035/\x200f\x0031/\x200f\x0031\x0039\x0039\x0033",
|
|
"RTL flag (shortdate) - US",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_SHORTDATE | DATE_LTRREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200e\x0035/\x200e\x0031/\x200e\x0031\x0039\x0039\x0033",
|
|
"LTR flag (shortdate) - US 2",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_SHORTDATE | DATE_RTLREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200f\x0035/\x200f\x0031/\x200f\x0031\x0039\x0039\x0033",
|
|
"RTL flag (shortdate) - US 2",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_LONGDATE | DATE_LTRREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200eSaturday, \x200eMay \x200e\x0030\x0031, \x200e\x0031\x0039\x0039\x0033",
|
|
"LTR flag (longdate) - US",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_LONGDATE | DATE_RTLREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200fSaturday, \x200fMay \x200f\x0030\x0031, \x200f\x0031\x0039\x0039\x0033",
|
|
"RTL flag (longdate) - US",
|
|
&NumErrors );
|
|
|
|
// Iran - Farsi
|
|
if (IsValidLocale(0x0429, LCID_INSTALLED))
|
|
{
|
|
rc = GetDateFormatW( 0x0429,
|
|
DATE_LTRREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200e\x0035/\x200e\x0031/\x200e\x0031\x0039\x0039\x0033",
|
|
"LTR - Iran Farsi",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatW( 0x0429,
|
|
DATE_RTLREADING,
|
|
&SysDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x200f\x0035/\x200f\x0031/\x200f\x0031\x0039\x0039\x0033",
|
|
"RTL - Iran Farsi",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// Hijri Calendar.
|
|
//
|
|
|
|
if (IsValidLocale(0x0401, LCID_INSTALLED))
|
|
{
|
|
// Variation 1 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0401,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"07/12/64",
|
|
"Hijri (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0401,
|
|
DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"07/\x0630\x0648\x00a0\x0627\x0644\x062d\x062c\x0629/1364", // year 1364
|
|
"Hijri (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0401,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"07/12/64", // year 1364
|
|
"Alt Calendar Hijri (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x0401,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"07/\x0630\x0648\x00a0\x0627\x0644\x062d\x062c\x0629/1364", // year 1364
|
|
"Alt Calendar Hijri (long) 1",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// Hebrew Calendar.
|
|
//
|
|
|
|
if (IsValidLocale(0x040d, LCID_INSTALLED))
|
|
{
|
|
// Variation 1 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"12/11/1945",
|
|
"Hebrew (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc,
|
|
-1,
|
|
lpDateStr,
|
|
L"\x05d9\x05d5\x05dd\x00a0\x05e9\x05e0\x05d9 12 \x05e0\x05d5\x05d1\x05de\x05d1\x05e8 1945",
|
|
"Hebrew (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc, // Kislev 7, 5706
|
|
-1,
|
|
lpDateStr,
|
|
L"\x05d6'/\x05db\x05e1\x05dc\x05d5/\x05ea\x05e9\"\x05d5",
|
|
"Alt Calendar Hebrew (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc, // Kislev 7, 5706
|
|
-1,
|
|
lpDateStr,
|
|
L"\x05d9\x05d5\x05dd\x00a0\x05e9\x05e0\x05d9 \x05d6' \x05db\x05e1\x05dc\x05d5 \x05ea\x05e9\"\x05d5",
|
|
"Alt Calendar Hebrew (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - Hebrew
|
|
MyDate.wYear = 1984;
|
|
MyDate.wMonth = 9;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 27;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc, // Tishri 1, 5745
|
|
-1,
|
|
lpDateStr,
|
|
L"\x05d0'/\x05ea\x05e9\x05e8\x05d9/\x05ea\x05e9\x05de\"\x05d4",
|
|
"Alt Calendar Hebrew (short) 2",
|
|
&NumErrors );
|
|
|
|
|
|
// Variation 6 - Hebrew
|
|
MyDate.wYear = 1984;
|
|
MyDate.wMonth = 9;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 27;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatW( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
BUFSIZE );
|
|
CheckReturnValidW( rc, // Tishri 1, 5745
|
|
-1,
|
|
lpDateStr,
|
|
L"\x05d9\x05d5\x05dd\x00a0\x05d7\x05de\x05d9\x05e9\x05d9 \x05d0' \x05ea\x05e9\x05e8\x05d9 \x05ea\x05e9\x05de\"\x05d4",
|
|
"Alt Calendar Hebrew (long) 2",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
//
|
|
// Return total number of errors found.
|
|
//
|
|
return (NumErrors);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// GDF_Ansi
|
|
//
|
|
// This routine tests the Ansi version of the API routine.
|
|
//
|
|
// 04-30-93 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int GDF_Ansi()
|
|
{
|
|
int NumErrors = 0; // error count - to be returned
|
|
int rc; // return code
|
|
SYSTEMTIME MyDate; // structure to hold custom date
|
|
BYTE pDateStrA[BUFSIZE]; // ptr to date string
|
|
|
|
|
|
MyDate.wYear = 1993;
|
|
MyDate.wMonth = 5;
|
|
MyDate.wDayOfWeek = 6;
|
|
MyDate.wDay = 1;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
|
|
|
|
//
|
|
// GetDateFormatA.
|
|
//
|
|
|
|
// Variation 1 - US single quote
|
|
rc = GetDateFormatA( Locale,
|
|
0,
|
|
&MyDate,
|
|
"dddd, MMMM dd, ''''yy",
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"Saturday, May 01, '93",
|
|
NULL,
|
|
"A version US single quote",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - US single quote (no dest)
|
|
rc = GetDateFormatA( Locale,
|
|
0,
|
|
&MyDate,
|
|
"dddd, MMMM dd, ''''yy",
|
|
NULL,
|
|
0 );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
NULL,
|
|
"Saturday, May 01, '93",
|
|
NULL,
|
|
"A version US single quote, no Dest",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Use CP ACP.
|
|
//
|
|
|
|
// Variation 1 - Use CP ACP, US single quote
|
|
rc = GetDateFormatA( Locale,
|
|
LOCALE_USE_CP_ACP,
|
|
&MyDate,
|
|
"dddd, MMMM dd, ''''yy",
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"Saturday, May 01, '93",
|
|
NULL,
|
|
"A version Use CP ACP, US single quote",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// Make sure the A and W versions set the same error value.
|
|
//
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatA( Locale,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
-1 );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"A and W same bad param - A version",
|
|
&NumErrors );
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatW( Locale,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
lpDateStr,
|
|
-1 );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_PARAMETER,
|
|
"A and W same bad param - W version",
|
|
&NumErrors );
|
|
|
|
|
|
//
|
|
// DATE_LTRREADING and DATE_RTLREADING flags.
|
|
//
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatA( Locale,
|
|
DATE_LTRREADING | DATE_RTLREADING,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"A version - LTR and RTL flags",
|
|
&NumErrors );
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatA( Locale,
|
|
DATE_LTRREADING,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"A version - LTR flag",
|
|
&NumErrors );
|
|
|
|
SetLastError(0);
|
|
rc = GetDateFormatA( Locale,
|
|
DATE_RTLREADING,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnBadParam( rc,
|
|
0,
|
|
ERROR_INVALID_FLAGS,
|
|
"A version - RTL flag",
|
|
&NumErrors );
|
|
|
|
// Iran - Farsi
|
|
if (IsValidLocale(0x0429, LCID_INSTALLED))
|
|
{
|
|
rc = GetDateFormatA( 0x0429,
|
|
DATE_LTRREADING,
|
|
&SysDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"\xfd\x35/\xfd\x31/\xfd\x31\x39\x39\x33",
|
|
NULL,
|
|
"A version - LTR - Iran Farsi",
|
|
&NumErrors );
|
|
|
|
rc = GetDateFormatA( 0x0429,
|
|
DATE_RTLREADING,
|
|
&SysDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"\xfe\x35/\xfe\x31/\xfe\x31\x39\x39\x33",
|
|
NULL,
|
|
"A version - RTL - Iran Farsi",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// Hijri Calendar.
|
|
//
|
|
|
|
if (IsValidLocale(0x0401, LCID_INSTALLED))
|
|
{
|
|
// Variation 1 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x0401,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"07/12/64",
|
|
NULL,
|
|
"A version Hijri (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x0401,
|
|
DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"07/\xd0\xe6\xa0\xc7\xe1\xcd\xcc\xc9/1364", // year 1364
|
|
NULL,
|
|
"A version Hijri (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x0401,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"07/12/64", // year 1364
|
|
NULL,
|
|
"A version Alt Calendar Hijri (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Hijri
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x0401,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"07/\xd0\xe6\xa0\xc7\xe1\xcd\xcc\xc9/1364", // year 1364
|
|
NULL,
|
|
"A version Alt Calendar Hijri (long) 1",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// Hebrew Calendar.
|
|
//
|
|
|
|
if (IsValidLocale(0x040d, LCID_INSTALLED))
|
|
{
|
|
// Variation 1 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"12/11/1945",
|
|
NULL,
|
|
"A version Hebrew (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 2 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc,
|
|
-1,
|
|
pDateStrA,
|
|
"\xe9\xe5\xed\xa0\xf9\xf0\xe9 12 \xf0\xe5\xe1\xee\xe1\xf8 1945",
|
|
NULL,
|
|
"A version Hebrew (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 3 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc, // Kislev 7, 5706
|
|
-1,
|
|
pDateStrA,
|
|
"\xe6'/\xeb\xf1\xec\xe5/\xfa\xf9\"\xe5",
|
|
NULL,
|
|
"A version Alt Calendar Hebrew (short) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 4 - Hebrew
|
|
MyDate.wYear = 1945;
|
|
MyDate.wMonth = 11;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 12;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc, // Kislev 7, 5706
|
|
-1,
|
|
pDateStrA,
|
|
"\xe9\xe5\xed\xa0\xf9\xf0\xe9 \xe6' \xeb\xf1\xec\xe5 \xfa\xf9\"\xe5",
|
|
NULL,
|
|
"A version Alt Calendar Hebrew (long) 1",
|
|
&NumErrors );
|
|
|
|
// Variation 5 - Hebrew
|
|
MyDate.wYear = 1984;
|
|
MyDate.wMonth = 9;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 27;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_SHORTDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc, // Tishri 1, 5745
|
|
-1,
|
|
pDateStrA,
|
|
"\xe0'/\xfa\xf9\xf8\xe9/\xfa\xf9\xee\"\xe4",
|
|
NULL,
|
|
"A version Alt Calendar Hebrew (short) 2",
|
|
&NumErrors );
|
|
|
|
|
|
// Variation 6 - Hebrew
|
|
MyDate.wYear = 1984;
|
|
MyDate.wMonth = 9;
|
|
MyDate.wDayOfWeek = 1;
|
|
MyDate.wDay = 27;
|
|
MyDate.wHour = 15;
|
|
MyDate.wMinute = 45;
|
|
MyDate.wSecond = 25;
|
|
MyDate.wMilliseconds = 13;
|
|
rc = GetDateFormatA( 0x040d,
|
|
DATE_USE_ALT_CALENDAR | DATE_LONGDATE,
|
|
&MyDate,
|
|
NULL,
|
|
pDateStrA,
|
|
BUFSIZE );
|
|
CheckReturnValidA( rc, // Tishri 1, 5745
|
|
-1,
|
|
pDateStrA,
|
|
"\xe9\xe5\xed\xa0\xe7\xee\xe9\xf9\xe9 \xe0' \xfa\xf9\xf8\xe9 \xfa\xf9\xee\"\xe4",
|
|
NULL,
|
|
"A version Alt Calendar Hebrew (long) 2",
|
|
&NumErrors );
|
|
}
|
|
|
|
|
|
//
|
|
// Return total number of errors found.
|
|
//
|
|
return (NumErrors);
|
|
}
|