#include "../../src/ErrorSimulator.hpp" #include "../Tests.hpp" #include "core/Clock.hpp" #include "core/Test.hpp" using Core::Clock; static void testUpdate() { Clock c; TEST_TRUE(c.update() == 0); TEST_TRUE(c.update() >= 0); TEST_TRUE(c.update() >= 0); TEST_TRUE(c.update() >= 0); } static void testUpdatesPerSecond() { Clock c; for(int i = 0; i < 1000; i++) { TEST_TRUE(c.update() >= 0); } TEST_TRUE(c.getUpdatesPerSecond() > 0.0f); } static void testSleep(i64 nanos) { Clock c; TEST_TRUE(c.update() >= 0); TEST_FALSE(Clock::sleepNanos(nanos)); i64 n = c.update(); TEST_TRUE(n >= nanos && n <= nanos * 13 / 10); } static void testSleepMillis(i64 millis) { Clock c; TEST_TRUE(c.update() >= 0); TEST_FALSE(Clock::sleepMillis(millis)); i64 n = c.update(); i64 nanos = millis * 1'000'000; TEST_TRUE(n >= nanos && n <= nanos * 13 / 10); } static void testFail() { Clock c; #ifdef ERROR_SIMULATOR failStepThrow = 1; TEST(-1l, c.update()); failStepThrow = 1; TEST(-1l, Clock::getNanos()); failStepThrow = 1; TEST_TRUE(Clock::sleepMillis(5)); failStepThrow = 0; #endif } void testClock(bool light) { testUpdate(); testUpdatesPerSecond(); testSleep(light ? 5'000'000 : 50'000'000); testSleep(light ? 50'000'000 : 1'300'000'000); testSleepMillis(light ? 5 : 50); testSleepMillis(light ? 50 : 1300); testFail(); }