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