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.

108 lines
1.5KB

  1. #include <stdio.h>
  2. #include "GateTrigger.h"
  3. #include "SchmidtTrigger.h"
  4. static void sc0()
  5. {
  6. SchmidtTrigger sc(-10, 10);
  7. bool b = sc.go(-20);
  8. assert(!b);
  9. }
  10. static void sc1()
  11. {
  12. SchmidtTrigger sc(-10, 10);
  13. bool b = sc.go(20);
  14. assert(b);
  15. }
  16. static void sc2()
  17. {
  18. SchmidtTrigger sc(-10, 10);
  19. bool b = sc.go(20);
  20. assert(b);
  21. b = sc.go(9);
  22. assert(b);
  23. b = sc.go(-9);
  24. assert(b);
  25. b = sc.go(-11);
  26. assert(!b);
  27. b = sc.go(-999);
  28. assert(!b);
  29. b = sc.go(9);
  30. assert(!b);
  31. b = sc.go(11);
  32. assert(b);
  33. }
  34. // check defaults for schmidt
  35. static void sc3()
  36. {
  37. SchmidtTrigger sc;
  38. bool b = sc.go(cGateHi + .1f);
  39. assert(b);
  40. b = sc.go(cGateLow + .1f);
  41. assert(b);
  42. b = sc.go(cGateLow - .1f);
  43. assert(!b);
  44. b = sc.go(cGateHi - .1f);
  45. assert(!b);
  46. b = sc.go(cGateHi + .1f);
  47. assert(b);
  48. }
  49. // check that threshold accessors are sane
  50. void g_1()
  51. {
  52. GateTrigger g;
  53. assert(g.thlo() > 0);
  54. assert(g.thhi() > g.thlo());
  55. assert(g.thhi() < 10.f);
  56. assert(g.thhi() > 1.f);
  57. }
  58. void testAfterReset(GateTrigger& g)
  59. {
  60. g.go(10.f); // right after "reset", start with gate
  61. assert(!g.gate());
  62. assert(!g.trigger());
  63. g.go(0.f);
  64. assert(!g.gate());
  65. assert(!g.trigger());
  66. g.go(10.f);
  67. assert(g.gate());
  68. assert(g.trigger());
  69. }
  70. void grst1()
  71. {
  72. GateTrigger g;
  73. testAfterReset(g);
  74. g.go(10.f);
  75. g.reset();
  76. testAfterReset(g);
  77. }
  78. void testGateTrigger()
  79. {
  80. sc0();
  81. sc1();
  82. sc2();
  83. sc3();
  84. g_1();
  85. grst1();
  86. }