#include "../test.h"
#define TEST(name) TEST_CASE("time-misc: " name, "[time-misc]")
TEST("some border cases") {
auto utc_tz = tzget("UTC");
SECTION("28-Dec-2018") {
datetime date;
REQUIRE(anytime(1545987968, &date, utc_tz));
REQUIRE(date.sec == 8);
REQUIRE(date.min == 6);
REQUIRE(date.hour == 9);
REQUIRE(date.mday == 28);
REQUIRE(date.mon == 11);
REQUIRE(date.yday == 361);
REQUIRE(date.year == 2018);
}
SECTION("negative boundary") {
datetime date;
REQUIRE(anytime(EPOCH_MIN - 1, &date, utc_tz) == false);
REQUIRE(anytime(EPOCH_MIN, &date, utc_tz) == true);
REQUIRE(date.sec == 0);
REQUIRE(date.min == 0);
REQUIRE(date.hour == 0);
REQUIRE(date.mday == 2);
REQUIRE(date.mon == 0);
REQUIRE(date.year == -2147483648);
}
SECTION("positive boundary") {
datetime date;
REQUIRE(anytime(EPOCH_MAX + 1, &date, utc_tz) == false);
REQUIRE(anytime(EPOCH_MAX, &date, utc_tz) == true);
REQUIRE(date.sec == 59);
REQUIRE(date.min == 59);
REQUIRE(date.hour == 23);
REQUIRE(date.mday == 30);
REQUIRE(date.mon == 11);
REQUIRE(date.year == 2147483647);
}
}
TEST("tzget_abbr") {
SECTION("MSK") {
auto tz = tzget_abbr("MSK");
CHECK(tz->name == "<+03:00>-03:00");
CHECK(tz->future.outer.gmt_offset == 3 * 3600);
}
SECTION("EEST") {
auto tz = tzget_abbr("EEST");
CHECK(tz->name == "<+02:00>-02:00");
CHECK(tz->future.outer.gmt_offset == 2 * 3600);
}
SECTION("non-existing tz") {
auto tz = tzget_abbr("zzzzz");
CHECK(tz->name == "GMT0");
CHECK(tz->future.outer.offset >= 0);
}
}