summaryrefslogtreecommitdiff
path: root/libs/ardour/test/mtdm_test.cc
blob: f3265b2ccda4a6baf02ddc8088dba5544a6f788b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <cstring>
#include <cmath>
#include "ardour/mtdm.h"
#include "mtdm_test.h"

CPPUNIT_TEST_SUITE_REGISTRATION (MTDMTest);

using namespace std;

void
MTDMTest::basicTest ()
{
	float in[256];
	float out[256];

	memset (in, 0, 256 * sizeof (float));
	MTDM* mtdm = new MTDM (44100);

	// initialization, need at least 3 cycles
	// to allow resolution below error limit.
	for (int i = 0; i < 4; ++i) {
		mtdm->process (256, in, out);
		memcpy (in, out, 256 * sizeof (float));
	}

	for (int i = 0; i < 64; ++i) {
		mtdm->process (256, in, out);
		memcpy (in, out, 256 * sizeof (float));

		CPPUNIT_ASSERT_EQUAL (0, mtdm->resolve ());
		CPPUNIT_ASSERT (mtdm->err() < 1);
		CPPUNIT_ASSERT_EQUAL (256.0, rint (mtdm->del()));
	}
}