1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/********************************************************************
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT:
350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (c) 1997-2010, International Business Machines Corporation and
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "intltest.h"
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/locid.h"
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Tests for the Locale class
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass LocaleTest: public IntlTest {
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    LocaleTest();
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~LocaleTest();
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods to set and get data fields
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestBasicGetters(void);
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods to set and get data fields
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestParallelAPIValues(void);
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Use Locale to access Resource file data and compare against expected values
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSimpleResourceInfo(void);
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Use Locale to access Resource file display names and compare against expected values
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestDisplayNames(void);
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods for basic object behaviour
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSimpleObjectStuff(void);
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods for POSIX parsing behavior
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestPOSIXParsing(void);
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test Locale::getAvailableLocales
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestGetAvailableLocales(void);
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods to set and access a custom data directory
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestDataDirectory(void);
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestISO3Fallback(void);
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestGetLangsAndCountries(void);
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSimpleDisplayNames(void);
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestUninstalledISO3Names(void);
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestAtypicalLocales(void);
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestThaiCurrencyFormat(void);
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestEuroSupport(void);
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestToString(void);
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4139940(void);
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4143951(void);
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4147315(void);
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4147317(void);
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4147552(void);
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVariantParsing(void);
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   /* Test getting keyword enumeratin */
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   void TestKeywordVariants(void);
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   /* Test getting keyword values */
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   void TestKeywordVariantParsing(void);
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
7950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho   /* Test setting keyword values */
8050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho   void TestSetKeywordValue(void);
8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   /* Test getting the locale base name */
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   void TestGetBaseName(void);
848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    void TestTrailingNull(void);  /* Google Patch */
858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void Test4105828(void) ;
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSetIsBogus(void);
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestGetLocale(void);
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVariantWithOutCountry(void);
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCanonicalization(void);
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
99b13da9df870a61b11249bf741347908dbea0edd8Jean-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);
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
102c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    void TestCurrencyByDate(void);
103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
10450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    void TestGetVariantWithKeywords(void);
10550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate:
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void _checklocs(const char* label,
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const char* req,
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const Locale& validLoc,
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const Locale& actualLoc,
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const char* expReqValid="gt",
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const char* expValidActual="ge");
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * routine to perform subtests, used by TestDisplayNames
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void doTestDisplayNames(Locale& inLocale, int32_t compareIndex);
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * additional intialization for datatables storing expected values
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void setUpDataTable(void);
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UnicodeString** dataTable;
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    enum {
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        ENGLISH = 0,
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        FRENCH = 1,
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        CROATIAN = 2,
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        GREEK = 3,
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        NORWEGIAN = 4,
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        ITALIAN = 5,
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        XX = 6,
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        CHINESE = 7,
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        MAX_LOCALES = 7
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    enum {
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        LANG = 0,
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        SCRIPT,
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        CTRY,
141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        VAR,
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        NAME,
143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        LANG3,
144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        CTRY3,
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        LCID,
146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DLANG_EN,
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DSCRIPT_EN,
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DCTRY_EN,
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DVAR_EN,
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DNAME_EN,
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DLANG_FR,
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DSCRIPT_FR,
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DCTRY_FR,
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DVAR_FR,
155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DNAME_FR,
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DLANG_CA,
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DSCRIPT_CA,
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DCTRY_CA,
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DVAR_CA,
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DNAME_CA,
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DLANG_EL,
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DSCRIPT_EL,
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DCTRY_EL,
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DVAR_EL,
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DNAME_EL,
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DLANG_NO,
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DSCRIPT_NO,
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DCTRY_NO,
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DVAR_NO,
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        DNAME_NO
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
177