123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /**
- * @file
- * @author Marek Bel
- */
- #include "catch.hpp"
- #include "../Firmware/Timer.h"
- #include "../Firmware/TimerRemaining.h"
- static unsigned long now = 0;
- unsigned long millis()
- {
- return now;
- }
- unsigned long millis2()
- {
- return now;
- }
- static void basicTimer()
- {
- LongTimer timer;
- CHECK( timer.running() == false);
- timer.start();
- CHECK( timer.running() == true);
- timer.stop();
- CHECK( timer.running() == false);
- timer.start();
- CHECK( timer.expired(0) == true);
- CHECK( timer.expired(0) == false);
- CHECK( timer.running() == false);
- timer.start();
- CHECK( timer.expired(1) == false);
- CHECK( timer.running() == true);
- ++now;
- CHECK( timer.expired(1) == true);
- CHECK( timer.running() == false);
- --now;
- timer.start();
- CHECK( timer.expired(ULONG_MAX - 1) == false);
- now+= ULONG_MAX - 2;
- CHECK( timer.expired(ULONG_MAX - 1) == false);
- now++;
- CHECK( timer.expired(ULONG_MAX - 1) == true);
- CHECK( timer.running() == false);
- now-= ULONG_MAX - 1;
- timer.start();
- CHECK( timer.expired(ULONG_MAX) == false);
- now+= ULONG_MAX - 1;
- CHECK( timer.expired(ULONG_MAX) == false);
- now++;
- CHECK( timer.expired(ULONG_MAX) == true);
- CHECK( timer.running() == false);
- now-= ULONG_MAX;
- timer.start();
- CHECK( timer.running() == true);
- CHECK( timer.expired(12*3600000ul + 38*60000ul + 15000) == false);
- now+= 12*3600000ul + 38*60000ul + 14999;
- CHECK( timer.expired(12*3600000ul + 38*60000ul + 15000) == false);
- ++now;
- CHECK( timer.expired(12*3600000ul + 38*60000ul + 15000) == true);
- CHECK( timer.running() == false);
- now-= 12*3600000ul + 38*60000ul + 15000;
- }
- TEST_CASE( "LongTimer test.", "[timer]" )
- {
- now = 0;
- basicTimer();
- now = 1;
- basicTimer();
- now = ULONG_MAX;
- basicTimer();
- now = ULONG_MAX - 1;
- basicTimer();
- now = 12*3600000ul + 38*60000ul + 15000;
- basicTimer();
- }
- static void basicRemaining()
- {
- TimerRemaining timer;
- CHECK( timer.running() == false);
- CHECK( timer.remaining() == 0);
- timer.start(100);
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 100);
- now += 99;
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 1);
- ++now;
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- now -=100;
- timer.start(1);
- timer.stop();
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- timer.start(0);
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- timer.start(1);
- CHECK( timer.remaining() == 1);
- CHECK( timer.running() == true);
- ++now;
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- --now;
- timer.start(ULONG_MAX - 1);
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == ULONG_MAX - 1);
- now+= ULONG_MAX - 2;
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 1);
- CHECK( timer.running() == true);
- ++now;
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- now-= ULONG_MAX - 1;
- timer.start(ULONG_MAX);
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == ULONG_MAX);
- now+= ULONG_MAX - 1;
- CHECK( timer.remaining() == 1);
- CHECK( timer.running() == true);
- ++now;
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- timer.start(12*3600000ul + 38*60000ul + 15000);
- CHECK( timer.running() == true);
- CHECK( timer.remaining() == 12*3600000ul + 38*60000ul + 15000);
- now+= 12*3600000ul + 38*60000ul + 14999;
- CHECK( timer.remaining() == 1);
- ++now;
- CHECK( timer.remaining() == 0);
- CHECK( timer.running() == false);
- now-= 12*3600000ul + 38*60000ul + 15000;
- }
- TEST_CASE( "TimerRemaining test.", "[timer]" )
- {
- now = 0;
- basicRemaining();
- now = 1;
- basicRemaining();
- now = ULONG_MAX;
- basicRemaining();
- now = ULONG_MAX - 1;
- basicRemaining();
- now = 12*3600000ul + 38*60000ul + 15000;
- basicRemaining();
- }
|