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