windows-nt/Source/XPSP1/NT/base/win32/winnls/test/nlstest/scitest.c
2020-09-26 16:20:57 +08:00

500 lines
13 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();
////////////////////////////////////////////////////////////////////////////
//
// 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);
}