Windows2000/private/windows/winnls/test/nlstest/scitest.c
2020-09-30 17:12:32 +02:00

192 lines
7.5 KiB
C

/*++
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();
int TestSetCalendarInfo()
// Test routine for SetCalendarInfoW API.
// 03-10-98 JulieB Created.
{
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);
}
ErrCount += SCI_BadParamCheck();// Test bad parameters.
ErrCount += SCI_NormalCase();// Test normal cases.
ErrCount += SCI_Ansi();// Test Ansi version.
printf("\nSetCalendarInfoW: ERRORS = %d\n", ErrCount);// Print out result.
return (ErrCount);// Return total number of errors found.
}
BOOL 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.
{
Locale = MAKELCID(0x0409, 0);// Make a Locale.
// 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 (TRUE);// Return success.
}
int 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 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 (NumErrors);// Return total number of errors found.
}
int SCI_NormalCase()
// This routine tests the normal cases of the API routine.
// 03-10-98 JulieB Created.
{
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 (NumErrors);// Return total number of errors found.
}
int SCI_Ansi()
// This routine tests the Ansi version of the API routine.
// 03-10-98 JulieB Created.
{
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 (NumErrors);// Return total number of errors found.
}