/*++ Copyright (c) 1991-1999, Microsoft Corporation All rights reserved. Module Name: scitest.c Abstract: Test module for NLS API SetCalendarInfo. 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: 03-10-98 JulieB Created. --*/ // // Include Files. // #include "nlstest.h" // // Constant Declarations. // #define BUFSIZE 100 // buffer size in wide chars #define CALTYPE_INVALID 0x0000002 // invalid CALTYPE // // Global Variables. // LCID Locale; WCHAR lpCalData[BUFSIZE]; WCHAR pTwoDigitYearMax[BUFSIZE]; // // Forward Declarations. // BOOL InitSetCalInfo(); int SCI_BadParamCheck(); int SCI_NormalCase(); int SCI_Ansi(); //////////////////////////////////////////////////////////////////////////// // // TestSetCalendarInfo // // Test routine for SetCalendarInfoW API. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int TestSetCalendarInfo() { int ErrCount = 0; // error count // // Print out what's being done. // printf("\n\nTESTING SetCalendarInfoW...\n\n"); // // Initialize global variables. // if (!InitSetCalInfo()) { printf("\nABORTED TestSetCalendarInfo: Could not Initialize.\n"); return (1); } // // Test bad parameters. // ErrCount += SCI_BadParamCheck(); // // Test normal cases. // ErrCount += SCI_NormalCase(); // // Test Ansi version. // ErrCount += SCI_Ansi(); // // Print out result. // printf("\nSetCalendarInfoW: ERRORS = %d\n", ErrCount); // // Return total number of errors found. // return (ErrCount); } //////////////////////////////////////////////////////////////////////////// // // InitSetCalInfo // // This routine initializes the global variables. If no errors were // encountered, then it returns TRUE. Otherwise, it returns FALSE. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// BOOL InitSetCalInfo() { // // Make a Locale. // Locale = MAKELCID(0x0409, 0); // // Save the ITWODIGITYEARMAX value to be restored later. // if (!GetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, pTwoDigitYearMax, BUFSIZE, NULL )) { printf("ERROR: Initialization ITWODIGITYEARMAX - error = %d\n", GetLastError()); return (FALSE); } // // Return success. // return (TRUE); } //////////////////////////////////////////////////////////////////////////// // // SCI_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. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int SCI_BadParamCheck() { int NumErrors = 0; // error count - to be returned int rc; // return code // // Bad Locale. // // Variation 1 - Bad Locale rc = SetCalendarInfoW( (LCID)333, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"2029" ); CheckReturnBadParam( rc, 0, ERROR_INVALID_PARAMETER, "Bad Locale", &NumErrors ); // // Null Pointers. // // Variation 1 - lpCalData = NULL rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, NULL ); CheckReturnBadParam( rc, 0, ERROR_INVALID_PARAMETER, "lpCalData NULL", &NumErrors ); // // Zero or Invalid Type. // // Variation 1 - CalType = invalid rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CALTYPE_INVALID, L"2029" ); CheckReturnBadParam( rc, 0, ERROR_INVALID_FLAGS, "CalType invalid", &NumErrors ); // Variation 2 - CalType = 0 rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, 0, L"2029" ); CheckReturnBadParam( rc, 0, ERROR_INVALID_FLAGS, "CalType zero", &NumErrors ); // Variation 1 - Use CP ACP, CalType = invalid rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_USE_CP_ACP | CALTYPE_INVALID, L"2029" ); CheckReturnBadParam( rc, 0, ERROR_INVALID_FLAGS, "Use CP ACP, CalType invalid", &NumErrors ); // // Return total number of errors found. // return (NumErrors); } //////////////////////////////////////////////////////////////////////////// // // SCI_NormalCase // // This routine tests the normal cases of the API routine. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int SCI_NormalCase() { int NumErrors = 0; // error count - to be returned int rc; // return code #ifdef PERF DbgBreakPoint(); #endif // // Locales. // // Variation 1 - System Default Locale rc = SetCalendarInfoW( LOCALE_SYSTEM_DEFAULT, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"2035" ); CheckReturnEqual( rc, FALSE, "SET - system default locale", &NumErrors ); rc = GetCalendarInfoW( LOCALE_SYSTEM_DEFAULT, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"2035", "GET - system default locale", &NumErrors ); // Variation 2 - Current User Locale rc = SetCalendarInfoW( LOCALE_USER_DEFAULT, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"2040" ); CheckReturnEqual( rc, FALSE, "SET - current user locale", &NumErrors ); rc = GetCalendarInfoW( LOCALE_USER_DEFAULT, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"2040", "GET - current user locale", &NumErrors ); // // Use CP ACP. // // Variation 1 - Use CP ACP, System Default Locale rc = SetCalendarInfoW( LOCALE_SYSTEM_DEFAULT, CAL_GREGORIAN, CAL_USE_CP_ACP | CAL_ITWODIGITYEARMAX, L"2050" ); CheckReturnEqual( rc, FALSE, "SET - Use CP ACP, system default locale", &NumErrors ); rc = GetCalendarInfoW( LOCALE_SYSTEM_DEFAULT, CAL_GREGORIAN, CAL_USE_CP_ACP | CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"2050", "GET - Use CP ACP, system default locale", &NumErrors ); // // CALTYPE values. // // Variation 1 - ITWODIGITYEARMAX rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"10000" ); CheckReturnEqual( rc, TRUE, "SET - MAX ITWODIGITYEARMAX", &NumErrors ); rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"98" ); CheckReturnEqual( rc, TRUE, "SET - MIN ITWODIGITYEARMAX", &NumErrors ); rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, L"3030" ); CheckReturnEqual( rc, FALSE, "SET - ITWODIGITYEARMAX", &NumErrors ); rc = GetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"3030", "GET - ITWODIGITYEARMAX", &NumErrors ); rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, pTwoDigitYearMax ); CheckReturnEqual( rc, FALSE, "ReSET - ITWODIGITYEARMAX", &NumErrors ); // // Return total number of errors found. // return (NumErrors); } //////////////////////////////////////////////////////////////////////////// // // SCI_Ansi // // This routine tests the Ansi version of the API routine. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int SCI_Ansi() { int NumErrors = 0; // error count - to be returned int rc; // return code // // SetCalendarInfoA. // // Variation 1 - ITWODIGITYEARMAX rc = SetCalendarInfoA( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, "4040" ); CheckReturnEqual( rc, FALSE, "SET - system default locale", &NumErrors ); rc = GetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"4040", "GET - system default locale", &NumErrors ); // Variation 2 - Use CP ACP, ITWODIGITYEARMAX rc = SetCalendarInfoA( Locale, CAL_GREGORIAN, CAL_USE_CP_ACP | CAL_ITWODIGITYEARMAX, "4141" ); CheckReturnEqual( rc, FALSE, "SET - Use CP ACP, system default locale", &NumErrors ); rc = GetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_USE_CP_ACP | CAL_ITWODIGITYEARMAX, lpCalData, BUFSIZE, NULL ); CheckReturnValidW( rc, -1, lpCalData, L"4141", "GET - Use CP ACP, system default locale", &NumErrors ); // // Reset the ITWODIGITYEARMAX value. // rc = SetCalendarInfoW( Locale, CAL_GREGORIAN, CAL_ITWODIGITYEARMAX, pTwoDigitYearMax ); CheckReturnEqual( rc, FALSE, "ReSET - ITWODIGITYEARMAX", &NumErrors ); // // Return total number of errors found. // return (NumErrors); }