1 #include "tests/utils.h"
3 #include "audiographer/type_utils.h"
5 using namespace AudioGrapher;
7 class TypeUtilsTest : public CppUnit::TestFixture
9 CPPUNIT_TEST_SUITE (TypeUtilsTest);
10 CPPUNIT_TEST (testZeroFillPod);
11 CPPUNIT_TEST (testZeroFillNonPod);
12 CPPUNIT_TEST (testCopy);
13 CPPUNIT_TEST (testMoveBackward);
14 CPPUNIT_TEST (testMoveForward);
15 CPPUNIT_TEST_SUITE_END ();
28 void testZeroFillPod()
32 TypeUtils<float>::zero_fill (buf, frames);
34 for (unsigned i = 0; i < frames; ++i) {
35 CPPUNIT_ASSERT_EQUAL (zero, buf[i]);
39 void testZeroFillNonPod()
42 NonPodType buf[frames];
43 TypeUtils<NonPodType>::zero_fill (buf, frames);
45 for (unsigned i = 0; i < frames; ++i) {
46 CPPUNIT_ASSERT (zero == buf[i]);
50 void testMoveBackward()
52 int seq[8] = { 0, 1, 2, 3,
55 TypeUtils<int>::move (&seq[4], &seq[2], 4);
57 for (int i = 2; i < 2 + 4; ++i) {
58 CPPUNIT_ASSERT_EQUAL (i + 2, seq[i]);
62 void testMoveForward()
64 int seq[8] = { 0, 1, 2, 3,
67 TypeUtils<int>::move (&seq[2], &seq[4], 4);
69 for (int i = 4; i < 4 + 4; ++i) {
70 CPPUNIT_ASSERT_EQUAL (i - 2, seq[i]);
76 int const seq1[4] = { 1, 2, 3, 4 };
77 int const seq2[4] = { 5, 6, 7, 8 };
78 int seq3[8] = { 0, 0, 0, 0,
81 TypeUtils<int>::copy (seq1, seq3, 4);
82 for (int i = 0; i < 4; ++i) {
83 CPPUNIT_ASSERT_EQUAL (seq1[i], seq3[i]);
86 for (int i = 4; i < 8; ++i) {
87 CPPUNIT_ASSERT_EQUAL (0, seq3[i]);
90 TypeUtils<int>::copy (seq2, &seq3[4], 4);
91 for (int i = 0; i < 4; ++i) {
92 CPPUNIT_ASSERT_EQUAL (seq1[i], seq3[i]);
94 for (int i = 0; i < 4; ++i) {
95 CPPUNIT_ASSERT_EQUAL (seq2[i], seq3[4 + i]);
102 NonPodType() : data (42) {}
103 bool operator== (NonPodType const & other) const
104 { return data == other.data; }
111 CPPUNIT_TEST_SUITE_REGISTRATION (TypeUtilsTest);