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