#include "test.h"
#define TEST(name) TEST_CASE("clone: " name, "[clone]")
TEST("clone()") {
Date date("2014-01-01 00:00:00");
CHECK(date.timezone() == tzlocal());
auto date2 = date;
CHECK(date2 == date);
CHECK(date2.timezone() == tzlocal());
date2 = date.clone(-1, -1, -1, -1, -1, -1, -1, -1, tzget("Australia/Melbourne"));
CHECK(date2.epoch() != date.epoch());
CHECK(date2.to_string() == date.to_string());
CHECK(!date2.timezone()->is_local);
CHECK(date2.timezone()->name == "Australia/Melbourne");
auto date3 = date2.clone(-1, -1, -1, 1, 2, 3);
CHECK(date3.to_string() == "2014-01-01 01:02:03");
CHECK(date3.timezone() == date2.timezone());
date3 = date3.clone(2013, 2, 10, -1, -1, -1, -1, -1, tzget(""));
CHECK(date3.to_string() == "2013-02-10 01:02:03");
CHECK(date3.timezone() != date2.timezone());
CHECK(date3.timezone() == tzlocal());
date2 = date.clone(1700, -1, -1, -1, -1, -1, -1, -1, tzget("Europe/Kiev"));
CHECK(date2.to_string() == "1700-01-01 00:00:00");
CHECK(!date2.timezone()->is_local);
CHECK(date2.timezone()->name == "Europe/Kiev");
}
TEST("newfrom") {
Date date("2014-01-01 00:00:00", tzget("America/New_York"));
auto date2 = Date(date);
CHECK(date2.epoch() == date.epoch());
CHECK(date2.to_string() == date.to_string());
CHECK(date2.timezone() == date.timezone());
}