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