mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
868 lines
19 KiB
868 lines
19 KiB
/*++
|
|
|
|
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
nlstest.c
|
|
|
|
Abstract:
|
|
|
|
Test module for NLS API.
|
|
|
|
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"
|
|
|
|
|
|
|
|
|
|
//
|
|
// Global Variables.
|
|
//
|
|
|
|
BOOL Verbose = 0; // verbose flag
|
|
|
|
LCID pAllLocales[] = // all supported locale ids
|
|
{
|
|
0x0402,
|
|
0x0404,
|
|
0x0804,
|
|
0x0c04,
|
|
0x1004,
|
|
0x0405,
|
|
0x0406,
|
|
0x0407,
|
|
0x0807,
|
|
0x0c07,
|
|
0x0408,
|
|
0x0409,
|
|
0x0809,
|
|
0x0c09,
|
|
0x1009,
|
|
0x1409,
|
|
0x1809,
|
|
0x040a,
|
|
0x080a,
|
|
0x0c0a,
|
|
0x040b,
|
|
0x040c,
|
|
0x080c,
|
|
0x0c0c,
|
|
0x100c,
|
|
0x040e,
|
|
0x040f,
|
|
0x0410,
|
|
0x0810,
|
|
0x0411,
|
|
0x0412,
|
|
0x0413,
|
|
0x0813,
|
|
0x0414,
|
|
0x0814,
|
|
0x0415,
|
|
0x0416,
|
|
0x0816,
|
|
0x0418,
|
|
0x0419,
|
|
0x041a,
|
|
0x041b,
|
|
0x041d,
|
|
0x041f,
|
|
0x0424
|
|
};
|
|
|
|
int NumLocales = ( sizeof(pAllLocales) / sizeof(LCID) );
|
|
|
|
// Buffer used in GetUnicodeString()/GetAnsiString()
|
|
CHAR TempStringBuffer[1024];
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// main
|
|
//
|
|
// Main Routine.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int _cdecl main(
|
|
int argc,
|
|
char *argv[])
|
|
{
|
|
int NumErrs = 0; // number of errors
|
|
|
|
|
|
//
|
|
// Check for verbose switch.
|
|
//
|
|
if ( (argc > 1) && (_stricmp(argv[1], "-v") == 0) )
|
|
{
|
|
Verbose = 1;
|
|
}
|
|
|
|
|
|
//
|
|
// Print out what's being done.
|
|
//
|
|
printf("\nTesting NLS Component.\n");
|
|
|
|
|
|
//
|
|
// Test MultiByteToWideChar.
|
|
//
|
|
NumErrs += TestMBToWC();
|
|
|
|
|
|
//
|
|
// Test WideCharToMultiByte.
|
|
//
|
|
NumErrs += TestWCToMB();
|
|
|
|
|
|
//
|
|
// Test GetCPInfo.
|
|
//
|
|
NumErrs += TestGetCPInfo();
|
|
|
|
|
|
//
|
|
// Test CompareString.
|
|
//
|
|
NumErrs += TestCompareString();
|
|
|
|
|
|
//
|
|
// Test GetStringType.
|
|
//
|
|
NumErrs += TestGetStringType();
|
|
|
|
|
|
//
|
|
// Test FoldString.
|
|
//
|
|
NumErrs += TestFoldString();
|
|
|
|
|
|
//
|
|
// Test LCMapString.
|
|
//
|
|
NumErrs += TestLCMapString();
|
|
|
|
|
|
//
|
|
// Test GetLocaleInfo.
|
|
//
|
|
NumErrs += TestGetLocaleInfo();
|
|
|
|
|
|
//
|
|
// Test SetLocaleInfo.
|
|
//
|
|
NumErrs += TestSetLocaleInfo();
|
|
|
|
|
|
//
|
|
// Test GetCalendarInfo.
|
|
//
|
|
NumErrs += TestGetCalendarInfo();
|
|
|
|
|
|
//
|
|
// Test SetCalendarInfo.
|
|
//
|
|
NumErrs += TestSetCalendarInfo();
|
|
|
|
|
|
//
|
|
// Test GetGeoInfo.
|
|
//
|
|
NumErrs += TestGetGeoInfo();
|
|
|
|
|
|
//
|
|
// Test GetTimeFormat.
|
|
//
|
|
NumErrs += TestGetTimeFormat();
|
|
|
|
|
|
//
|
|
// Test GetDateFormat.
|
|
//
|
|
NumErrs += TestGetDateFormat();
|
|
|
|
|
|
//
|
|
// Test GetNumberFormat.
|
|
//
|
|
NumErrs += TestGetNumberFormat();
|
|
|
|
|
|
//
|
|
// Test GetCurrencyFormat.
|
|
//
|
|
NumErrs += TestGetCurrencyFormat();
|
|
|
|
|
|
//
|
|
// Test IsDBCSLeadByte.
|
|
//
|
|
NumErrs += TestIsDBCSLeadByte();
|
|
|
|
|
|
//
|
|
// Test IsValidCodePage.
|
|
//
|
|
NumErrs += TestIsValidCodePage();
|
|
|
|
|
|
//
|
|
// Test IsValidLanguageGroup.
|
|
//
|
|
NumErrs += TestIsValidLanguageGroup();
|
|
|
|
|
|
//
|
|
// Test IsValidLocale.
|
|
//
|
|
NumErrs += TestIsValidLocale();
|
|
|
|
|
|
//
|
|
// Test GetACP, GetOEMCP,
|
|
// GetSystemDefaultUILanguage, GetUserDefaultUILanguage,
|
|
// GetSystemDefaultLangID, GetUserDefaultLangID,
|
|
// GetSystemDefaultLCID, GetUserDefaultLCID,
|
|
// GetThreadLocale, SetThreadLocale
|
|
//
|
|
NumErrs += TestUtilityAPIs();
|
|
|
|
|
|
//
|
|
// Test EnumUILanguages.
|
|
//
|
|
NumErrs += TestEnumUILanguages();
|
|
|
|
|
|
//
|
|
// Test EnumSystemLanguageGroups.
|
|
//
|
|
NumErrs += TestEnumSystemLanguageGroups();
|
|
|
|
|
|
//
|
|
// Test EnumLanguageGroupLocales.
|
|
//
|
|
NumErrs += TestEnumLanguageGroupLocales();
|
|
|
|
|
|
//
|
|
// Test EnumSystemLocales.
|
|
//
|
|
NumErrs += TestEnumSystemLocales();
|
|
|
|
|
|
//
|
|
// Test EnumSystemCodePages.
|
|
//
|
|
NumErrs += TestEnumSystemCodePages();
|
|
|
|
|
|
//
|
|
// Test EnumCalendarInfo.
|
|
//
|
|
NumErrs += TestEnumCalendarInfo();
|
|
|
|
|
|
//
|
|
// Test EnumTimeFormats.
|
|
//
|
|
NumErrs += TestEnumTimeFormats();
|
|
|
|
|
|
//
|
|
// Test EnumDateFormats.
|
|
//
|
|
NumErrs += TestEnumDateFormats();
|
|
|
|
|
|
//
|
|
// Test EnumSystemGeoID.
|
|
//
|
|
NumErrs += TestEnumSystemGeoID();
|
|
|
|
|
|
//
|
|
// Print out final result.
|
|
//
|
|
if (NumErrs == 0)
|
|
printf("\n\n\nNO Errors Found.\n\n");
|
|
else
|
|
printf("\n\n\n%d ERRORS FOUND.\n\n", NumErrs);
|
|
|
|
|
|
//
|
|
// Return number of errors found.
|
|
//
|
|
return (NumErrs);
|
|
|
|
|
|
argc;
|
|
argv;
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CompStringsW
|
|
//
|
|
// Compares a wide character string to another wide character string.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int CompStringsW(
|
|
WCHAR *WCStr1,
|
|
WCHAR *WCStr2,
|
|
int size)
|
|
{
|
|
int ctr; // loop counter
|
|
|
|
|
|
for (ctr = 0; WCStr1[ctr] == WCStr2[ctr]; ctr++)
|
|
{
|
|
if (ctr == (size - 1))
|
|
return (0);
|
|
}
|
|
|
|
return (1);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CompStringsA
|
|
//
|
|
// Compares a multibyte string to another multibyte character string.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
int CompStringsA(
|
|
BYTE *MBStr1,
|
|
BYTE *MBStr2,
|
|
int size)
|
|
{
|
|
int ctr; // loop counter
|
|
|
|
for (ctr = 0; MBStr1[ctr] == MBStr2[ctr]; ctr++)
|
|
{
|
|
if (ctr == (size - 1))
|
|
return (0);
|
|
}
|
|
|
|
return (1);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PrintWC
|
|
//
|
|
// Prints out a wide character string to the screen.
|
|
// Need the size parameter because the string may not be zero terminated.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void PrintWC(
|
|
WCHAR *WCStr,
|
|
int size)
|
|
{
|
|
int ctr; // loop counter
|
|
|
|
//
|
|
// Print the wide character string.
|
|
//
|
|
printf(" WC String => [%s]\n", GetUnicodeString(WCStr, size));
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// PrintMB
|
|
//
|
|
// Prints out a multibyte character string to the screen.
|
|
// Need the size parameter because the string may not be zero terminated.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void PrintMB(
|
|
BYTE *MBStr,
|
|
int size)
|
|
{
|
|
int ctr; // loop counter
|
|
|
|
|
|
//
|
|
// Print the multibyte character string.
|
|
//
|
|
printf(" MB String => [");
|
|
for (ctr = 0; ctr < size; ctr++)
|
|
{
|
|
printf(((MBStr[ctr] < 0x21) || (MBStr[ctr] > 0x7e)) ? "(0x%x)" : "%c",
|
|
MBStr[ctr]);
|
|
}
|
|
printf("]\n");
|
|
}
|
|
|
|
LPSTR GetUnicodeString(LPWSTR wstr, int count)
|
|
{
|
|
int i;
|
|
LPSTR lpResult = TempStringBuffer;
|
|
if (count == -1)
|
|
{
|
|
count = wcslen(wstr) + 1;
|
|
}
|
|
|
|
|
|
for (i = 0; i < count; i++)
|
|
{
|
|
lpResult += sprintf(lpResult, "\\x%04x", (int)wstr[i]);
|
|
}
|
|
lpResult = L'\0';
|
|
|
|
return (TempStringBuffer);
|
|
}
|
|
|
|
LPSTR GetAnsiString(LPSTR str, int count)
|
|
{
|
|
int i;
|
|
LPSTR lpResult = TempStringBuffer;
|
|
if (count == -1)
|
|
{
|
|
count = strlen(str);
|
|
}
|
|
|
|
for (i = 0; i < count; i++)
|
|
{
|
|
lpResult += sprintf(lpResult, "\\x%02x", (unsigned char)str[i]);
|
|
}
|
|
lpResult = L'\0';
|
|
|
|
return (TempStringBuffer);
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckLastError
|
|
//
|
|
// Checks the last error value.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckLastError(
|
|
DWORD ExpectedLastError,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
DWORD CurrentLastError; // last error
|
|
WCHAR Buffer[512];
|
|
|
|
|
|
if ((CurrentLastError = GetLastError()) != ExpectedLastError)
|
|
{
|
|
printf(">>>>ERROR: %s - \n", pErrString);
|
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, CurrentLastError, 0, Buffer, 512, NULL);
|
|
wprintf(L" LastError = %x, String: %s\n", CurrentLastError, Buffer);
|
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ExpectedLastError, 0, Buffer, 512, NULL);
|
|
wprintf(L" Expected = %x, String: %s\n", ExpectedLastError, Buffer);
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnBadParam
|
|
//
|
|
// Checks the return code from a call with a bad parameter. It prints out
|
|
// the appropriate error if either the return code or the last error is
|
|
// incorrect.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnBadParam(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
DWORD ExpectedLastError,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
DWORD CurrentLastError; // last error
|
|
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
((CurrentLastError = GetLastError()) != ExpectedLastError) )
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
printf(" LastError = %d, Expected = %d\n", CurrentLastError, ExpectedLastError);
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnBadParamEnum
|
|
//
|
|
// Checks the return code from an enumeration call with a bad parameter.
|
|
// It prints out the appropriate error if either the return code, the last
|
|
// error, or the enumeration counter is incorrect.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnBadParamEnum(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
DWORD ExpectedLastError,
|
|
LPSTR pErrString,
|
|
int *pNumErrors,
|
|
int CurrentEnumCtr,
|
|
int ExpectedEnumCtr)
|
|
{
|
|
DWORD CurrentLastError; // last error
|
|
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
((CurrentLastError = GetLastError()) != ExpectedLastError) ||
|
|
(CurrentEnumCtr != ExpectedEnumCtr) )
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
printf(" LastError = %d, Expected = %d\n", CurrentLastError, ExpectedLastError);
|
|
printf(" EnumCtr = %d, Expected = %d\n", CurrentEnumCtr, ExpectedEnumCtr);
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnEqual
|
|
//
|
|
// Checks the return code from the valid NLS api "A" call to be sure that
|
|
// it does NOT equal a particular value. If it does equal that value,
|
|
// then it prints out the appropriate error.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnEqual(
|
|
int CurrentReturn,
|
|
int NonExpectedReturn,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
if (CurrentReturn == NonExpectedReturn)
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Unexpected Return = %d\n", CurrentReturn);
|
|
printf(" Last Error = %d\n", GetLastError());
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidEnumLoop
|
|
//
|
|
// Checks the return code from the valid NLS api "Enum" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidEnumLoop(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
int CurrentCtr,
|
|
int ExpectedCtr,
|
|
LPSTR pErrString,
|
|
DWORD ItemValue,
|
|
int *pNumErrors)
|
|
{
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
(CurrentCtr != ExpectedCtr) )
|
|
{
|
|
printf("ERROR: %s %x - \n", pErrString, ItemValue);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
printf(" Counter = %d, Expected = %d\n", CurrentCtr, ExpectedCtr);
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
|
|
if (Verbose)
|
|
{
|
|
printf("\n");
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidEnum
|
|
//
|
|
// Checks the return code from the valid NLS api "Enum" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidEnum(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
int CurrentCtr,
|
|
int ExpectedCtr,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
(CurrentCtr != ExpectedCtr) )
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
printf(" Counter = %d, Expected = %d\n", CurrentCtr, ExpectedCtr);
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
|
|
if (Verbose)
|
|
{
|
|
printf("\n");
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidLoopW
|
|
//
|
|
// Checks the return code from the valid NLS api "W" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidLoopW(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
LPWSTR pCurrentString,
|
|
LPWSTR pExpectedString,
|
|
LPSTR pErrString,
|
|
DWORD ItemValue,
|
|
int *pNumErrors)
|
|
{
|
|
if ((ExpectedReturn == -1) && (pExpectedString != NULL))
|
|
{
|
|
ExpectedReturn = WC_STRING_LEN_NULL(pExpectedString);
|
|
}
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
( (pCurrentString != NULL) &&
|
|
(CompStringsW(pCurrentString, pExpectedString, CurrentReturn)) ) )
|
|
{
|
|
printf("ERROR: %s %x - \n", pErrString, ItemValue);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
|
|
if (pCurrentString != NULL)
|
|
{
|
|
PrintWC(pCurrentString, CurrentReturn);
|
|
}
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidLoopA
|
|
//
|
|
// Checks the return code from the valid NLS api "A" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidLoopA(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
LPSTR pCurrentString,
|
|
LPSTR pExpectedString,
|
|
LPSTR pErrString,
|
|
DWORD ItemValue,
|
|
int *pNumErrors)
|
|
{
|
|
if ((ExpectedReturn == -1) && (pExpectedString != NULL))
|
|
{
|
|
ExpectedReturn = MB_STRING_LEN_NULL(pExpectedString);
|
|
}
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
( (pCurrentString != NULL) &&
|
|
(CompStringsA(pCurrentString, pExpectedString, CurrentReturn)) ) )
|
|
{
|
|
printf("ERROR: %s %x - \n", pErrString, ItemValue);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
|
|
if (pCurrentString != NULL)
|
|
{
|
|
PrintMB(pCurrentString, CurrentReturn);
|
|
}
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidW
|
|
//
|
|
// Checks the return code from the valid NLS api "W" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidW(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
LPWSTR pCurrentString,
|
|
LPWSTR pExpectedString,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
if ((ExpectedReturn == -1) && (pExpectedString != NULL))
|
|
{
|
|
ExpectedReturn = WC_STRING_LEN_NULL(pExpectedString);
|
|
}
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
( (pCurrentString != NULL) &&
|
|
(CompStringsW(pCurrentString, pExpectedString, CurrentReturn)) ) )
|
|
{
|
|
printf(">>>>ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d\n", CurrentReturn);
|
|
printf(" Expected = %d\n", ExpectedReturn);
|
|
|
|
if (pCurrentString != NULL)
|
|
{
|
|
PrintWC(pCurrentString, CurrentReturn);
|
|
}
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidA
|
|
//
|
|
// Checks the return code from the valid NLS api "A" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidA(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
LPSTR pCurrentString,
|
|
LPSTR pExpectedString,
|
|
LPBOOL pUsedDef,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
if ((ExpectedReturn == -1) && (pExpectedString != NULL))
|
|
{
|
|
ExpectedReturn = MB_STRING_LEN_NULL(pExpectedString);
|
|
}
|
|
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
( (pCurrentString != NULL) &&
|
|
(CompStringsA(pCurrentString, pExpectedString, CurrentReturn)) ) ||
|
|
( (pUsedDef != NULL) &&
|
|
(*pUsedDef != TRUE) ) )
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
|
|
if (pUsedDef != NULL)
|
|
{
|
|
printf(" UsedDef = %d\n", *pUsedDef);
|
|
}
|
|
|
|
if (pCurrentString != NULL)
|
|
{
|
|
PrintMB(pCurrentString, CurrentReturn);
|
|
}
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CheckReturnValidInt
|
|
//
|
|
// Checks the return code from the valid NLS api "W" call. It prints out
|
|
// the appropriate error if the incorrect result is found.
|
|
//
|
|
// 06-14-91 JulieB Created.
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
void CheckReturnValidInt(
|
|
int CurrentReturn,
|
|
int ExpectedReturn,
|
|
DWORD CurrentInt,
|
|
DWORD ExpectedInt,
|
|
LPSTR pErrString,
|
|
int *pNumErrors)
|
|
{
|
|
if ( (CurrentReturn != ExpectedReturn) ||
|
|
(CurrentInt != ExpectedInt) )
|
|
{
|
|
printf("ERROR: %s - \n", pErrString);
|
|
printf(" Return = %d, Expected = %d\n", CurrentReturn, ExpectedReturn);
|
|
printf(" Return Int = %d, Expected Int = %d\n", CurrentInt, ExpectedInt);
|
|
|
|
(*pNumErrors)++;
|
|
}
|
|
}
|