| // © 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| /******************************************************************** |
| * COPYRIGHT: |
| * Copyright (c) 1997-2015, International Business Machines Corporation and |
| * others. All Rights Reserved. |
| ********************************************************************/ |
| |
| #include "intltest.h" |
| #include "unicode/locid.h" |
| |
| /** |
| * Tests for the Locale class |
| **/ |
| class LocaleTest: public IntlTest { |
| public: |
| LocaleTest(); |
| virtual ~LocaleTest(); |
| |
| void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override; |
| |
| /** |
| * Test methods to set and get data fields |
| **/ |
| void TestBasicGetters(); |
| /** |
| * Test methods to set and get data fields |
| **/ |
| void TestParallelAPIValues(); |
| /** |
| * Use Locale to access Resource file data and compare against expected values |
| **/ |
| void TestSimpleResourceInfo(); |
| /** |
| * Use Locale to access Resource file display names and compare against expected values |
| **/ |
| void TestDisplayNames(); |
| /** |
| * Test methods for basic object behaviour |
| **/ |
| void TestSimpleObjectStuff(); |
| /** |
| * Test methods for POSIX parsing behavior |
| **/ |
| void TestPOSIXParsing(); |
| /** |
| * Test Locale::getAvailableLocales |
| **/ |
| void TestGetAvailableLocales(); |
| /** |
| * Test methods to set and access a custom data directory |
| **/ |
| void TestDataDirectory(); |
| |
| void TestISO3Fallback(); |
| void TestGetLangsAndCountries(); |
| void TestSimpleDisplayNames(); |
| void TestUninstalledISO3Names(); |
| void TestAtypicalLocales(); |
| #if !UCONFIG_NO_FORMATTING |
| void TestThaiCurrencyFormat(); |
| void TestEuroSupport(); |
| #endif |
| void TestToString(); |
| #if !UCONFIG_NO_FORMATTING |
| void Test4139940(); |
| void Test4143951(); |
| #endif |
| void Test4147315(); |
| void Test4147317(); |
| void Test4147552(); |
| |
| void Test20639_DeprecatesISO3Language(); |
| |
| void TestVariantParsing(); |
| |
| /* Test getting keyword enumeration */ |
| void TestKeywordVariants(); |
| void TestCreateUnicodeKeywords(); |
| |
| /* Test getting keyword values */ |
| void TestKeywordVariantParsing(); |
| void TestCreateKeywordSet(); |
| void TestCreateKeywordSetEmpty(); |
| void TestCreateKeywordSetWithPrivateUse(); |
| void TestCreateUnicodeKeywordSet(); |
| void TestCreateUnicodeKeywordSetEmpty(); |
| void TestCreateUnicodeKeywordSetWithPrivateUse(); |
| void TestGetKeywordValueStdString(); |
| void TestGetUnicodeKeywordValueStdString(); |
| |
| /* Test setting keyword values */ |
| void TestSetKeywordValue(); |
| void TestSetKeywordValueStringPiece(); |
| void TestSetUnicodeKeywordValueStringPiece(); |
| |
| /* Test getting the locale base name */ |
| void TestGetBaseName(); |
| |
| #if !UCONFIG_NO_FORMATTING |
| void Test4105828() ; |
| #endif |
| |
| void TestSetIsBogus(); |
| |
| void TestGetLocale(); |
| |
| void TestVariantWithOutCountry(); |
| |
| void TestCanonicalization(); |
| |
| void TestCanonicalize(); |
| |
| #if !UCONFIG_NO_FORMATTING |
| static UDate date(int32_t y, int32_t m, int32_t d, int32_t hr = 0, int32_t min = 0, int32_t sec = 0); |
| #endif |
| |
| void TestCurrencyByDate(); |
| |
| void TestGetVariantWithKeywords(); |
| void TestIsRightToLeft(); |
| void TestBug11421(); |
| void TestBug13277(); |
| void TestBug13554(); |
| void TestBug20410(); |
| void TestBug20900(); |
| void TestLocaleCanonicalizationFromFile(); |
| void TestKnownCanonicalizedListCorrect(); |
| void TestConstructorAcceptsBCP47(); |
| |
| void TestAddLikelySubtags(); |
| void TestMinimizeSubtags(); |
| void TestAddLikelyAndMinimizeSubtags(); |
| |
| void TestForLanguageTag(); |
| void TestForLanguageTagLegacyTagBug21676(); |
| void TestToLanguageTag(); |
| void TestToLanguageTagOmitTrue(); |
| |
| void TestMoveAssign(); |
| void TestMoveCtor(); |
| |
| void TestBug20407iVariantPreferredValue(); |
| |
| void TestBug13417VeryLongLanguageTag(); |
| |
| void TestBug11053UnderlineTimeZone(); |
| |
| void TestUnd(); |
| void TestUndScript(); |
| void TestUndRegion(); |
| void TestUndCAPI(); |
| void TestRangeIterator(); |
| void TestPointerConvertingIterator(); |
| void TestTagConvertingIterator(); |
| void TestCapturingTagConvertingIterator(); |
| void TestSetUnicodeKeywordValueInLongLocale(); |
| void TestSetUnicodeKeywordValueNullInLongLocale(); |
| void TestLeak21419(); |
| void TestNullDereferenceWrite21597(); |
| void TestLongLocaleSetKeywordAssign(); |
| void TestLongLocaleSetKeywordMoveAssign(); |
| void TestSierraLeoneCurrency21997(); |
| |
| private: |
| void _checklocs(const char* label, |
| const char* req, |
| const Locale& validLoc, |
| const Locale& actualLoc, |
| const char* expReqValid="gt", |
| const char* expValidActual="ge"); |
| |
| /** |
| * routine to perform subtests, used by TestDisplayNames |
| **/ |
| void doTestDisplayNames(Locale& inLocale, int32_t compareIndex); |
| /** |
| * additional initialization for datatables storing expected values |
| **/ |
| void setUpDataTable(); |
| |
| UnicodeString** dataTable; |
| |
| enum { |
| ENGLISH = 0, |
| FRENCH = 1, |
| CROATIAN = 2, |
| GREEK = 3, |
| NORWEGIAN = 4, |
| ITALIAN = 5, |
| XX = 6, |
| CHINESE = 7, |
| MAX_LOCALES = 7 |
| }; |
| |
| enum { |
| LANG = 0, |
| SCRIPT, |
| CTRY, |
| VAR, |
| NAME, |
| LANG3, |
| CTRY3, |
| LCID, |
| DLANG_EN, |
| DSCRIPT_EN, |
| DCTRY_EN, |
| DVAR_EN, |
| DNAME_EN, |
| DLANG_FR, |
| DSCRIPT_FR, |
| DCTRY_FR, |
| DVAR_FR, |
| DNAME_FR, |
| DLANG_CA, |
| DSCRIPT_CA, |
| DCTRY_CA, |
| DVAR_CA, |
| DNAME_CA, |
| DLANG_EL, |
| DSCRIPT_EL, |
| DCTRY_EL, |
| DVAR_EL, |
| DNAME_EL, |
| DLANG_NO, |
| DSCRIPT_NO, |
| DCTRY_NO, |
| DVAR_NO, |
| DNAME_NO |
| }; |
| |
| #if !UCONFIG_NO_COLLATION |
| /** |
| * Check on registered collators. |
| * @param expectExtra if non-null, the locale ID of an 'extra' locale that is registered. |
| */ |
| void checkRegisteredCollators(const char *expectExtra = nullptr); |
| #endif |
| }; |