• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 ) override;
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     void TestGetGMT();
103 
104     void TestGetWindowsID(void);
105     void TestGetIDForWindowsID(void);
106     void TestCasablancaNameAndOffset22041(void);
107     void TestRawOffsetAndOffsetConsistency22041(void);
108 
109     static const UDate INTERVAL;
110 
111 private:
112     // internal functions
113     static UnicodeString& formatOffset(int32_t offset, UnicodeString& rv);
114     static UnicodeString& formatTZID(int32_t offset, UnicodeString& rv);
115 
116     // Some test case data is current date/tzdata version sensitive and producing errors
117     // when year/rule are changed.
118     static const int32_t REFERENCE_YEAR;
119     static const char *REFERENCE_DATA_VERSION;
120 
121     void checkContainsAll(StringEnumeration *s1, const char *name1,
122         StringEnumeration *s2, const char *name2);
123 };
124 
125 #endif /* #if !UCONFIG_NO_FORMATTING */
126 
127 #endif // __TimeZoneTest__
128