/*++ Copyright (c) 1991-1999, Microsoft Corporation All rights reserved. Module Name: eslgtest.c Abstract: Test module for NLS API EnumSystemLanguageGroups. 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 ESLG_INVALID_FLAGS ((DWORD)(~(LGRPID_INSTALLED | LGRPID_SUPPORTED))) #define NUM_INSTALLED_LGRPIDS 17 #define NUM_SUPPORTED_LGRPIDS 17 // // Global Variables. // int LanguageGroupCtr; // // Forward Declarations. // BOOL InitEnumSystemLanguageGroups(); int ESLG_BadParamCheck(); int ESLG_NormalCase(); int ESLG_Ansi(); BOOL CALLBACK MyFuncLanguageGroup( LGRPID LangGroup, LPWSTR pStr1, LPWSTR pStr2, DWORD dwFlags, LONG_PTR lParam); BOOL CALLBACK MyFuncLanguageGroupA( LGRPID LangGroup, LPSTR pStr1, LPSTR pStr2, DWORD dwFlags, LONG_PTR lParam); // // Callback function // BOOL CALLBACK MyFuncLanguageGroup( LGRPID LangGroup, LPWSTR pStr1, LPWSTR pStr2, DWORD dwFlags, LONG_PTR lParam) { if (Verbose) { while (*pStr1) { printf((*pStr1 > 0xff) ? "(0x%x)" : "%wc", *pStr1); pStr1++; } printf(" - "); while (*pStr2) { printf((*pStr2 > 0xff) ? "(0x%x)" : "%wc", *pStr2); pStr2++; } printf(" - "); if (dwFlags & LGRPID_SUPPORTED) { printf("Supported"); } if (dwFlags & LGRPID_INSTALLED) { printf("Installed"); } printf("\n"); } LanguageGroupCtr++; return (TRUE); } BOOL CALLBACK MyFuncLanguageGroupA( LGRPID LangGroup, LPSTR pStr1, LPSTR pStr2, DWORD dwFlags, LONG_PTR lParam) { if (Verbose) { while (*pStr1) { printf((*pStr1 > 0xff) ? "(0x%x)" : "%c", *pStr1); pStr1++; } printf(" - "); while (*pStr2) { printf((*pStr2 > 0xff) ? "(0x%x)" : "%c", *pStr2); pStr2++; } printf(" - "); if (dwFlags & LGRPID_SUPPORTED) { printf("Supported"); } if (dwFlags & LGRPID_INSTALLED) { printf("Installed"); } printf("\n"); } LanguageGroupCtr++; return (TRUE); } //////////////////////////////////////////////////////////////////////////// // // TestEnumSystemLanguageGroups // // Test routine for EnumSystemLanguageGroupsW API. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int TestEnumSystemLanguageGroups() { int ErrCount = 0; // error count // // Print out what's being done. // printf("\n\nTESTING EnumSystemLanguageGroupsW...\n\n"); // // Initialize global variables. // if (!InitEnumSystemLanguageGroups()) { printf("\nABORTED TestEnumSystemLanguageGroups: Could not Initialize.\n"); return (1); } // // Test bad parameters. // ErrCount += ESLG_BadParamCheck(); // // Test normal cases. // ErrCount += ESLG_NormalCase(); // // Test Ansi version. // ErrCount += ESLG_Ansi(); // // Print out result. // printf("\nEnumSystemLanguageGroupsW: ERRORS = %d\n", ErrCount); // // Return total number of errors found. // return (ErrCount); } //////////////////////////////////////////////////////////////////////////// // // InitEnumSystemLanguageGroups // // 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 InitEnumSystemLanguageGroups() { // // Initialize locale counter. // LanguageGroupCtr = 0; // // Return success. // return (TRUE); } //////////////////////////////////////////////////////////////////////////// // // ESLG_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 ESLG_BadParamCheck() { int NumErrors = 0; // error count - to be returned int rc; // return code // // Invalid Function. // // Variation 1 - Function = invalid LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsW( NULL, LGRPID_INSTALLED, 0 ); CheckReturnBadParamEnum( rc, FALSE, ERROR_INVALID_PARAMETER, "Function invalid", &NumErrors, LanguageGroupCtr, 0 ); // // Invalid Flag. // // Variation 1 - dwFlags = invalid LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsW( MyFuncLanguageGroup, ESLG_INVALID_FLAGS, 0 ); CheckReturnBadParamEnum( rc, FALSE, ERROR_INVALID_FLAGS, "Flag invalid", &NumErrors, LanguageGroupCtr, 0 ); // Variation 2 - dwFlags = both invalid LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsW( MyFuncLanguageGroup, LGRPID_INSTALLED | LGRPID_SUPPORTED, 0 ); CheckReturnBadParamEnum( rc, FALSE, ERROR_INVALID_FLAGS, "Flag both invalid", &NumErrors, LanguageGroupCtr, 0 ); // // Return total number of errors found. // return (NumErrors); } //////////////////////////////////////////////////////////////////////////// // // ESLG_NormalCase // // This routine tests the normal cases of the API routine. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int ESLG_NormalCase() { int NumErrors = 0; // error count - to be returned int rc; // return code if (Verbose) { printf("\n---- W version ----\n\n"); } // Variation 1 - Installed LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsW( MyFuncLanguageGroup, LGRPID_INSTALLED, 0 ); CheckReturnValidEnum( rc, TRUE, LanguageGroupCtr, NUM_INSTALLED_LGRPIDS, "Flag installed", &NumErrors ); // Variation 2 - Supported LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsW( MyFuncLanguageGroup, LGRPID_SUPPORTED, 0 ); CheckReturnValidEnum( rc, TRUE, LanguageGroupCtr, NUM_SUPPORTED_LGRPIDS, "Flag supported", &NumErrors ); // // Return total number of errors found. // return (NumErrors); } //////////////////////////////////////////////////////////////////////////// // // ESLG_Ansi // // This routine tests the Ansi version of the API routine. // // 03-10-98 JulieB Created. //////////////////////////////////////////////////////////////////////////// int ESLG_Ansi() { int NumErrors = 0; // error count - to be returned int rc; // return code if (Verbose) { printf("\n---- A version ----\n\n"); } // Variation 1 - installed LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsA( MyFuncLanguageGroupA, LGRPID_INSTALLED, 0 ); CheckReturnValidEnum( rc, TRUE, LanguageGroupCtr, NUM_INSTALLED_LGRPIDS, "A version Flag installed", &NumErrors ); // Variation 2 - Supported LanguageGroupCtr = 0; rc = EnumSystemLanguageGroupsA( MyFuncLanguageGroupA, LGRPID_SUPPORTED, 0 ); CheckReturnValidEnum( rc, TRUE, LanguageGroupCtr, NUM_SUPPORTED_LGRPIDS, "A version Flag supported", &NumErrors ); // // Return total number of errors found. // return (NumErrors); }