#include "testrunner.hpp" #include "../src/CVEvent.hpp" using namespace SynthDevKit; static int16_t emit_count = 0; static float last_emit = 0.0f; static void emit_once (int16_t event, float value) { emit_count++; last_emit = value; } uint8_t test_cv_event ( ) { CVEvent *ee = new CVEvent(1.1f, 4); check(ee != nullptr, "cv event is instantiated"); done(); } uint8_t test_cv_event_update ( ) { CVEvent *ee = new CVEvent(1.1f, 4); emit_count = 0; last_emit = 0.0f; ee->on(1, emit_once); check(ee->newTrigger() == false, "no trigger before update"); ee->update(0.1); check(ee->newTrigger() == false, "no trigger if low"); check(ee->triggerTotal() == 0, "trigger total is correct"); check(emit_count == 0, "listener has not been called"); ee->update(1.5f); check(ee->newTrigger() == true, "trigger is correct after going high"); check(ee->triggerTotal() == 1, "trigger total is correct"); check(emit_count == 1, "the listener has been called"); ee->update(0.1); check(ee->newTrigger() == false, "no trigger if low"); check(ee->triggerTotal() == 1, "trigger total is correct"); check(emit_count == 1, "listener has not been called"); ee->update(0.1); check(ee->newTrigger() == false, "trigger is correct after staying low"); check(ee->triggerTotal() == 1, "trigger total is still correct"); check(emit_count == 1, "the listener has not been called again"); done(); } uint8_t test_cv_event_resets ( ) { CVEvent *ee = new CVEvent(1.1f, 2); ee->update(0.1); check(ee->triggerTotal() == 0, "trigger total is correct at 0"); ee->update(1.5); check(ee->triggerTotal() == 1, "trigger total is correct at 1"); ee->update(0.1); check(ee->triggerTotal() == 1, "trigger total is still correct"); ee->update(1.5); check(ee->triggerTotal() == 2, "trigger total is correct at 2"); ee->update(0.1); ee->update(1.5); check(ee->triggerTotal() == 1, "trigger total is correct and back to 1"); done(); }