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