#include "common.hh" #include "tz_str.hh" #include namespace { constexpr const time_t kMin = 60; constexpr const time_t kHour = 60 * kMin; constexpr const time_t kDay = 24 * kHour; } // namespace TEST(tz_str, get_local_time_no_dst) { auto ret = tz::get_local_time("HST10", 0); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(0 - 10 * kHour, ret.value()); } ret = tz::get_local_time("HST10", kDay * 180); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(kDay * 180 - 10 * kHour, ret.value()); } } TEST(tz_str, get_local_time_quote) { auto ret = tz::get_local_time("10", 0); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(0 - 10 * kHour, ret.value()); } } TEST(tz_str, get_local_time_dst) { auto ret = tz::get_local_time("IST-1GMT0,M10.5.0,M3.5.0/1", 0); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(0 * kHour, ret.value()); } ret = tz::get_local_time("IST-1GMT0,M10.5.0,M3.5.0/1", kDay * 180); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(kDay * 180 + 1 * kHour, ret.value()); } ret = tz::get_local_time("GMT0IST,M3.5.0/1,M10.5.0", 0); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(0 * kHour, ret.value()); } ret = tz::get_local_time("GMT0IST,M3.5.0/1,M10.5.0", kDay * 180); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(kDay * 180 + 1 * kHour, ret.value()); } ret = tz::get_local_time("NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0", 0); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(13 * kHour, ret.value()); } ret = tz::get_local_time("NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0", kDay * 180); EXPECT_TRUE(ret.has_value()); if (ret.has_value()) { EXPECT_EQ(kDay * 180 + 12 * kHour, ret.value()); } } TEST(tz_str, get_local_time_bad) { auto ret = tz::get_local_time("1", 0); EXPECT_FALSE(ret.has_value()); ret = tz::get_local_time("HS10", 0); EXPECT_FALSE(ret.has_value()); ret = tz::get_local_time("HST", 0); EXPECT_FALSE(ret.has_value()); ret = tz::get_local_time("HST-300", 0); EXPECT_FALSE(ret.has_value()); ret = tz::get_local_time("HST-10:300", 0); EXPECT_FALSE(ret.has_value()); ret = tz::get_local_time("HST-10:00:300", 0); EXPECT_FALSE(ret.has_value()); }