diff --git a/test/Time.cpp b/test/Time.cpp new file mode 100644 index 0000000..2d1ad8f --- /dev/null +++ b/test/Time.cpp @@ -0,0 +1,41 @@ +#include "bc/Time.hpp" +#include "bc/Process.hpp" +#include "test/Test.hpp" + +TEST_CASE("Blizzard::Time::FromUnixTime", "[time]") { + SECTION("convert zero Blizzard time from UNIX timestamp of Sat Jan 01 2000 00:00:00 GMT") { + auto stamp = Blizzard::Time::FromUnixTime(946684800); + REQUIRE(stamp == 0); + } +} + +TEST_CASE("Blizzard::Time::ToUnixTime", "[time]") { + SECTION("convert zero Blizzard timestamp to Unix timestamp of Sat Jan 01 2000 00:00:00 GMT+0000") { + auto stamp = Blizzard::Time::ToUnixTime(0); + REQUIRE(stamp == 946684800); + } +} + +TEST_CASE("Blizzard::Time::GetTimestamp", "[time]") { + SECTION("Get timestamp") { + auto now = Blizzard::Time::GetTimestamp(); + REQUIRE(now > 0); + } + + SECTION("Timestamp increases after 200 ms") { + auto t1 = Blizzard::Time::GetTimestamp(); + Blizzard::Process::Sleep(200); + auto t2 = Blizzard::Time::GetTimestamp(); + auto delta = t2 - t1; + REQUIRE(delta > 0); + REQUIRE(delta >= 180000000LL); + REQUIRE(delta <= 220000000LL); + } +} + +TEST_CASE("Blizzard::Time::Nanoseconds", "[time]") { + SECTION("Read wall clock") { + auto wctime = Blizzard::Time::Nanoseconds(); + REQUIRE(wctime > 0); + } +}