164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others.
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html
3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*******************************************************************************
583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius* Copyright (C) 2007-2011, International Business Machines Corporation and    *
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* others. All Rights Reserved.                                                *
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*******************************************************************************
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef _TIMEZONERULETEST_
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define _TIMEZONERULETEST_
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "caltztst.h"
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Tests for TimeZoneRule, RuleBasedTimeZone and VTimeZone
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass TimeZoneRuleTest : public CalendarTimeZoneTest {
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // IntlTest override
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par);
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSimpleRuleBasedTimeZone(void);
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestHistoricalRuleBasedTimeZone(void);
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestOlsonTransition(void);
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestRBTZTransition(void);
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestHasEquivalentTransitions(void);
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneRoundTrip(void);
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneRoundTripPartial(void);
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneSimpleWrite(void);
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneHeaderProps(void);
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestGetSimpleRules(void);
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestTimeZoneRuleCoverage(void);
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSimpleTimeZoneCoverage(void);
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneCoverage(void);
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestVTimeZoneParse(void);
39c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    void TestT6216(void);
40b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void TestT6669(void);
4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    void TestVTimeZoneWrapper(void);
4283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestT8943(void);
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate:
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void verifyTransitions(BasicTimeZone& icutz, UDate start, UDate end);
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void compareTransitionsAscending(BasicTimeZone& z1, BasicTimeZone& z2,
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UDate start, UDate end, UBool inclusive);
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void compareTransitionsDescending(BasicTimeZone& z1, BasicTimeZone& z2,
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UDate start, UDate end, UBool inclusive);
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDate getUTCMillis(int32_t year, int32_t month, int32_t dom,
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        int32_t hour=0, int32_t min=0, int32_t sec=0, int32_t msec=0);
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // _TIMEZONERULETEST_
57