43a653824204d53e6cd5e1068bd65fbcd4a8f860
[ardour.git] / libs / ardour / test / mtdm_test.cc
1 #include <cstring>
2 #include <cmath>
3 #include "ardour/mtdm.h"
4 #include "mtdm_test.h"
5
6 CPPUNIT_TEST_SUITE_REGISTRATION (MTDMTest);
7
8 using namespace std;
9
10 void
11 MTDMTest::basicTest ()
12 {
13         float in[256];
14         float out[256];
15
16         memset (in, 0, 256 * sizeof (float));
17         MTDM* mtdm = new MTDM (44100);
18
19         // initialization, need at least 3 cycles
20         // to allow resolution below error limit.
21         for (int i = 0; i < 4; ++i) {
22                 mtdm->process (256, in, out);
23                 memcpy (in, out, 256 * sizeof (float));
24         }
25         
26         for (int i = 0; i < 64; ++i) {
27                 mtdm->process (256, in, out);
28                 memcpy (in, out, 256 * sizeof (float));
29
30                 CPPUNIT_ASSERT_EQUAL (0, mtdm->resolve ());
31                 CPPUNIT_ASSERT (mtdm->err() < 1);
32                 CPPUNIT_ASSERT_EQUAL (256.0, rint (mtdm->del()));
33         }
34 }