windows-nt/Source/XPSP1/NT/base/win32/winnls/test/nlstest/elgltest.c
2020-09-26 16:20:57 +08:00

850 lines
24 KiB
C

/*++
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
Module Name:
elgltest.c
Abstract:
Test module for NLS API EnumLanguageGroupLocales.
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:
03-10-98 JulieB Created.
--*/
//
// Include Files.
//
#include "nlstest.h"
//
// Constant Declarations.
//
#define BUFSIZE 50 // buffer size in wide chars
#define ELGL_INVALID_FLAGS ((DWORD)(~(0)))
#define NUM_LG1_LOCALES 67
#define NUM_LG2_LOCALES 10
#define NUM_LG3_LOCALES 3
#define NUM_LG4_LOCALES 1
#define NUM_LG5_LOCALES 12
#define NUM_LG6_LOCALES 3
#define NUM_LG7_LOCALES 1
#define NUM_LG8_LOCALES 1
#define NUM_LG9_LOCALES 5
#define NUM_LG10_LOCALES 4
#define NUM_LG11_LOCALES 1
#define NUM_LG12_LOCALES 1
#define NUM_LG13_LOCALES 20
#define NUM_LG14_LOCALES 1
#define NUM_LG15_LOCALES 9
#define NUM_LG16_LOCALES 2
#define NUM_LG17_LOCALES 1
//
// Global Variables.
//
int LocaleCtr;
//
// Forward Declarations.
//
BOOL
InitEnumLanguageGroupLocales();
int
ELGL_BadParamCheck();
int
ELGL_NormalCase();
int
ELGL_Ansi();
BOOL
CALLBACK
MyFuncLanguageGroupLocale(
LGRPID LangGroup,
LCID Locale,
LPWSTR pStr,
LONG_PTR lParam);
BOOL
CALLBACK
MyFuncLanguageGroupLocaleA(
LGRPID LangGroup,
LCID Locale,
LPSTR pStr,
LONG_PTR lParam);
//
// Callback function
//
BOOL CALLBACK MyFuncLanguageGroupLocale(
LGRPID LangGroup,
LCID Locale,
LPWSTR pStr,
LONG_PTR lParam)
{
if (Verbose)
{
printf("%x", LangGroup);
printf(" - ");
printf("%x", Locale);
printf(" - ");
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%wc", *pStr);
pStr++;
}
printf("\n");
}
LocaleCtr++;
return (TRUE);
}
BOOL CALLBACK MyFuncLanguageGroupLocaleA(
LGRPID LangGroup,
LCID Locale,
LPSTR pStr,
LONG_PTR lParam)
{
if (Verbose)
{
printf("%x", LangGroup);
printf(" - ");
printf("%x", Locale);
printf(" - ");
while (*pStr)
{
printf((*pStr > 0xff) ? "(0x%x)" : "%c", *pStr);
pStr++;
}
printf("\n");
}
LocaleCtr++;
return (TRUE);
}
////////////////////////////////////////////////////////////////////////////
//
// TestEnumLanguageGroupLocales
//
// Test routine for EnumLanguageGroupLocalesW API.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestEnumLanguageGroupLocales()
{
int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING EnumLanguageGroupLocalesW...\n\n");
//
// Initialize global variables.
//
if (!InitEnumLanguageGroupLocales())
{
printf("\nABORTED TestEnumLanguageGroupLocales: Could not Initialize.\n");
return (1);
}
//
// Test bad parameters.
//
ErrCount += ELGL_BadParamCheck();
//
// Test normal cases.
//
ErrCount += ELGL_NormalCase();
//
// Test Ansi version.
//
ErrCount += ELGL_Ansi();
//
// Print out result.
//
printf("\nEnumLanguageGroupLocalesW: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount);
}
////////////////////////////////////////////////////////////////////////////
//
// InitEnumLanguageGroupLocales
//
// This routine initializes the global variables. If no errors were
// encountered, then it returns TRUE. Otherwise, it returns FALSE.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
BOOL InitEnumLanguageGroupLocales()
{
//
// Initialize locale counter.
//
LocaleCtr = 0;
//
// Return success.
//
return (TRUE);
}
////////////////////////////////////////////////////////////////////////////
//
// ELGL_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.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int ELGL_BadParamCheck()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
//
// Invalid Function.
//
// Variation 1 - Function = invalid
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( NULL,
1,
0,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"Function invalid",
&NumErrors,
LocaleCtr,
0 );
//
// Invalid Flag.
//
// Variation 1 - dwFlags = invalid
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
1,
ELGL_INVALID_FLAGS,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag invalid",
&NumErrors,
LocaleCtr,
0 );
// Variation 2 - dwFlags = both invalid
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
1,
LGRPID_INSTALLED | LGRPID_SUPPORTED,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_FLAGS,
"Flag both invalid",
&NumErrors,
LocaleCtr,
0 );
//
// Invalid Language Group.
//
// Variation 1 - LanguageGroup = invalid
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
0,
0,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"LanguageGroup invalid (0)",
&NumErrors,
LocaleCtr,
0 );
// Variation 2 - LanguageGroup = invalid
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
18,
0,
0 );
CheckReturnBadParamEnum( rc,
FALSE,
ERROR_INVALID_PARAMETER,
"LanguageGroup invalid (18)",
&NumErrors,
LocaleCtr,
0 );
//
// Return total number of errors found.
//
return (NumErrors);
}
////////////////////////////////////////////////////////////////////////////
//
// ELGL_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int ELGL_NormalCase()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- W version ----\n\n");
}
// Variation 1 - Language Group 1
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
1,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG1_LOCALES,
"LanguageGroup 1",
&NumErrors );
// Variation 2 - Language Group 2
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
2,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG2_LOCALES,
"LanguageGroup 2",
&NumErrors );
// Variation 3 - Language Group 3
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
3,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG3_LOCALES,
"LanguageGroup 3",
&NumErrors );
// Variation 4 - Language Group 4
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
4,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG4_LOCALES,
"LanguageGroup 4",
&NumErrors );
// Variation 5 - Language Group 5
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
5,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG5_LOCALES,
"LanguageGroup 5",
&NumErrors );
// Variation 6 - Language Group 6
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
6,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG6_LOCALES,
"LanguageGroup 6",
&NumErrors );
// Variation 7 - Language Group 7
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
7,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG7_LOCALES,
"LanguageGroup 7",
&NumErrors );
// Variation 8 - Language Group 8
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
8,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG8_LOCALES,
"LanguageGroup 8",
&NumErrors );
// Variation 9 - Language Group 9
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
9,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG9_LOCALES,
"LanguageGroup 9",
&NumErrors );
// Variation 10 - Language Group 10
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
10,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG10_LOCALES,
"LanguageGroup 10",
&NumErrors );
// Variation 11 - Language Group 11
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
11,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG11_LOCALES,
"LanguageGroup 11",
&NumErrors );
// Variation 12 - Language Group 12
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
12,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG12_LOCALES,
"LanguageGroup 12",
&NumErrors );
// Variation 13 - Language Group 13
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
13,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG13_LOCALES,
"LanguageGroup 13",
&NumErrors );
// Variation 14 - Language Group 14
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
14,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG14_LOCALES,
"LanguageGroup 14",
&NumErrors );
// Variation 15 - Language Group 15
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
15,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG15_LOCALES,
"LanguageGroup 15",
&NumErrors );
// Variation 16 - Language Group 16
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
16,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG16_LOCALES,
"LanguageGroup 16",
&NumErrors );
// Variation 17 - Language Group 17
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesW( MyFuncLanguageGroupLocale,
17,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG17_LOCALES,
"LanguageGroup 17",
&NumErrors );
//
// Return total number of errors found.
//
return (NumErrors);
}
////////////////////////////////////////////////////////////////////////////
//
// ELGL_Ansi
//
// This routine tests the Ansi version of the API routine.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int ELGL_Ansi()
{
int NumErrors = 0; // error count - to be returned
int rc; // return code
if (Verbose)
{
printf("\n---- A version ----\n\n");
}
// Variation 1 - Language Group 1
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
1,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG1_LOCALES,
"A version Language Group 1",
&NumErrors );
// Variation 2 - Language Group 2
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
2,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG2_LOCALES,
"A version Language Group 2",
&NumErrors );
// Variation 3 - Language Group 3
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
3,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG3_LOCALES,
"A version Language Group 3",
&NumErrors );
// Variation 4 - Language Group 4
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
4,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG4_LOCALES,
"A version Language Group 4",
&NumErrors );
// Variation 5 - Language Group 5
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
5,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG5_LOCALES,
"A version Language Group 5",
&NumErrors );
// Variation 6 - Language Group 6
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
6,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG6_LOCALES,
"A version Language Group 6",
&NumErrors );
// Variation 7 - Language Group 7
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
7,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG7_LOCALES,
"A version Language Group 7",
&NumErrors );
// Variation 8 - Language Group 8
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
8,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG8_LOCALES,
"A version Language Group 8",
&NumErrors );
// Variation 9 - Language Group 9
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
9,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG9_LOCALES,
"A version Language Group 9",
&NumErrors );
// Variation 10 - Language Group 10
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
10,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG10_LOCALES,
"A version Language Group 10",
&NumErrors );
// Variation 11 - Language Group 11
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
11,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG11_LOCALES,
"A version Language Group 11",
&NumErrors );
// Variation 12 - Language Group 12
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
12,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG12_LOCALES,
"A version Language Group 12",
&NumErrors );
// Variation 13 - Language Group 13
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
13,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG13_LOCALES,
"A version Language Group 13",
&NumErrors );
// Variation 14 - Language Group 14
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
14,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG14_LOCALES,
"A version Language Group 14",
&NumErrors );
// Variation 15 - Language Group 15
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
15,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG15_LOCALES,
"A version Language Group 15",
&NumErrors );
// Variation 16 - Language Group 16
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
16,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG16_LOCALES,
"A version Language Group 16",
&NumErrors );
// Variation 17 - Language Group 17
LocaleCtr = 0;
rc = EnumLanguageGroupLocalesA( MyFuncLanguageGroupLocaleA,
17,
0,
0 );
CheckReturnValidEnum( rc,
TRUE,
LocaleCtr,
NUM_LG17_LOCALES,
"A version Language Group 17",
&NumErrors );
//
// Return total number of errors found.
//
return (NumErrors);
}