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 **/
20class TimeZoneTest: public CalendarTimeZoneTest {
21    // IntlTest override
22    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
23public: // package
24    static const int32_t millisPerHour;
25
26public:
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
106private:
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