| 
							- #include "testrunner.hpp"
 - #include "../src/Clock.hpp"
 - 
 - using namespace SynthDevKit;
 - 
 - uint8_t test_clock_exception ( ) {
 -   bool has_exception = 0;
 -   Clock *clock;
 - 
 -   try {
 -     clock = new Clock(CLOCK_LIMIT + 1, 1.5);
 -   } catch (int err) {
 -     has_exception = true;
 -   }
 - 
 -   check(clock, "clock is not null");
 -   check(has_exception, "exception is thrown");
 - 
 -   done();
 - }
 - 
 - uint8_t test_clock_update ( ) {
 -   Clock *clock = new Clock(4, 1.5);
 -   bool *results;
 - 
 -   results = clock->update(0);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered before ready");
 -   }
 - 
 -   results = clock->update(1.5);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered on first trigger");
 -   }
 - 
 -   results = clock->update(0);
 -   results = clock->update(0);
 -   results = clock->update(0);
 - 
 -   results = clock->update(1.5);
 -   check(results[0] == true, "first entry is triggered");
 -   check(results[1] == false, "second entry is not triggered");
 -   check(results[2] == false, "third entry is not triggered");
 -   check(results[3] == false, "fourth entry is not triggered");
 - 
 -   results = clock->update(0);
 -   check(results[0] == true, "first entry is still triggered");
 -   check(results[1] == false, "second entry is still not triggered");
 -   check(results[2] == false, "third entry is still not triggered");
 -   check(results[3] == false, "fourth entry is still not triggered");
 - 
 -   results = clock->update(0);
 -   check(results[0] == false, "first entry is now not triggered");
 -   check(results[1] == false, "second entry is still not triggered");
 -   check(results[2] == false, "third entry is still not triggered");
 -   check(results[3] == false, "fourth entry is still not triggered");
 - 
 -   results = clock->update(0);
 -   check(results[0] == false, "first entry is still not triggered");
 -   check(results[1] == false, "second entry is still not triggered");
 -   check(results[2] == false, "third entry is still not triggered");
 -   check(results[3] == false, "fourth entry is still not triggered");
 - 
 -   results = clock->update(1.5);
 -   check(results[0] == true, "first entry is triggered");
 -   check(results[1] == true, "second entry is triggered");
 -   check(results[2] == false, "third entry is not triggered");
 -   check(results[3] == false, "fourth entry is not triggered");
 - 
 -   clock->update(0);
 -   clock->update(0);
 -   clock->update(0);
 - 
 -   results = clock->update(1.5);
 -   check(results[0] == true, "first entry is triggered");
 -   check(results[1] == false, "second entry is not triggered");
 -   check(results[2] == true, "third entry is triggered");
 -   check(results[3] == false, "fourth entry is not triggered");
 - 
 -   clock->update(0);
 -   clock->update(0);
 -   clock->update(0);
 - 
 -   results = clock->update(1.5);
 -   check(results[0] == true, "first entry is triggered");
 -   check(results[1] == true, "second entry is triggered");
 -   check(results[2] == false, "third entry is not triggered");
 -   check(results[3] == true, "fourth entry is triggered");
 - 
 -   done();
 - }
 - 
 - uint8_t test_clock_reset ( ) {
 -   Clock *clock = new Clock(4, 1.5);
 -   bool *results;
 - 
 -   results = clock->update(0);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered before ready");
 -   }
 - 
 -   results = clock->update(1.5);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered on first trigger");
 -   }
 - 
 -   results = clock->update(0);
 -   results = clock->update(0);
 -   results = clock->update(0);
 - 
 -   results = clock->update(1.5);
 -   check(results[0] == true, "first entry is triggered");
 -   check(results[1] == false, "second entry is not triggered");
 -   check(results[2] == false, "third entry is not triggered");
 -   check(results[3] == false, "fourth entry is not triggered");
 - 
 -   clock->reset();
 - 
 -   results = clock->update(0);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered before ready");
 -   }
 - 
 -   results = clock->update(1.5);
 - 
 -   for (uint16_t i = 0; i < 4; i++) {
 -     check(results[i] == false, "not triggered on first trigger");
 -   }
 -   
 -   done();
 - }
 
 
  |