ClockTests.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "../../src/ErrorSimulator.hpp"
  2. #include "../Tests.hpp"
  3. #include "core/Clock.hpp"
  4. #include "core/Test.hpp"
  5. using Core::Clock;
  6. static void testUpdate() {
  7. Clock c;
  8. TEST_TRUE(c.update() == 0);
  9. TEST_TRUE(c.update() >= 0);
  10. TEST_TRUE(c.update() >= 0);
  11. TEST_TRUE(c.update() >= 0);
  12. }
  13. static void testUpdatesPerSecond() {
  14. Clock c;
  15. for(int i = 0; i < 1000; i++) {
  16. TEST_TRUE(c.update() >= 0);
  17. }
  18. TEST_TRUE(c.getUpdatesPerSecond() > 0.0f);
  19. }
  20. static void testSleep(i64 nanos) {
  21. Clock c;
  22. TEST_TRUE(c.update() >= 0);
  23. TEST_FALSE(Clock::sleepNanos(nanos));
  24. i64 n = c.update();
  25. TEST_TRUE(n >= nanos && n <= nanos * 13 / 10);
  26. }
  27. static void testSleepMillis(i64 millis) {
  28. Clock c;
  29. TEST_TRUE(c.update() >= 0);
  30. TEST_FALSE(Clock::sleepMillis(millis));
  31. i64 n = c.update();
  32. i64 nanos = millis * 1'000'000;
  33. TEST_TRUE(n >= nanos && n <= nanos * 13 / 10);
  34. }
  35. static void testFail() {
  36. Clock c;
  37. #ifdef ERROR_SIMULATOR
  38. failStepThrow = 1;
  39. TEST(-1l, c.update());
  40. failStepThrow = 1;
  41. TEST(-1l, Clock::getNanos());
  42. failStepThrow = 1;
  43. TEST_TRUE(Clock::sleepMillis(5));
  44. failStepThrow = 0;
  45. #endif
  46. }
  47. void testClock(bool light) {
  48. testUpdate();
  49. testUpdatesPerSecond();
  50. testSleep(light ? 5'000'000 : 50'000'000);
  51. testSleep(light ? 50'000'000 : 1'300'000'000);
  52. testSleepMillis(light ? 5 : 50);
  53. testSleepMillis(light ? 50 : 1300);
  54. testFail();
  55. }