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