|
|
/*++
Copyright (c) 1991-1999, Microsoft Corporation All rights reserved.
Module Name:
gettest.c
Abstract:
Test module for NLS API IsValidCodePage, IsValidLocale, IsValidLanguageGroup, GetACP, GetOEMCP, GetSystemDefaultUILanguage, GetUserDefaultUILanguage, GetSystemDefaultLangID, GetUserDefaultLangID, GetSystemDefaultLCID, GetUserDefaultLCID, GetThreadLocale, SetThreadLocale.
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 IVCP_NormalCase();
int IVLC_NormalCase();
int IVLG_NormalCase();
int GUAPI_NormalCase();
////////////////////////////////////////////////////////////////////////////
//
// TestIsValidCodePage
//
// Test routine for IsValidCodePage API.
//
// 06-14-91 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestIsValidCodePage() { int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING IsValidCodePage...\n\n");
//
// Test normal cases.
//
ErrCount += IVCP_NormalCase();
//
// Print out result.
//
printf("\nIsValidCodePage: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount); }
////////////////////////////////////////////////////////////////////////////
//
// IVCP_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 06-14-91 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int IVCP_NormalCase() { int NumErrors = 0; // error count - to be returned
BOOL rc; // return code
//
// Different values for CodePage.
//
// Variation 1 - CP_ACP
rc = IsValidCodePage( CP_ACP ); CheckReturnValidW( rc, FALSE, NULL, NULL, "CP_ACP", &NumErrors );
// Variation 2 - CP_OEMCP
rc = IsValidCodePage( CP_OEMCP ); CheckReturnValidW( rc, FALSE, NULL, NULL, "CP_OEMCP", &NumErrors );
// Variation 3 - CP 6
rc = IsValidCodePage( 6 ); CheckReturnValidW( rc, FALSE, NULL, NULL, "CP 6", &NumErrors );
// Variation 4 - CP 1252
rc = IsValidCodePage( 1252 ); CheckReturnValidW( rc, TRUE, NULL, NULL, "CP 1252", &NumErrors );
// Variation 5 - CP 437
rc = IsValidCodePage( 437 ); CheckReturnValidW( rc, TRUE, NULL, NULL, "CP 437", &NumErrors );
// Variation 6 - CP 37
rc = IsValidCodePage( 37 ); CheckReturnValidW( rc, TRUE, NULL, NULL, "CP 37", &NumErrors );
// Variation 7 - CP 65000 (UTF-7)
rc = IsValidCodePage( 65000 ); CheckReturnValidW( rc, TRUE, NULL, NULL, "CP 65000", &NumErrors );
// Variation 8 - CP 65001 (UTF-8)
rc = IsValidCodePage( 65001 ); CheckReturnValidW( rc, TRUE, NULL, NULL, "CP 65001", &NumErrors );
//
// Return total number of errors found.
//
return (NumErrors); }
////////////////////////////////////////////////////////////////////////////
//
// TestIsValidLocale
//
// Test routine for IsValidLocale API.
//
// 07-26-93 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestIsValidLocale() { int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING IsValidLocale...\n\n");
//
// Test normal cases.
//
ErrCount += IVLC_NormalCase();
//
// Print out result.
//
printf("\nIsValidLocale: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount); }
////////////////////////////////////////////////////////////////////////////
//
// IVLC_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 07-26-93 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int IVLC_NormalCase() { int NumErrors = 0; // error count - to be returned
BOOL rc; // return code
//
// Invalid values for Locale.
//
// Variation 1 - Neutral Locale
rc = IsValidLocale( 0x00000000, LCID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "LOCALE_NEUTRAL", &NumErrors );
// Variation 2 - System Default Locale
rc = IsValidLocale( LOCALE_SYSTEM_DEFAULT, LCID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "LOCALE_SYSTEM_DEFAULT", &NumErrors );
// Variation 3 - User Default Locale
rc = IsValidLocale( LOCALE_USER_DEFAULT, LCID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "LOCALE_USER_DEFAULT", &NumErrors );
// Variation 4 - LCID 01000409
rc = IsValidLocale( 0x01000409, LCID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "invalid (0x01000409)", &NumErrors );
// Variation 5 - invalid flag
rc = IsValidLocale( 0x00000409, 0x10000000 ); CheckReturnValidW( rc, FALSE, NULL, NULL, "invalid flag", &NumErrors );
// Variation 6 - LCID 00010407
rc = IsValidLocale( 0x00010407, LCID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "sort bit (0x00010407)", &NumErrors );
// Variation 7 - LCID 00010409
rc = IsValidLocale( 0x00010409, LCID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "sort bit (0x00010409)", &NumErrors );
//
// Valid values for locale.
//
// Variation 1 - LCID 00000409 supported
rc = IsValidLocale( 0x00000409, LCID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 0x0409", &NumErrors );
// Variation 2 - LCID 00000409 installed
rc = IsValidLocale( 0x00000409, LCID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x0409", &NumErrors );
// Variation 3 - LCID 0000041f supported
rc = IsValidLocale( 0x0000041f, LCID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 0x041f", &NumErrors );
// Variation 4 - LCID 0000041f installed
rc = IsValidLocale( 0x0000041f, LCID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x041f", &NumErrors );
// Variation 5 - LCID 00000408 supported
rc = IsValidLocale( 0x00000408, LCID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 0x0408", &NumErrors );
// Variation 6 - LCID 00000408 installed
rc = IsValidLocale( 0x00000408, LCID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x0408", &NumErrors );
// Variation 7 - LCID 00000411 installed
rc = IsValidLocale( 0x00000411, LCID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed (0x00000411)", &NumErrors );
//
// Return total number of errors found.
//
return (NumErrors); }
////////////////////////////////////////////////////////////////////////////
//
// TestIsValidLanguageGroup
//
// Test routine for IsValidLanguageGroup API.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestIsValidLanguageGroup() { int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING IsValidLanguageGroup...\n\n");
//
// Test normal cases.
//
ErrCount += IVLG_NormalCase();
//
// Print out result.
//
printf("\nIsValidLanguageGroup: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount); }
////////////////////////////////////////////////////////////////////////////
//
// IVLG_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 03-10-98 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int IVLG_NormalCase() { int NumErrors = 0; // error count - to be returned
BOOL rc; // return code
//
// Invalid values for Language Groups.
//
// Variation 1 - Neutral Language Group
rc = IsValidLanguageGroup( 0x0, LGRPID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "Language Group NEUTRAL", &NumErrors );
// Variation 2 - Invalid Language Group
rc = IsValidLanguageGroup( 0x12, LGRPID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "Invalid (0x12)", &NumErrors );
// Variation 3 - Invalid Language Group
rc = IsValidLanguageGroup( 18, LGRPID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "Invalid (18)", &NumErrors );
// Variation 4 - Invalid Language Group
rc = IsValidLanguageGroup( 0x0100, LGRPID_SUPPORTED ); CheckReturnValidW( rc, FALSE, NULL, NULL, "invalid (0x0100)", &NumErrors );
// Variation 5 - invalid flag
rc = IsValidLanguageGroup( 1, 0x10000000 ); CheckReturnValidW( rc, FALSE, NULL, NULL, "invalid flag", &NumErrors );
//
// Valid values for language groups.
//
// Variation 1 - LGRPID 1 supported
rc = IsValidLanguageGroup( 1, LGRPID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 1", &NumErrors );
// Variation 2 - LGRPID 1 installed
rc = IsValidLanguageGroup( 1, LGRPID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x0409", &NumErrors );
// Variation 3 - LGRPID 0x1 supported
rc = IsValidLanguageGroup( 0x1, LGRPID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 0x1", &NumErrors );
// Variation 4 - LGRPID 0x1 installed
rc = IsValidLanguageGroup( 0x1, LGRPID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x1", &NumErrors );
// Variation 5 - LGRPID 0x4 supported
rc = IsValidLanguageGroup( 0x4, LGRPID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported 0x4", &NumErrors );
// Variation 6 - LGRPID 0x4 installed
rc = IsValidLanguageGroup( 0x4, LGRPID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed 0x4", &NumErrors );
// Variation 7 - LGRPID 0xe supported
rc = IsValidLanguageGroup( 0xe, LGRPID_SUPPORTED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "supported (0xe)", &NumErrors );
// Variation 8 - LGRPID 0xe installed
rc = IsValidLanguageGroup( 0xe, LGRPID_INSTALLED ); CheckReturnValidW( rc, TRUE, NULL, NULL, "installed (0xe)", &NumErrors );
//
// Return total number of errors found.
//
return (NumErrors); }
////////////////////////////////////////////////////////////////////////////
//
// TestUtilityAPIs
//
// Test routine for Utility APIs.
//
// 06-14-91 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int TestUtilityAPIs() { int ErrCount = 0; // error count
//
// Print out what's being done.
//
printf("\n\nTESTING GetACP, GetOEMCP,\n"); printf(" GetSystemDefaultUILanguage, GetUserDefaultUILanguage,\n"); printf(" GetSystemDefaultLangID, GetUserDefaultLangID,\n"); printf(" GetSystemDefaultLCID, GetUserDefaultLCID,\n"); printf(" GetThreadLocale, SetThreadLocale...\n\n");
//
// Test normal cases.
//
ErrCount += GUAPI_NormalCase();
//
// Print out result.
//
printf("\nGetUtilityAPIs: ERRORS = %d\n", ErrCount);
//
// Return total number of errors found.
//
return (ErrCount); }
DWORD GetRegistryString(HKEY hRootKey, LPWSTR szKeyPath, LPWSTR szKeyName, LPWSTR pBuffer, DWORD dwBufferLen) { HKEY hKey; DWORD cbData; DWORD result = 0; DWORD dwType; if (RegOpenKeyW(hRootKey, szKeyPath, &hKey) == ERROR_SUCCESS) { if (pBuffer == NULL) { if (RegQueryValueExW(hKey, szKeyName, NULL, NULL, NULL, &cbData) == ERROR_SUCCESS) { result = cbData; } } else { cbData = dwBufferLen; if (RegQueryValueExW(hKey, szKeyName, NULL, &dwType, (LPBYTE)pBuffer, &cbData) == ERROR_SUCCESS) { if (dwType == REG_SZ) { result = cbData; } } } } RegCloseKey(hRootKey); return (result); }
////////////////////////////////////////////////////////////////////////////
//
// PrivateGetUserDefaultUILanguage
//
// This routine reads HKCU\Control Panel\Desktop\MultiUILanguageId
// If that key is not available, return GetSystemDefaultUILanguage();
//
// 06-14-91 JulieB Created.
////////////////////////////////////////////////////////////////////////////
LANGID PrivateGetUserDefaultUILanguage() { WCHAR szValue[256]; BOOL bSuccess = FALSE; LANGID result; if (GetRegistryString(HKEY_CURRENT_USER, L"Control Panel\\Desktop", L"MultiUILanguageId", szValue, sizeof(szValue)*sizeof(WCHAR)) > 0) { if (swscanf(szValue, L"%x", &result) > 0) { return (result); } } if (Verbose) { printf("....Failed to read HKCU\\Control Panel\\Desktop\\MultiUILanguageId\n"); } return (GetSystemDefaultUILanguage()); }
////////////////////////////////////////////////////////////////////////////
//
// GUAPI_NormalCase
//
// This routine tests the normal cases of the API routine.
//
// 06-14-91 JulieB Created.
////////////////////////////////////////////////////////////////////////////
int GUAPI_NormalCase() { int NumErrors = 0; // error count - to be returned
UINT rcInt; // return code
LANGID rcLang; // return code
LCID rcLoc; // return code
LCID rcLoc2; // return code
BOOL rc; // return code
LANGID expectedUILanguage;
#ifdef PERF
DbgBreakPoint();
#endif
// Variation 1 - GetACP
rcInt = GetACP(); CheckReturnValidW( rcInt, 1252, NULL, NULL, "GetACP", &NumErrors );
// Variation 2 - GetOEMCP
rcInt = GetOEMCP(); CheckReturnValidW( rcInt, 437, NULL, NULL, "GetOEMCP", &NumErrors );
// Variation 3 - GetSystemDefaultUILanguage
rcLang = GetSystemDefaultUILanguage(); CheckReturnValidW( rcLang, 0x0409, NULL, NULL, "GetSystemDefaultUILanguage", &NumErrors );
// Variation 4 - GetUserDefaultUILanguage
rcLang = GetUserDefaultUILanguage(); expectedUILanguage = PrivateGetUserDefaultUILanguage(); CheckReturnValidW( rcLang, expectedUILanguage, NULL, NULL, "GetUserDefaultUILanguage", &NumErrors );
// Variation 5 - GetSystemDefaultLangID
rcLang = GetSystemDefaultLangID(); CheckReturnValidW( rcLang, 0x0409, NULL, NULL, "GetSystemDefaultLangID", &NumErrors );
// Variation 6 - GetUserDefaultLangID
rcLang = GetUserDefaultLangID(); CheckReturnValidW( rcLang, 0x0409, NULL, NULL, "GetUserDefaultLangID", &NumErrors );
// Variation 7 - GetSystemDefaultLCID
rcLoc = GetSystemDefaultLCID(); CheckReturnValidW( rcLoc, 0x00000409, NULL, NULL, "GetSystemDefaultLCID", &NumErrors );
// Variation 8 - GetUserDefaultLCID
rcLoc = GetUserDefaultLCID(); CheckReturnValidW( rcLoc, 0x00000409, NULL, NULL, "GetUserDefaultLCID", &NumErrors );
// Variation 9 - GetThreadLocale and SetThreadLocale
rcLoc = GetThreadLocale(); CheckReturnValidW( rcLoc, 0x00000409, NULL, NULL, "GetThreadLocale", &NumErrors );
rc = SetThreadLocale( 0x0000040a ); CheckReturnValidW( rc, TRUE, NULL, NULL, "SetThreadLocale 040a", &NumErrors );
rc = SetThreadLocale( 0x0000080b ); CheckReturnValidW( rc, FALSE, NULL, NULL, "SetThreadLocale invalid", &NumErrors );
rc = SetThreadLocale( 0x0100040a ); CheckReturnValidW( rc, FALSE, NULL, NULL, "SetThreadLocale invalid 2", &NumErrors );
rcLoc2 = GetThreadLocale(); CheckReturnValidW( rcLoc2, 0x0000040a, NULL, NULL, "GetThreadLocale 040a", &NumErrors );
rc = SetThreadLocale( rcLoc ); CheckReturnValidW( rc, TRUE, NULL, NULL, "SetThreadLocale back to original", &NumErrors );
//
// Return total number of errors found.
//
return (NumErrors); }
|