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.

77 lines
1.9KB

  1. #include "testrunner.hpp"
  2. #include "../src/CVEvent.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. uint8_t test_cv_event ( ) {
  11. CVEvent *ee = new CVEvent(1.1f, 4);
  12. check(ee != nullptr, "cv event is instantiated");
  13. done();
  14. }
  15. uint8_t test_cv_event_update ( ) {
  16. CVEvent *ee = new CVEvent(1.1f, 4);
  17. emit_count = 0;
  18. last_emit = 0.0f;
  19. ee->on(1, emit_once);
  20. check(ee->newTrigger() == false, "no trigger before update");
  21. ee->update(0.1);
  22. check(ee->newTrigger() == false, "no trigger if low");
  23. check(ee->triggerTotal() == 0, "trigger total is correct");
  24. check(emit_count == 0, "listener has not been called");
  25. ee->update(1.5f);
  26. check(ee->newTrigger() == true, "trigger is correct after going high");
  27. check(ee->triggerTotal() == 1, "trigger total is correct");
  28. check(emit_count == 1, "the listener has been called");
  29. ee->update(0.1);
  30. check(ee->newTrigger() == false, "no trigger if low");
  31. check(ee->triggerTotal() == 1, "trigger total is correct");
  32. check(emit_count == 1, "listener has not been called");
  33. ee->update(0.1);
  34. check(ee->newTrigger() == false, "trigger is correct after staying low");
  35. check(ee->triggerTotal() == 1, "trigger total is still correct");
  36. check(emit_count == 1, "the listener has not been called again");
  37. done();
  38. }
  39. uint8_t test_cv_event_resets ( ) {
  40. CVEvent *ee = new CVEvent(1.1f, 2);
  41. ee->update(0.1);
  42. check(ee->triggerTotal() == 0, "trigger total is correct at 0");
  43. ee->update(1.5);
  44. check(ee->triggerTotal() == 1, "trigger total is correct at 1");
  45. ee->update(0.1);
  46. check(ee->triggerTotal() == 1, "trigger total is still correct");
  47. ee->update(1.5);
  48. check(ee->triggerTotal() == 2, "trigger total is correct at 2");
  49. ee->update(0.1);
  50. ee->update(1.5);
  51. check(ee->triggerTotal() == 1, "trigger total is correct and back to 1");
  52. done();
  53. }