finalize PROGRAM_NAME change for ardour3
[ardour.git] / libs / audiographer / tests / normalizer_test.cc
1 #include "utils.h"
2
3 #include "audiographer/normalizer.h"
4 #include "audiographer/peak_reader.h"
5
6 using namespace AudioGrapher;
7
8 class NormalizerTest : public CppUnit::TestFixture
9 {
10   CPPUNIT_TEST_SUITE (NormalizerTest);
11   CPPUNIT_TEST (testConstAmplify);
12   CPPUNIT_TEST_SUITE_END ();
13
14   public:
15         void setUp()
16         {
17                 frames = 1024;
18         }
19
20         void tearDown()
21         {
22                 delete [] random_data;
23         }
24
25         void testConstAmplify()
26         {
27                 float target = 0.0;
28                 random_data = TestUtils::init_random_data(frames, 0.5);
29                 
30                 normalizer.reset (new Normalizer(target));
31                 peak_reader.reset (new PeakReader());
32                 sink.reset (new VectorSink<float>());
33                 
34                 ProcessContext<float> const c (random_data, frames, 1);
35                 peak_reader->process (c);
36                 
37                 float peak = peak_reader->get_peak();
38                 normalizer->alloc_buffer (frames);
39                 normalizer->set_peak (peak);
40                 normalizer->add_output (sink);
41                 normalizer->process (c);
42                 
43                 peak_reader->reset();
44                 ConstProcessContext<float> normalized (sink->get_array(), frames, 1);
45                 peak_reader->process (normalized);
46                 
47                 peak = peak_reader->get_peak();
48                 CPPUNIT_ASSERT (-FLT_EPSILON <= (peak - 1.0) && (peak - 1.0) <= 0.0);
49         }
50
51   private:
52         boost::shared_ptr<Normalizer> normalizer;
53         boost::shared_ptr<PeakReader> peak_reader;
54         boost::shared_ptr<VectorSink<float> > sink;
55
56         float * random_data;
57         nframes_t frames;
58 };
59
60 CPPUNIT_TEST_SUITE_REGISTRATION (NormalizerTest);