#include "arptest.hpp" #include "../src/controller/ClockDivider.hpp" uint8_t test_clock_divider_initial_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); m->inputs[0].value = 1.7f; m->step(); check(m->outputs[0].value == 0.0f, "output 1 is not active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_first_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 1; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_second_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 2; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 1.7f, "output 2 is active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_third_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 3; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 1.7f, "output 3 is active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_fourth_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 4; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 1.7f, "output 2 is active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 1.7f, "output 4 is active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_fifth_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 5; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 1.7f, "output 5 is active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_sixth_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 6; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 1.7f, "output 2 is active"); check(m->outputs[2].value == 1.7f, "output 3 is active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 1.7f, "output 6 is active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_seventh_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 7; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 1.7f, "output 7 is active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); } uint8_t test_clock_divider_eighth_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 8; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 1.7f, "output 2 is active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 1.7f, "output 4 is active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 1.7f, "output 8 is active"); done(); } uint8_t test_clock_divider_ninth_clock() { ClockDividerModule *m = new ClockDividerModule(); check(m, "clock divider is instantiated"); // initial m->inputs[0].value = 1.7f; m->step(); for (uint8_t i = 0; i < 9; i++) { m->inputs[0].value = 0.0f; m->step(); m->inputs[0].value = 1.7f; m->step(); } check(m->outputs[0].value == 1.7f, "output 1 is active"); check(m->outputs[1].value == 0.0f, "output 2 is not active"); check(m->outputs[2].value == 0.0f, "output 3 is not active"); check(m->outputs[3].value == 0.0f, "output 4 is not active"); check(m->outputs[4].value == 0.0f, "output 5 is not active"); check(m->outputs[5].value == 0.0f, "output 6 is not active"); check(m->outputs[6].value == 0.0f, "output 7 is not active"); check(m->outputs[7].value == 0.0f, "output 8 is not active"); done(); }