164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others. 264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT: 51b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * Copyright (c) 1997-2015, International Business Machines Corporation and 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved. 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "intltest.h" 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/locid.h" 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Tests for the Locale class 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass LocaleTest: public IntlTest { 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru LocaleTest(); 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~LocaleTest(); 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test methods to set and get data fields 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestBasicGetters(void); 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test methods to set and get data fields 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestParallelAPIValues(void); 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Use Locale to access Resource file data and compare against expected values 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSimpleResourceInfo(void); 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Use Locale to access Resource file display names and compare against expected values 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestDisplayNames(void); 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test methods for basic object behaviour 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSimpleObjectStuff(void); 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test methods for POSIX parsing behavior 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestPOSIXParsing(void); 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test Locale::getAvailableLocales 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetAvailableLocales(void); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test methods to set and access a custom data directory 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestDataDirectory(void); 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestISO3Fallback(void); 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetLangsAndCountries(void); 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSimpleDisplayNames(void); 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestUninstalledISO3Names(void); 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestAtypicalLocales(void); 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestThaiCurrencyFormat(void); 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestEuroSupport(void); 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestToString(void); 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4139940(void); 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4143951(void); 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4147315(void); 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4147317(void); 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4147552(void); 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestVariantParsing(void); 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Test getting keyword enumeratin */ 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestKeywordVariants(void); 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Test getting keyword values */ 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestKeywordVariantParsing(void); 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /* Test setting keyword values */ 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestSetKeywordValue(void); 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Test getting the locale base name */ 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetBaseName(void); 86ab0b4d318bdc81ffd6d51e88088d71910a405980Fredrik Roubert 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void Test4105828(void) ; 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSetIsBogus(void); 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetLocale(void); 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestVariantWithOutCountry(void); 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestCanonicalization(void); 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UDate date(int32_t y, int32_t m, int32_t d, int32_t hr = 0, int32_t min = 0, int32_t sec = 0); 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru void TestCurrencyByDate(void); 104c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestGetVariantWithKeywords(void); 106f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius void TestIsRightToLeft(); 1071b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert void TestBug11421(); 10850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate: 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void _checklocs(const char* label, 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* req, 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& validLoc, 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& actualLoc, 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expReqValid="gt", 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expValidActual="ge"); 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * routine to perform subtests, used by TestDisplayNames 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void doTestDisplayNames(Locale& inLocale, int32_t compareIndex); 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * additional intialization for datatables storing expected values 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void setUpDataTable(void); 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString** dataTable; 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum { 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ENGLISH = 0, 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FRENCH = 1, 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CROATIAN = 2, 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru GREEK = 3, 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NORWEGIAN = 4, 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ITALIAN = 5, 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru XX = 6, 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CHINESE = 7, 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru MAX_LOCALES = 7 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum { 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru LANG = 0, 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SCRIPT, 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CTRY, 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru VAR, 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NAME, 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru LANG3, 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CTRY3, 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru LCID, 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DLANG_EN, 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DSCRIPT_EN, 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DCTRY_EN, 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DVAR_EN, 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DNAME_EN, 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DLANG_FR, 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DSCRIPT_FR, 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DCTRY_FR, 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DVAR_FR, 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DNAME_FR, 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DLANG_CA, 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DSCRIPT_CA, 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DCTRY_CA, 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DVAR_CA, 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DNAME_CA, 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DLANG_EL, 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DSCRIPT_EL, 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DCTRY_EL, 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DVAR_EL, 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DNAME_EL, 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DLANG_NO, 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DSCRIPT_NO, 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DCTRY_NO, 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DVAR_NO, 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DNAME_NO 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1751b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert 1761b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert#if !UCONFIG_NO_COLLATION 1771b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert /** 1781b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * Check on registered collators. 1791b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @param expectExtra if non-null, the locale ID of an 'extra' locale that is registered. 1801b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert */ 1811b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert void checkRegisteredCollators(const char *expectExtra = NULL); 1821b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert#endif 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 184