| 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();}
 |