Home | History | Annotate | Download | only in intltest
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 
      4 /********************************************************************
      5  * Copyright (c) 1997-2014, International Business Machines
      6  * Corporation and others. All Rights Reserved.
      7  ********************************************************************/
      8 
      9 #ifndef __TimeZoneTest__
     10 #define __TimeZoneTest__
     11 
     12 #include "unicode/utypes.h"
     13 
     14 #if !UCONFIG_NO_FORMATTING
     15 
     16 #include "unicode/simpletz.h"
     17 #include "caltztst.h"
     18 
     19 /**
     20  * Various tests for TimeZone
     21  **/
     22 class TimeZoneTest: public CalendarTimeZoneTest {
     23     // IntlTest override
     24     void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
     25 public: // package
     26     static const int32_t millisPerHour;
     27 
     28 public:
     29     /**
     30      * Test the offset of the PRT timezone.
     31      */
     32     virtual void TestPRTOffset(void);
     33     /**
     34      * Regress a specific bug with a sequence of API calls.
     35      */
     36     virtual void TestVariousAPI518(void);
     37     /**
     38      * Test the call which retrieves the available IDs.
     39      */
     40     virtual void TestGetAvailableIDs913(void);
     41 
     42     virtual void TestGetAvailableIDsNew(void);
     43 
     44     /**
     45      * Generic API testing for API coverage.
     46      */
     47     virtual void TestGenericAPI(void);
     48     /**
     49      * Test the setStartRule/setEndRule API calls.
     50      */
     51     virtual void TestRuleAPI(void);
     52 
     53     void findTransition(const TimeZone& tz,
     54                         UDate min, UDate max);
     55 
     56    /**
     57      * subtest used by TestRuleAPI
     58      **/
     59     void testUsingBinarySearch(const TimeZone& tz,
     60                                UDate min, UDate max,
     61                                UDate expectedBoundary);
     62 
     63 
     64     /**
     65      *  Test short zone IDs for compliance
     66      */
     67     virtual void TestShortZoneIDs(void);
     68 
     69 
     70     /**
     71      *  Test parsing custom zones
     72      */
     73     virtual void TestCustomParse(void);
     74 
     75     /**
     76      *  Test new getDisplayName() API
     77      */
     78     virtual void TestDisplayName(void);
     79 
     80     void TestDSTSavings(void);
     81     void TestAlternateRules(void);
     82 
     83     void TestCountries(void);
     84 
     85     void TestHistorical(void);
     86 
     87     void TestEquivalentIDs(void);
     88 
     89     void TestAliasedNames(void);
     90 
     91     void TestFractionalDST(void);
     92 
     93     void TestFebruary(void);
     94 
     95     void TestCanonicalIDAPI();
     96     void TestCanonicalID(void);
     97 
     98     virtual void TestDisplayNamesMeta();
     99 
    100     void TestGetRegion(void);
    101     void TestGetUnknown();
    102 
    103     void TestGetWindowsID(void);
    104     void TestGetIDForWindowsID(void);
    105 
    106     static const UDate INTERVAL;
    107 
    108 private:
    109     // internal functions
    110     static UnicodeString& formatOffset(int32_t offset, UnicodeString& rv);
    111     static UnicodeString& formatTZID(int32_t offset, UnicodeString& rv);
    112 
    113     // Some test case data is current date/tzdata version sensitive and producing errors
    114     // when year/rule are changed.
    115     static const int32_t REFERENCE_YEAR;
    116     static const char *REFERENCE_DATA_VERSION;
    117 
    118     void checkContainsAll(StringEnumeration *s1, const char *name1,
    119         StringEnumeration *s2, const char *name2);
    120 };
    121 
    122 #endif /* #if !UCONFIG_NO_FORMATTING */
    123 
    124 #endif // __TimeZoneTest__
    125