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

449 lines
8.2 KiB
C

/*++
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
Module Name:
etftest.c
Abstract:
Test module for NLS API EnumTimeFormats.
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:
08-02-93 JulieB Created.
--*/
// Include Files.
#include "nlstest.h"
// Constant Declarations.
#define ETF_INVALID_FLAGS ((DWORD)(~(0)))
#define NUM_TIME_ENGLISH 4
#define NUM_TIME_JAPAN 4
#define NUM_TIME_GERMAN 4
// Global Variables.
int TimeCtr;
// Forward Declarations.
BOOL
InitEnumTimeFormats();
int
ETF_BadParamCheck();
int
ETF_NormalCase();
int
ETF_Ansi();
BOOL
CALLBACK
MyFuncTime(
LPWSTR pStr);
BOOL
CALLBACK
MyFuncTimeA(
LPSTR pStr);
// Callback function
BOOL CALLBACK MyFuncTime(
LPWSTR pStr)
{
if (Verbose)
{
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%wc", *pStr);
pStr++;
}
printf("\n");
}
TimeCtr++;
return (TRUE);
}
BOOL CALLBACK MyFuncTimeA(
LPSTR pStr)
{
if (Verbose)
{
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%c", *pStr);
pStr++;
}
printf("\n");
}
TimeCtr++;
return (TRUE);
}
// TestEnumTimeFormats
// Test routine for EnumTimeFormatsW API.
// 08-02-93 JulieB Created.
int TestEnumTimeFormats()
{
int ErrCount = 0; // error count
// Print out what's being done.
printf("\n\nTESTING EnumTimeFormatsW...\n\n");
// Initialize global variables.
if (!InitEnumTimeFormats())
{
printf("\nABORTED TestEnumTimeFormats: Could not Initialize.\n");
return (1);
}
// Test bad parameters.
ErrCount += ETF_BadParamCheck();
// Test normal cases.
ErrCount += ETF_NormalCase();
// Test Ansi version.
ErrCount += ETF_Ansi();
// Print out result.
printf("\nEnumTimeFormatsW: ERRORS = %d\n", ErrCount);
// Return total number of errors found.
return (ErrCount);
}
// InitEnumTimeFormats
// This routine initializes the global variables. If no errors were
// encountered, then it returns TRUE. Otherwise, it returns FALSE.
// 08-02-93 JulieB Created.
BOOL InitEnumTimeFormats()
{
// Initialize date counter.
TimeCtr = 0;
// Return success.
return (TRUE);
}
// ETF_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.
// 08-02-93 JulieB Created.
int ETF_BadParamCheck()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
// Bad Function.
// Variation 1 - bad function
TimeCtr = 0;
rc = EnumTimeFormatsW( NULL,
0x0409,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Function invalid",
&NumErrors,
TimeCtr,
0 );
// Bad Locale.
// Variation 1 - bad locale
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
(LCID)333,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Locale invalid",
&NumErrors,
TimeCtr,
0 );
// Invalid Flag.
// Variation 1 - dwFlags = invalid
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
0x0409,
ETF_INVALID_FLAGS );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag invalid",
&NumErrors,
TimeCtr,
0 );
// Return total number of errors found.
return (NumErrors);
}
// ETF_NormalCase
// This routine tests the normal cases of the API routine.
// 08-02-93 JulieB Created.
int ETF_NormalCase()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- W version ----\n\n");
}
// Variation 1 - english
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
0x0409,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_ENGLISH,
"English",
&NumErrors );
// Variation 2 - japan
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
0x0411,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_JAPAN,
"Japan",
&NumErrors );
// Variation 3 - german
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
0x0407,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_GERMAN,
"German",
&NumErrors );
// Use CP ACP.
// Variation 1 - Use CP ACP
TimeCtr = 0;
rc = EnumTimeFormatsW( MyFuncTime,
0x0409,
LOCALE_USE_CP_ACP );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_ENGLISH,
"Use CP ACP, English",
&NumErrors );
// Return total number of errors found.
return (NumErrors);
}
// ETF_Ansi
// This routine tests the Ansi version of the API routine.
// 08-02-93 JulieB Created.
int ETF_Ansi()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- A version ----\n\n");
}
// Variation 1 - english
TimeCtr = 0;
rc = EnumTimeFormatsA( MyFuncTimeA,
0x0409,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_ENGLISH,
"A version English",
&NumErrors );
// Variation 2 - japan
TimeCtr = 0;
rc = EnumTimeFormatsA( MyFuncTimeA,
0x0411,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_JAPAN,
"A version Japan",
&NumErrors );
// Variation 3 - german
TimeCtr = 0;
rc = EnumTimeFormatsA( MyFuncTimeA,
0x0407,
0 );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_GERMAN,
"A version German",
&NumErrors );
// Use CP ACP.
// Variation 1 - Use CP ACP
TimeCtr = 0;
rc = EnumTimeFormatsA( MyFuncTimeA,
0x0409,
LOCALE_USE_CP_ACP );
CheckReturnValidEnum( rc,
TRUE,
TimeCtr,
NUM_TIME_ENGLISH,
"A version Use CP ACP, English",
&NumErrors );
// Return total number of errors found.
return (NumErrors);
}