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