|
|
/*++
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); }
|