17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/******************************************************************** 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * COPYRIGHT: 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * Copyright (c) 1997-2010, International Business Machines Corporation and 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * others. All Rights Reserved. 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ********************************************************************/ 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "intltest.h" 80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "unicode/locid.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/** 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Tests for the Locale class 12a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch **/ 136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class LocaleTest: public IntlTest { 146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)public: 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) LocaleTest(); 166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual ~LocaleTest(); 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) * Test methods to set and get data fields 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) **/ 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void TestBasicGetters(void); 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Test methods to set and get data fields 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestParallelAPIValues(void); 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Use Locale to access Resource file data and compare against expected values 306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestSimpleResourceInfo(void); 326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Use Locale to access Resource file display names and compare against expected values 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestDisplayNames(void); 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Test methods for basic object behaviour 386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestSimpleObjectStuff(void); 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Test methods for POSIX parsing behavior 426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestPOSIXParsing(void); 446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 456d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Test Locale::getAvailableLocales 466d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 476d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestGetAvailableLocales(void); 486d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) /** 496d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * Test methods to set and access a custom data directory 506d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 516d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestDataDirectory(void); 526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 536d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestISO3Fallback(void); 546d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestGetLangsAndCountries(void); 556d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestSimpleDisplayNames(void); 566d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestUninstalledISO3Names(void); 576d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestAtypicalLocales(void); 586d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#if !UCONFIG_NO_FORMATTING 596d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestThaiCurrencyFormat(void); 606d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestEuroSupport(void); 616d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#endif 626d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void TestToString(void); 637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if !UCONFIG_NO_FORMATTING 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void Test4139940(void); 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void Test4143951(void); 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void Test4147315(void); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Test4147317(void); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Test4147552(void); 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void TestVariantParsing(void); 727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) /* Test getting keyword enumeratin */ 747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void TestKeywordVariants(void); 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 767d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) /* Test getting keyword values */ 777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void TestKeywordVariantParsing(void); 787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch /* Test setting keyword values */ 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void TestSetKeywordValue(void); 81ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 82ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch /* Test getting the locale base name */ 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void TestGetBaseName(void); 847d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if !UCONFIG_NO_FORMATTING 867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void Test4105828(void) ; 877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif 887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 897d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void TestSetIsBogus(void); 907d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 917d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void TestGetLocale(void); 927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void TestVariantWithOutCountry(void); 947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void TestCanonicalization(void); 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if !UCONFIG_NO_FORMATTING 987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) static UDate date(int32_t y, int32_t m, int32_t d, int32_t hr = 0, int32_t min = 0, int32_t sec = 0); 997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void TestCurrencyByDate(void); 102effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 103effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void TestGetVariantWithKeywords(void); 1047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)private: 1067d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void _checklocs(const char* label, 1077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* req, 1087d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const Locale& validLoc, 1097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const Locale& actualLoc, 1107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* expReqValid="gt", 1117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* expValidActual="ge"); 1127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) /** 1147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * routine to perform subtests, used by TestDisplayNames 1157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) **/ 1167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void doTestDisplayNames(Locale& inLocale, int32_t compareIndex); 1177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) /** 1186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) * additional intialization for datatables storing expected values 1196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) **/ 1206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void setUpDataTable(void); 1216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 1226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) UnicodeString** dataTable; 1236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 1246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) enum { 1256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ENGLISH = 0, 1266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) FRENCH = 1, 1276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) CROATIAN = 2, 1286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) GREEK = 3, 1296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) NORWEGIAN = 4, 1306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ITALIAN = 5, 1316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) XX = 6, 1326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) CHINESE = 7, 1336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) MAX_LOCALES = 7 1346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) }; 1356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 1366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) enum { 1376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) LANG = 0, 1386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) SCRIPT, 1396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) CTRY, 1406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) VAR, 1416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) NAME, 1426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) LANG3, 1436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) CTRY3, 1447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) LCID, 1457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DLANG_EN, 1466d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) DSCRIPT_EN, 1477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DCTRY_EN, 1487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DVAR_EN, 1497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DNAME_EN, 150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DLANG_FR, 1517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DSCRIPT_FR, 1527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DCTRY_FR, 1533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DVAR_FR, 1547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DNAME_FR, 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DLANG_CA, 1568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DSCRIPT_CA, 1578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DCTRY_CA, 1588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DVAR_CA, 1598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DNAME_CA, 1608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DLANG_EL, 1610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) DSCRIPT_EL, 162010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DCTRY_EL, 163010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DVAR_EL, 164010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DNAME_EL, 165010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DLANG_NO, 1668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DSCRIPT_NO, 1677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DCTRY_NO, 1687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DVAR_NO, 1697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DNAME_NO 1707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) }; 1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}; 1727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 174ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 175ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch