/*
Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
- This program is free software; you can redistribute it and/or modify
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
- This program is distributed in the hope that it will be useful,
+ DCP-o-matic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file test/audio_buffers_test.cc
- * @brief Test AudioBuffers in various ways.
+ * @brief Test AudioBuffers class.
+ * @ingroup selfcontained
*/
#include <cmath>
random_fill (buffers);
/* Extend */
- buffers.ensure_size (299);
+ buffers.set_frames (299);
srand (1);
random_check (buffers, 0, 150);
random_fill (buffers);
buffers.make_silent ();
-
+
for (int i = 0; i < 9933; ++i) {
for (int c = 0; c < 9; ++c) {
BOOST_CHECK_EQUAL (buffers.data(c)[i], 0);
int const to = 666;
int const frames = 444;
- buffers.move (from, to, frames);
+ buffers.move (frames, from, to);
/* Re-seed and check the un-moved parts */
srand (84);
for (int i = 0; i < from * 7; ++i) {
random_float ();
}
-
+
random_check (buffers, to, frames);
}
AudioBuffers a (3, 256);
srand (38);
random_fill (a);
-
+
AudioBuffers b (3, 256);
random_fill (b);
AudioBuffers a (3, 256);
srand (38);
random_fill (a);
-
+
AudioBuffers b (3, 256);
random_fill (b);
- a.accumulate_frames (&b, 91, 44, 129);
+ a.accumulate_frames (&b, 129, 91, 44);
srand (38);
for (int i = 0; i < 256; ++i) {
}
}
}
+
+
+BOOST_AUTO_TEST_CASE (audio_buffers_data)
+{
+ AudioBuffers a (94, 512);
+
+ for (int i = 0; i < 94; ++i) {
+ BOOST_CHECK_EQUAL (a.data()[i], a.data(i));
+ }
+
+ a.set_frames (2048);
+
+ for (int i = 0; i < 94; ++i) {
+ BOOST_CHECK_EQUAL (a.data()[i], a.data(i));
+ }
+}
+
+
+BOOST_AUTO_TEST_CASE (audio_buffers_trim_start)
+{
+ AudioBuffers a (13, 999);
+
+ srand (55);
+ random_fill (a);
+
+ a.trim_start (101);
+
+ srand (55);
+
+ /* Burn the first 101 numbers in the sequence */
+ for (int i = 0; i < 101 * 13; ++i) {
+ random_float ();
+ }
+
+ for (int i = 0; i < (999 - 101); ++i) {
+ for (int j = 0; j < 13; ++j) {
+ BOOST_CHECK_CLOSE (a.data(j)[i], random_float(), tolerance);
+ }
+ }
+}
+
+
+BOOST_AUTO_TEST_CASE(audio_buffers_set_channels_lower)
+{
+ AudioBuffers buffers(9, 9933);
+ srand(4);
+ random_fill(buffers);
+
+ buffers.set_channels(4);
+ BOOST_REQUIRE_EQUAL(buffers.channels(), 4);
+
+ srand(4);
+ for (int i = 0; i < 9933; ++i) {
+ for (int c = 0; c < 4; ++c) {
+ BOOST_CHECK_EQUAL(buffers.data(c)[i], random_float());
+ }
+ for (int c = 4; c < 9; ++c) {
+ random_float();
+ }
+ }
+}
+
+
+BOOST_AUTO_TEST_CASE(audio_buffers_set_channels_higher)
+{
+ AudioBuffers buffers(9, 9933);
+ srand(4);
+ random_fill(buffers);
+
+ buffers.set_channels(13);
+ BOOST_REQUIRE_EQUAL(buffers.channels(), 13);
+
+ srand(4);
+ for (int i = 0; i < 9933; ++i) {
+ for (int c = 0; c < 9; ++c) {
+ BOOST_CHECK_EQUAL(buffers.data(c)[i], random_float());
+ }
+ for (int c = 9; c < 13; ++c) {
+ BOOST_CHECK_EQUAL(buffers.data(c)[i], 0);
+ }
+ }
+}