Something went wrong. Try again.
Reactos
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091/* * PROJECT: ReactOS api tests * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: Test for GetLocaleInfo(Ex) * PROGRAMMER: Timo Kreuzer <timo.kreuzer@reactos.org> */
#include "precomp.h"
typedefintWINAPIFN_GetLocaleInfoEx( _In_opt_ LPCWSTR lpLocaleName, _In_ LCTYPE LCType, _Out_opt_ LPWSTR lpLCData, _In_ int cchData);
FN_GetLocaleInfoEx* pGetLocaleInfoEx = NULL;
static void Test_GetLocaleInfoEx(void){ HMODULE hmodKernel32; int Ret; ULONG CodePage;
hmodKernel32 = GetModuleHandleW(L"kernel32.dll"); pGetLocaleInfoEx = (FN_GetLocaleInfoEx*)GetProcAddress(hmodKernel32, "GetLocaleInfoEx"); if (pGetLocaleInfoEx == NULL) { hmodKernel32 = LoadLibraryW(L"kernel32_vista.dll"); pGetLocaleInfoEx = (FN_GetLocaleInfoEx*)GetProcAddress(hmodKernel32, "GetLocaleInfoEx"); if (pGetLocaleInfoEx == NULL) { skip("GetLocaleInfoEx not found in kernel32.dll\n"); return; } }
// Test normal usage Ret = pGetLocaleInfoEx(L"en-US", LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR*)&CodePage, sizeof(DWORD) / sizeof(WCHAR)); ok_eq_int(Ret, 2); ok_eq_long(CodePage, 1252ul);
// Test with neutral locale Ret = pGetLocaleInfoEx(L"en", LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, NULL, 0); ok_eq_int(Ret, 2); ok_eq_long(CodePage, 1252ul);
// Test with NULL locale name CodePage = 0xdeadbeef; Ret = pGetLocaleInfoEx(NULL, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&CodePage, sizeof(DWORD) /sizeof(WCHAR)); ok_eq_int(Ret, 2); ok_eq_long(CodePage, 1252ul);
// Test with empty locale name CodePage = 0xdeadbeef; Ret = pGetLocaleInfoEx(L"", LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&CodePage, sizeof(DWORD) /sizeof(WCHAR)); ok_eq_int(Ret, 2); ok_eq_long(CodePage, 1252ul);
// Test with invalid locale name CodePage = 0xdeadbeef; Ret = pGetLocaleInfoEx(L"invalid", LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&CodePage, sizeof(DWORD) /sizeof(WCHAR)); ok_eq_int(Ret, 0); ok_eq_long(GetLastError(), (ULONG)ERROR_INVALID_PARAMETER); ok(CodePage == 0xdeadbeef, "CodePage should not have been modified: %lx\n", CodePage);
}
#undef GetLocaleInfoSTART_TEST(GetLocaleInfo){ Test_GetLocaleInfoEx();}