|  | #include "testrunner.hpp"
#include "../src/EventEmitter.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;
}
static int16_t emit_value = 0;
static void emit_test (int16_t event, float value) {
  emit_value = event;
}
uint8_t test_event_emitter ( ) {
  EventEmitter *ee = new EventEmitter();
  check(ee != nullptr, "event emitter is instantiated");
  done();
}
uint8_t test_event_emitter_on ( ) {
  EventEmitter *ee = new EventEmitter();
  emit_count = 0;
  last_emit = 0.0f;
  ee->on(10, emit_once);
  ee->on(EVENT_FIRST, emit_test);
  ee->emit(10, 1.234f);
  check(emit_count == 1, "event emitter was run");
  check(last_emit == 1.234f, "the value was correct");
  check(emit_value == EVENT_FIRST, "first event triggered");
  ee->on(EVENT_EVEN, emit_test);
  ee->on(EVENT_ODD, emit_test);
  ee->emit(10, 2.234f);
  check(emit_count == 2, "event emitter was run again");
  check(last_emit == 2.234f, "the value was correct");
  check(emit_value == EVENT_EVEN, "even emitter was run");
  ee->emit(11, 2.234f);
  check(emit_value == EVENT_ODD, "odd emitter was run");
  done();
}
uint8_t test_event_emitter_clear ( ) {
  EventEmitter *ee = new EventEmitter();
  emit_count = 0;
  last_emit = 1.0f;
  ee->on(EVENT_CLEAR, emit_once);
  ee->clear();
  check(emit_count == 1, "event emitter was run");
  check(last_emit == 0.0, "the value was correct");
  ee->clear(true);
  check(emit_count == 1, "event emitter not run when fully cleared");
  done();
}
uint8_t test_event_emitter_listener ( ) {
  EventEmitter *ee = new EventEmitter();
  ee->on(10, emit_once);
  check(ee->listenerCount(10) == 1, "listener count is correct");
  ee->removeListener(10, emit_once);
  check(ee->listenerCount(10) == 0, "listener count is correct after removal");
  done();
}
 |