#include #include #include "AudioMath.h" using namespace std; static void test0() { assert(AudioMath::closeTo(0, 0, .000001)); assert(AudioMath::closeTo(1000, 1001, 1.1)); assert(!AudioMath::closeTo(1000, 1010, 1.1)); assert(!AudioMath::closeTo(1010, 1000, 1.1)); } static void test1() { assert(AudioMath::closeTo(3.145, AudioMath::Pi, .1)); assert(AudioMath::closeTo(3.145 / 2, AudioMath::Pi_2, .1)); assert(AudioMath::closeTo(log(10), AudioMath::Ln10, .001)); } static void test2() { const double d = .0001; std::function f = AudioMath::makeFunc_Sin(); assert(AudioMath::closeTo(f(0), 0, d)); assert(AudioMath::closeTo(f(.5), 0, d)); assert(AudioMath::closeTo(f(.25), 1, d)); assert(AudioMath::closeTo(f(.75), -1, d)); assert(AudioMath::closeTo(f(.125), 1.0 / sqrt(2), d)); } static void test3() { const double d = .0001; std::function f = AudioMath::makeFunc_Exp(0, 4, 2, 32); assert(AudioMath::closeTo(f(0), 2, d)); assert(AudioMath::closeTo(f(1), 4, d)); assert(AudioMath::closeTo(f(2), 8, d)); assert(AudioMath::closeTo(f(3), 16, d)); assert(AudioMath::closeTo(f(4), 32, d)); assert(f(5) > 33); assert(f(-1) < 1.5); } void testAudioMath() { test0(); test1(); test2(); test3(); }