/*++ 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); }