Reactos
at master 90 lines 2.8 kB view raw
1/* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: Test for GetLocaleInfo(Ex) 5 * PROGRAMMER: Timo Kreuzer <timo.kreuzer@reactos.org> 6 */ 7 8#include "precomp.h" 9 10typedef 11int 12WINAPI 13FN_GetLocaleInfoEx( 14 _In_opt_ LPCWSTR lpLocaleName, 15 _In_ LCTYPE LCType, 16 _Out_opt_ LPWSTR lpLCData, 17 _In_ int cchData); 18 19FN_GetLocaleInfoEx* pGetLocaleInfoEx = NULL; 20 21static void Test_GetLocaleInfoEx(void) 22{ 23 HMODULE hmodKernel32; 24 int Ret; 25 ULONG CodePage; 26 27 hmodKernel32 = GetModuleHandleW(L"kernel32.dll"); 28 pGetLocaleInfoEx = (FN_GetLocaleInfoEx*)GetProcAddress(hmodKernel32, "GetLocaleInfoEx"); 29 if (pGetLocaleInfoEx == NULL) 30 { 31 hmodKernel32 = LoadLibraryW(L"kernel32_vista.dll"); 32 pGetLocaleInfoEx = (FN_GetLocaleInfoEx*)GetProcAddress(hmodKernel32, "GetLocaleInfoEx"); 33 if (pGetLocaleInfoEx == NULL) 34 { 35 skip("GetLocaleInfoEx not found in kernel32.dll\n"); 36 return; 37 } 38 } 39 40 // Test normal usage 41 Ret = pGetLocaleInfoEx(L"en-US", 42 LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, 43 (WCHAR*)&CodePage, 44 sizeof(DWORD) / sizeof(WCHAR)); 45 ok_eq_int(Ret, 2); 46 ok_eq_long(CodePage, 1252ul); 47 48 // Test with neutral locale 49 Ret = pGetLocaleInfoEx(L"en", 50 LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, 51 NULL, 52 0); 53 ok_eq_int(Ret, 2); 54 ok_eq_long(CodePage, 1252ul); 55 56 // Test with NULL locale name 57 CodePage = 0xdeadbeef; 58 Ret = pGetLocaleInfoEx(NULL, 59 LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, 60 (WCHAR *)&CodePage, 61 sizeof(DWORD) /sizeof(WCHAR)); 62 ok_eq_int(Ret, 2); 63 ok_eq_long(CodePage, 1252ul); 64 65 // Test with empty locale name 66 CodePage = 0xdeadbeef; 67 Ret = pGetLocaleInfoEx(L"", 68 LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, 69 (WCHAR *)&CodePage, 70 sizeof(DWORD) /sizeof(WCHAR)); 71 ok_eq_int(Ret, 2); 72 ok_eq_long(CodePage, 1252ul); 73 74 // Test with invalid locale name 75 CodePage = 0xdeadbeef; 76 Ret = pGetLocaleInfoEx(L"invalid", 77 LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, 78 (WCHAR *)&CodePage, 79 sizeof(DWORD) /sizeof(WCHAR)); 80 ok_eq_int(Ret, 0); 81 ok_eq_long(GetLastError(), (ULONG)ERROR_INVALID_PARAMETER); 82 ok(CodePage == 0xdeadbeef, "CodePage should not have been modified: %lx\n", CodePage); 83 84} 85 86#undef GetLocaleInfo 87START_TEST(GetLocaleInfo) 88{ 89 Test_GetLocaleInfoEx(); 90}