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.

55 lines
1.3KB

  1. #include <assert.h>
  2. #include <iostream>
  3. #include "AudioMath.h"
  4. using namespace std;
  5. static void test0()
  6. {
  7. assert(AudioMath::closeTo(0, 0, .000001));
  8. assert(AudioMath::closeTo(1000, 1001, 1.1));
  9. assert(!AudioMath::closeTo(1000, 1010, 1.1));
  10. assert(!AudioMath::closeTo(1010, 1000, 1.1));
  11. }
  12. static void test1()
  13. {
  14. assert(AudioMath::closeTo(3.145, AudioMath::Pi, .1));
  15. assert(AudioMath::closeTo(3.145 / 2, AudioMath::Pi_2, .1));
  16. assert(AudioMath::closeTo(log(10), AudioMath::Ln10, .001));
  17. }
  18. static void test2()
  19. {
  20. const double d = .0001;
  21. std::function<double(double)> f = AudioMath::makeFunc_Sin();
  22. assert(AudioMath::closeTo(f(0), 0, d));
  23. assert(AudioMath::closeTo(f(.5), 0, d));
  24. assert(AudioMath::closeTo(f(.25), 1, d));
  25. assert(AudioMath::closeTo(f(.75), -1, d));
  26. assert(AudioMath::closeTo(f(.125), 1.0 / sqrt(2), d));
  27. }
  28. static void test3()
  29. {
  30. const double d = .0001;
  31. std::function<double(double)> f = AudioMath::makeFunc_Exp(0, 4, 2, 32);
  32. assert(AudioMath::closeTo(f(0), 2, d));
  33. assert(AudioMath::closeTo(f(1), 4, d));
  34. assert(AudioMath::closeTo(f(2), 8, d));
  35. assert(AudioMath::closeTo(f(3), 16, d));
  36. assert(AudioMath::closeTo(f(4), 32, d));
  37. assert(f(5) > 33);
  38. assert(f(-1) < 1.5);
  39. }
  40. void testAudioMath()
  41. {
  42. test0();
  43. test1();
  44. test2();
  45. test3();
  46. }