summaryrefslogtreecommitdiff
path: root/libs/audiographer/tests/sndfile/tmp_file_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/audiographer/tests/sndfile/tmp_file_test.cc')
-rw-r--r--libs/audiographer/tests/sndfile/tmp_file_test.cc47
1 files changed, 47 insertions, 0 deletions
diff --git a/libs/audiographer/tests/sndfile/tmp_file_test.cc b/libs/audiographer/tests/sndfile/tmp_file_test.cc
new file mode 100644
index 0000000000..d2d1b3581e
--- /dev/null
+++ b/libs/audiographer/tests/sndfile/tmp_file_test.cc
@@ -0,0 +1,47 @@
+#include "tests/utils.h"
+#include "audiographer/sndfile/tmp_file.h"
+
+using namespace AudioGrapher;
+
+class TmpFileTest : public CppUnit::TestFixture
+{
+ CPPUNIT_TEST_SUITE (TmpFileTest);
+ CPPUNIT_TEST (testProcess);
+ CPPUNIT_TEST_SUITE_END ();
+
+ public:
+ void setUp()
+ {
+ frames = 128;
+ random_data = TestUtils::init_random_data(frames);
+ }
+
+ void tearDown()
+ {
+ delete [] random_data;
+ }
+
+ void testProcess()
+ {
+ uint channels = 2;
+ file.reset (new TmpFile<float>(SF_FORMAT_WAV | SF_FORMAT_FLOAT, channels, 44100));
+ AllocatingProcessContext<float> c (random_data, frames, channels);
+ c.set_flag (ProcessContext<float>::EndOfInput);
+ file->process (c);
+
+ TypeUtils<float>::zero_fill (c.data (), c.frames());
+
+ file->seek (0, SEEK_SET);
+ file->read (c);
+ CPPUNIT_ASSERT (TestUtils::array_equals (random_data, c.data(), c.frames()));
+ }
+
+ private:
+ boost::shared_ptr<TmpFile<float> > file;
+
+ float * random_data;
+ nframes_t frames;
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION (TmpFileTest);
+