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

443 lines
9.4 KiB
C

/*++
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
Module Name:
dbtest.c
Abstract:
Test module for NLS API IsDBCSLeadByte and IsDBCSLeadByteEx.
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:
06-14-91 JulieB Created.
--*/
// Include Files.
#include "nlstest.h"
// Forward Declarations.
int
DB_BadParamCheck();
int
DB_NormalCase();
void
CheckReturnIsDBCS(
int CurrentReturn,
int ExpectedReturn,
LPSTR pErrString,
int *pNumErrors);
// TestIsDBCSLeadByte
// Test routine for IsDBCSLeadByte API.
// 06-14-91 JulieB Created.
int TestIsDBCSLeadByte()
{
int ErrCount = 0; // error count
// Print out what's being done.
printf("\n\nTESTING IsDBCSLeadByte and IsDBCSLeadByteEx...\n\n");
// Test bad parameters.
ErrCount += DB_BadParamCheck();
// Test normal cases.
ErrCount += DB_NormalCase();
// Print out result.
printf("\nIsDBCSLeadByte: ERRORS = %d\n", ErrCount);
// Return total number of errors found.
return (ErrCount);
}
// DB_BadParamCheck
// This routine passes in bad parameters to the API routine and checks to
// be sure they are handled properly. The number of errors encountered
// is returned to the caller.
// 06-14-91 JulieB Created.
int DB_BadParamCheck()
{
int NumErrors = 0; // error count - to be returned
BYTE ch; // character to check
BOOL rc; // return code
// Invalid Code Page.
// Variation 1 - CodePage = invalid
ch = 0x00;
rc = IsDBCSLeadByteEx(5, ch);
CheckReturnBadParam( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"CodePage invalid",
&NumErrors );
// Return total number of errors found.
return (NumErrors);
}
// DB_NormalCase
// This routine tests the normal cases of the API routine.
// 06-14-91 JulieB Created.
int DB_NormalCase()
{
int NumErrors = 0; // error count - to be returned
BYTE ch; // character to check
BOOL rc; // return code
#ifdef PERF
DbgBreakPoint();
#endif
//-//
// IsDBCSLeadByte //
//-//
// Different values for ch.
// Variation 1 - ch = 0x00
ch = 0x00;
rc = IsDBCSLeadByte(ch);
CheckReturnIsDBCS( rc,
FALSE,
"ch = 0x00",
&NumErrors );
// Variation 2 - ch = 0x23
ch = 0x23;
rc = IsDBCSLeadByte(ch);
CheckReturnIsDBCS( rc,
FALSE,
"ch = 0x23",
&NumErrors );
// Variation 3 - ch = 0xb3
ch = 0xb3;
rc = IsDBCSLeadByte(ch);
CheckReturnIsDBCS( rc,
FALSE,
"ch = 0xb3",
&NumErrors );
// Variation 4 - ch = 0xff
ch = 0xff;
rc = IsDBCSLeadByte(ch);
CheckReturnIsDBCS( rc,
FALSE,
"ch = 0xff",
&NumErrors );
#ifdef JDB
// DBCS Chars for Japanese - cp 932.
// Variation 1 - DBCS lead byte 0x81
rc = IsDBCSLeadByte(0x81);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0x81",
&NumErrors );
// Variation 2 - DBCS lead byte 0x85
rc = IsDBCSLeadByte(0x85);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0x85",
&NumErrors );
// Variation 3 - DBCS lead byte 0x9f
rc = IsDBCSLeadByte(0x9f);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0x9f",
&NumErrors );
// Variation 4 - DBCS lead byte 0xe0
rc = IsDBCSLeadByte(0xe0);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0xe0",
&NumErrors );
// Variation 5 - DBCS lead byte 0xfb
rc = IsDBCSLeadByte(0xfb);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0xfb",
&NumErrors );
// Variation 6 - DBCS lead byte 0xfc
rc = IsDBCSLeadByte(0xfc);
CheckReturnIsDBCS( rc,
TRUE,
"DBCS 0xfc",
&NumErrors );
// Non DBCS Chars for Japanese - cp 932.
// Variation 1 - Non DBCS lead byte 0x80
CheckReturnIsDBCS( rc,
FALSE,
"Non DBCS lead byte 0x80",
&NumErrors );
// Variation 2 - Non DBCS lead byte 0xfd
rc = IsDBCSLeadByte(0xfd);
CheckReturnIsDBCS( rc,
FALSE,
"Non DBCS lead byte 0xfd",
&NumErrors );
// Variation 3 - Non DBCS lead byte 0xa0
rc = IsDBCSLeadByte(0xa0);
CheckReturnIsDBCS( rc,
FALSE,
"Non DBCS lead byte 0xa0",
&NumErrors );
// Variation 4 - Non DBCS lead byte 0xdf
rc = IsDBCSLeadByte(0xdf);
CheckReturnIsDBCS( rc,
FALSE,
"Non DBCS lead byte 0xdf",
&NumErrors );
#endif
//-//
// IsDBCSLeadByteEx //
//-//
// Different values for ch.
// Variation 1 - ch = 0x00
ch = 0x00;
rc = IsDBCSLeadByteEx(1252, ch);
CheckReturnIsDBCS( rc,
FALSE,
"Ex ch = 0x00",
&NumErrors );
// Variation 2 - ch = 0x23
ch = 0x23;
rc = IsDBCSLeadByteEx(1252, ch);
CheckReturnIsDBCS( rc,
FALSE,
"Ex ch = 0x23",
&NumErrors );
// Variation 3 - ch = 0xb3
ch = 0xb3;
rc = IsDBCSLeadByteEx(1252, ch);
CheckReturnIsDBCS( rc,
FALSE,
"Ex ch = 0xb3",
&NumErrors );
// Variation 4 - ch = 0xff
ch = 0xff;
rc = IsDBCSLeadByteEx(1252, ch);
CheckReturnIsDBCS( rc,
FALSE,
"Ex ch = 0xff",
&NumErrors );
// DBCS Chars for Japanese - cp 932.
// Variation 1 - DBCS lead byte 0x81
rc = IsDBCSLeadByteEx(932, 0x81);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0x81",
&NumErrors );
// Variation 2 - DBCS lead byte 0x85
rc = IsDBCSLeadByteEx(932, 0x85);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0x85",
&NumErrors );
// Variation 3 - DBCS lead byte 0x9f
rc = IsDBCSLeadByteEx(932, 0x9f);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0x9f",
&NumErrors );
// Variation 4 - DBCS lead byte 0xe0
rc = IsDBCSLeadByteEx(932, 0xe0);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0xe0",
&NumErrors );
// Variation 5 - DBCS lead byte 0xfb
rc = IsDBCSLeadByteEx(932, 0xfb);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0xfb",
&NumErrors );
// Variation 6 - DBCS lead byte 0xfc
rc = IsDBCSLeadByteEx(932, 0xfc);
CheckReturnIsDBCS( rc,
TRUE,
"Ex DBCS 0xfc",
&NumErrors );
// Non DBCS Chars for Japanese - cp 932.
// Variation 1 - Non DBCS lead byte 0x80
rc = IsDBCSLeadByteEx(932, 0x80);
CheckReturnIsDBCS( rc,
FALSE,
"Ex Non DBCS lead byte 0x80",
&NumErrors );
// Variation 2 - Non DBCS lead byte 0xfd
rc = IsDBCSLeadByteEx(932, 0xfd);
CheckReturnIsDBCS( rc,
FALSE,
"Ex Non DBCS lead byte 0xfd",
&NumErrors );
// Variation 3 - Non DBCS lead byte 0xa0
rc = IsDBCSLeadByteEx(932, 0xa0);
CheckReturnIsDBCS( rc,
FALSE,
"Ex Non DBCS lead byte 0xa0",
&NumErrors );
// Variation 4 - Non DBCS lead byte 0xdf
rc = IsDBCSLeadByteEx(932, 0xdf);
CheckReturnIsDBCS( rc,
FALSE,
"Ex Non DBCS lead byte 0xdf",
&NumErrors );
// Return total number of errors found.
return (NumErrors);
}
// CheckReturnIsDBCS
// Checks the return code from the IsDBCSLeadByte call. It prints out
// the appropriate error if the incorrect result is found.
// 06-14-91 JulieB Created.
void CheckReturnIsDBCS(
int CurrentReturn,
int ExpectedReturn,
LPSTR pErrString,
int *pNumErrors)
{
if ( (CurrentReturn != ExpectedReturn) ||
( (CurrentReturn == FALSE) &&
(GetLastError() == ERROR_FILE_NOT_FOUND) ) )
{
printf("ERROR: %s - \n", pErrString);
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
(*pNumErrors)++;
}
}