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