windows-nt/Source/XPSP1/NT/base/win32/winnls/test/nlstest/edftest.c

851 lines
22 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
Module Name:
edftest.c
Abstract:
Test module for NLS API EnumDateFormats.
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 EDF_INVALID_FLAGS ((DWORD)(~(DATE_SHORTDATE | DATE_LONGDATE | \
DATE_YEARMONTH)))
#define NUM_SHORT_DATES_ENGLISH 7
#define NUM_LONG_DATES_ENGLISH 4
#define NUM_YEAR_MONTH_ENGLISH 1
#define NUM_SHORT_DATES_JAPAN 20
#define NUM_LONG_DATES_JAPAN 14
#define NUM_YEAR_MONTH_JAPAN 3
//
// Global Variables.
//
int DateCtr;
//
// Forward Declarations.
//
BOOL
InitEnumDateFormats();
int
EDF_BadParamCheck();
int
EDF_NormalCase();
int
EDF_Ansi();
BOOL
CALLBACK
MyFuncDate(
LPWSTR pStr);
BOOL
CALLBACK
MyFuncDateA(
LPSTR pStr);
BOOL
CALLBACK
MyFuncDateEx(
LPWSTR pStr,
CALID CalId);
BOOL
CALLBACK
MyFuncDateExA(
LPSTR pStr,
CALID CalId);
//
// Callback functions.
//
BOOL CALLBACK MyFuncDate(
LPWSTR pStr)
{
if (Verbose)
{
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%wc", *pStr);
pStr++;
}
printf("\n");
}
DateCtr++;
return (TRUE);
}
BOOL CALLBACK MyFuncDateA(
LPSTR pStr)
{
if (Verbose)
{
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%c", *pStr);
pStr++;
}
printf("\n");
}
DateCtr++;
return (TRUE);
}
//
// Callback functions for EX version.
//
BOOL CALLBACK MyFuncDateEx(
LPWSTR pStr,
CALID CalId)
{
if (Verbose)
{
printf("CalId = %d\n", CalId);
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%wc", *pStr);
pStr++;
}
printf("\n");
}
DateCtr++;
return (TRUE);
}
BOOL CALLBACK MyFuncDateExA(
LPSTR pStr,
CALID CalId)
{
if (Verbose)
{
printf("CalId = %d\n", CalId);
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%c", *pStr);
pStr++;
}
printf("\n");
}
DateCtr++;
return (TRUE);
}
////////////////////////////////////////////////////////////////////////////
//
// TestEnumDateFormats
//
// Test routine for EnumDateFormatsW API.
//
// 08-02-93 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestEnumDateFormats()
{
int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING EnumDateFormatsW...\n\n");
//
// Initialize global variables.
//
if (!InitEnumDateFormats())
{
printf("\nABORTED TestEnumDateFormats: Could not Initialize.\n");
return (1);
}
//
// Test bad parameters.
//
ErrCount += EDF_BadParamCheck();
//
// Test normal cases.
//
ErrCount += EDF_NormalCase();
//
// Test Ansi version.
//
ErrCount += EDF_Ansi();
//
// Print out result.
//
printf("\nEnumDateFormatsW: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount);
}
////////////////////////////////////////////////////////////////////////////
//
// InitEnumDateFormats
//
// 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 InitEnumDateFormats()
{
//
// Initialize date counter.
//
DateCtr = 0;
//
// Return success.
//
return (TRUE);
}
////////////////////////////////////////////////////////////////////////////
//
// EDF_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 EDF_BadParamCheck()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
//
// Bad Function.
//
// Variation 1 - bad function
DateCtr = 0;
rc = EnumDateFormatsW( NULL,
0x0409,
DATE_SHORTDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Function invalid",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( NULL,
0x0409,
DATE_SHORTDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Ex Function invalid",
&NumErrors,
DateCtr,
0 );
//
// Bad Locale.
//
// Variation 1 - bad locale
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
(LCID)333,
DATE_SHORTDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Locale invalid",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
(LCID)333,
DATE_SHORTDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Ex Locale invalid",
&NumErrors,
DateCtr,
0 );
//
// Invalid Flag.
//
// Variation 1 - dwFlags = invalid
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
EDF_INVALID_FLAGS );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag invalid",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
EDF_INVALID_FLAGS );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Ex Flag invalid",
&NumErrors,
DateCtr,
0 );
// Variation 2 - dwFlags = both invalid
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
DATE_SHORTDATE | DATE_LONGDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag both invalid",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
DATE_SHORTDATE | DATE_YEARMONTH );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag both invalid 2",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
DATE_SHORTDATE | DATE_LONGDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Ex Flag both invalid",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
DATE_SHORTDATE | DATE_YEARMONTH );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Ex Flag both invalid 2",
&NumErrors,
DateCtr,
0 );
// Variation 3 - dwFlags = 2 invalid and Use CP ACP
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
LOCALE_USE_CP_ACP |
DATE_SHORTDATE | DATE_LONGDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag 2 invalid, Use CP ACP",
&NumErrors,
DateCtr,
0 );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
LOCALE_USE_CP_ACP |
DATE_SHORTDATE | DATE_LONGDATE );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Ex Flag 2 invalid, Use CP ACP",
&NumErrors,
DateCtr,
0 );
//
// Return total number of errors found.
//
return (NumErrors);
}
////////////////////////////////////////////////////////////////////////////
//
// EDF_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 08-02-93 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int EDF_NormalCase()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- W version ----\n\n");
}
// Variation 1 - short date
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"short date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"Ex short date English",
&NumErrors );
// Variation 2 - short date
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0411,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_JAPAN,
"short date Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0411,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_JAPAN,
"Ex short date Japan",
&NumErrors );
// Variation 3 - long date
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_ENGLISH,
"long date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_ENGLISH,
"Ex long date English",
&NumErrors );
// Variation 4 - long date
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0411,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_JAPAN,
"long date Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0411,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_JAPAN,
"Ex long date Japan",
&NumErrors );
// Variation 5 - year month
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_ENGLISH,
"year month English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_ENGLISH,
"Ex year month English",
&NumErrors );
// Variation 6 - year month
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0411,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_JAPAN,
"year month Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0411,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_JAPAN,
"Ex year month Japan",
&NumErrors );
//
// Use CP ACP.
//
// Variation 1 - Use CP ACP
DateCtr = 0;
rc = EnumDateFormatsW( MyFuncDate,
0x0409,
LOCALE_USE_CP_ACP | DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"Use CP ACP, short date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExW( MyFuncDateEx,
0x0409,
LOCALE_USE_CP_ACP | DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"Ex Use CP ACP, short date English",
&NumErrors );
//
// Return total number of errors found.
//
return (NumErrors);
}
////////////////////////////////////////////////////////////////////////////
//
// EDF_Ansi
//
// This routine tests the Ansi version of the API routine.
//
// 08-02-93 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int EDF_Ansi()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- A version ----\n\n");
}
// Variation 1 - short date
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0409,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"A version short date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0409,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"Ex A version short date English",
&NumErrors );
// Variation 2 - short date
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0411,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_JAPAN,
"A version short date Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0411,
DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_JAPAN,
"Ex A version short date Japan",
&NumErrors );
// Variation 3 - long date
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0409,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_ENGLISH,
"A version short date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0409,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_ENGLISH,
"Ex A version short date English",
&NumErrors );
// Variation 4 - long date
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0411,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_JAPAN,
"A version long date Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0411,
DATE_LONGDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_LONG_DATES_JAPAN,
"Ex A version long date Japan",
&NumErrors );
// Variation 5 - year month
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0409,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_ENGLISH,
"A version year month English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0409,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_ENGLISH,
"Ex A version year month English",
&NumErrors );
// Variation 5 - year month
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0411,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_JAPAN,
"A version year month Japan",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0411,
DATE_YEARMONTH );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_YEAR_MONTH_JAPAN,
"Ex A version year month Japan",
&NumErrors );
//
// Use CP ACP.
//
// Variation 1 - Use CP ACP
DateCtr = 0;
rc = EnumDateFormatsA( MyFuncDateA,
0x0409,
LOCALE_USE_CP_ACP | DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"A version Use CP ACP, short date English",
&NumErrors );
DateCtr = 0;
rc = EnumDateFormatsExA( MyFuncDateExA,
0x0409,
LOCALE_USE_CP_ACP | DATE_SHORTDATE );
CheckReturnValidEnum( rc,
TRUE,
DateCtr,
NUM_SHORT_DATES_ENGLISH,
"Ex A version Use CP ACP, short date English",
&NumErrors );
//
// Return total number of errors found.
//
return (NumErrors);
}