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.

137 lines
3.9KB

  1. #include "testrunner.hpp"
  2. #include "../src/Clock.hpp"
  3. using namespace SynthDevKit;
  4. uint8_t test_clock_exception ( ) {
  5. bool has_exception = 0;
  6. Clock *clock = {0};
  7. try {
  8. clock = new Clock(CLOCK_LIMIT + 1, 1.5);
  9. } catch (int err) {
  10. has_exception = true;
  11. }
  12. check(!clock, "clock is null");
  13. check(has_exception, "exception is thrown");
  14. done();
  15. }
  16. uint8_t test_clock_update ( ) {
  17. Clock *clock = new Clock(4, 1.5);
  18. bool *results;
  19. results = clock->update(0);
  20. for (uint16_t i = 0; i < 4; i++) {
  21. check(results[i] == false, "not triggered before ready");
  22. }
  23. results = clock->update(1.5);
  24. for (uint16_t i = 0; i < 4; i++) {
  25. check(results[i] == false, "not triggered on first trigger");
  26. }
  27. results = clock->update(0);
  28. results = clock->update(0);
  29. results = clock->update(0);
  30. results = clock->update(1.5);
  31. check(results[0] == true, "first entry is triggered");
  32. check(results[1] == false, "second entry is not triggered");
  33. check(results[2] == false, "third entry is not triggered");
  34. check(results[3] == false, "fourth entry is not triggered");
  35. results = clock->update(0);
  36. check(results[0] == true, "first entry is still triggered");
  37. check(results[1] == false, "second entry is still not triggered");
  38. check(results[2] == false, "third entry is still not triggered");
  39. check(results[3] == false, "fourth entry is still not triggered");
  40. results = clock->update(0);
  41. check(results[0] == false, "first entry is now not triggered");
  42. check(results[1] == false, "second entry is still not triggered");
  43. check(results[2] == false, "third entry is still not triggered");
  44. check(results[3] == false, "fourth entry is still not triggered");
  45. results = clock->update(0);
  46. check(results[0] == false, "first entry is still not triggered");
  47. check(results[1] == false, "second entry is still not triggered");
  48. check(results[2] == false, "third entry is still not triggered");
  49. check(results[3] == false, "fourth entry is still not triggered");
  50. results = clock->update(1.5);
  51. check(results[0] == true, "first entry is triggered");
  52. check(results[1] == true, "second entry is triggered");
  53. check(results[2] == false, "third entry is not triggered");
  54. check(results[3] == false, "fourth entry is not triggered");
  55. clock->update(0);
  56. clock->update(0);
  57. clock->update(0);
  58. results = clock->update(1.5);
  59. check(results[0] == true, "first entry is triggered");
  60. check(results[1] == false, "second entry is not triggered");
  61. check(results[2] == true, "third entry is triggered");
  62. check(results[3] == false, "fourth entry is not triggered");
  63. clock->update(0);
  64. clock->update(0);
  65. clock->update(0);
  66. results = clock->update(1.5);
  67. check(results[0] == true, "first entry is triggered");
  68. check(results[1] == true, "second entry is triggered");
  69. check(results[2] == false, "third entry is not triggered");
  70. check(results[3] == true, "fourth entry is triggered");
  71. done();
  72. }
  73. uint8_t test_clock_reset ( ) {
  74. Clock *clock = new Clock(4, 1.5);
  75. bool *results;
  76. results = clock->update(0);
  77. for (uint16_t i = 0; i < 4; i++) {
  78. check(results[i] == false, "not triggered before ready");
  79. }
  80. results = clock->update(1.5);
  81. for (uint16_t i = 0; i < 4; i++) {
  82. check(results[i] == false, "not triggered on first trigger");
  83. }
  84. results = clock->update(0);
  85. results = clock->update(0);
  86. results = clock->update(0);
  87. results = clock->update(1.5);
  88. check(results[0] == true, "first entry is triggered");
  89. check(results[1] == false, "second entry is not triggered");
  90. check(results[2] == false, "third entry is not triggered");
  91. check(results[3] == false, "fourth entry is not triggered");
  92. clock->reset();
  93. results = clock->update(0);
  94. for (uint16_t i = 0; i < 4; i++) {
  95. check(results[i] == false, "not triggered before ready");
  96. }
  97. results = clock->update(1.5);
  98. for (uint16_t i = 0; i < 4; i++) {
  99. check(results[i] == false, "not triggered on first trigger");
  100. }
  101. done();
  102. }