You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
1.9KB

  1. #include "testrunner.hpp"
  2. #include "../src/EventEmitter.hpp"
  3. using namespace SynthDevKit;
  4. static int16_t emit_count = 0;
  5. static float last_emit = 0.0f;
  6. static void emit_once (int16_t event, float value) {
  7. emit_count++;
  8. last_emit = value;
  9. }
  10. static int16_t emit_value = 0;
  11. static void emit_test (int16_t event, float value) {
  12. emit_value = event;
  13. }
  14. uint8_t test_event_emitter ( ) {
  15. EventEmitter *ee = new EventEmitter();
  16. check(ee != nullptr, "event emitter is instantiated");
  17. done();
  18. }
  19. uint8_t test_event_emitter_on ( ) {
  20. EventEmitter *ee = new EventEmitter();
  21. emit_count = 0;
  22. last_emit = 0.0f;
  23. ee->on(10, emit_once);
  24. ee->on(EVENT_FIRST, emit_test);
  25. ee->emit(10, 1.234f);
  26. check(emit_count == 1, "event emitter was run");
  27. check(last_emit == 1.234f, "the value was correct");
  28. check(emit_value == EVENT_FIRST, "first event triggered");
  29. ee->on(EVENT_EVEN, emit_test);
  30. ee->on(EVENT_ODD, emit_test);
  31. ee->emit(10, 2.234f);
  32. check(emit_count == 2, "event emitter was run again");
  33. check(last_emit == 2.234f, "the value was correct");
  34. check(emit_value == EVENT_EVEN, "even emitter was run");
  35. ee->emit(11, 2.234f);
  36. check(emit_value == EVENT_ODD, "odd emitter was run");
  37. done();
  38. }
  39. uint8_t test_event_emitter_clear ( ) {
  40. EventEmitter *ee = new EventEmitter();
  41. emit_count = 0;
  42. last_emit = 1.0f;
  43. ee->on(EVENT_CLEAR, emit_once);
  44. ee->clear();
  45. check(emit_count == 1, "event emitter was run");
  46. check(last_emit == 0.0, "the value was correct");
  47. ee->clear(true);
  48. check(emit_count == 1, "event emitter not run when fully cleared");
  49. done();
  50. }
  51. uint8_t test_event_emitter_listener ( ) {
  52. EventEmitter *ee = new EventEmitter();
  53. ee->on(10, emit_once);
  54. check(ee->listenerCount(10) == 1, "listener count is correct");
  55. ee->removeListener(10, emit_once);
  56. check(ee->listenerCount(10) == 0, "listener count is correct after removal");
  57. done();
  58. }