#include <stdint.h>
typedef int16_t q15_t;
typedef int32_t q31_t;
#define AUDIO_BITDEPTH 16
#define AUDIO_CHANNELS 2
#include "SampleBuffer.hpp"
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Test
#include <boost/test/unit_test.hpp>
#define TEST_PRECISION 0.00001f
BOOST_AUTO_TEST_CASE(universeInOrder){
BOOST_CHECK(2+2 == 4);
}
BOOST_AUTO_TEST_CASE(testSplit){
SampleBuffer buffer;
buffer.setSize(128);
float samples[256];
for(int i=0; i<256; ++i)
samples[i] = i/128.0 - 1.0f;
int16_t input[512];
for(int i=0; i<256; ++i){
#if AUDIO_BITDEPTH == 24
#ifdef AUDIO_BIGEND
input[i*2] = (((int32_t)(samples[i]*2147483648.0f)) >> 16) & 0xffff; input[i*2+1] = ((int32_t)(samples[i]*2147483648.0f)) & 0xffff; #else
input[i*2] = ((int32_t)(samples[i]*2147483648.0f)) & 0xffff; input[i*2+1] = (((int32_t)(samples[i]*2147483648.0f)) >> 16) & 0xffff; #endif
#else
input[i] = ((int16_t)(samples[i]*32768.0f));
#endif
}
buffer.split(input, 256);
for(int i=0; i<128; ++i){
BOOST_CHECK_CLOSE(buffer.getSamples(0)[i], samples[i*2], TEST_PRECISION);
BOOST_CHECK_CLOSE(buffer.getSamples(1)[i], samples[i*2+1], TEST_PRECISION);
}
}
BOOST_AUTO_TEST_CASE(testCombAndSplit){
SampleBuffer buffer;
buffer.setSize(128);
float samples[128];
int16_t output[512];
for(int i=0; i<128; ++i)
samples[i] = i/64.0 - 1.0f;
for(int i=0; i<128; ++i){
buffer.getSamples(0)[i] = samples[i];
buffer.getSamples(1)[i] = samples[i];
}
buffer.comb(output);
buffer.split(output, 256);
for(int i=0; i<128; ++i){
BOOST_CHECK_CLOSE(buffer.getSamples(0)[i], samples[i], TEST_PRECISION);
BOOST_CHECK_CLOSE(buffer.getSamples(1)[i], samples[i], TEST_PRECISION);
}
}
BOOST_AUTO_TEST_CASE(testMultiplyAndCombSplit){
SampleBuffer buffer;
buffer.setSize(128);
float samples[128];
int16_t output[512];
for(int i=0; i<128; ++i)
samples[i] = i/64.0 - 1.0f;
for(int i=0; i<buffer.getSize(); ++i){
buffer.getSamples(0)[i] = samples[i];
buffer.getSamples(1)[i] = samples[i];
}
buffer.comb(output);
buffer.split(output, 256);
for(int i=0; i<buffer.getSize(); ++i){
buffer.getSamples(0)[i] *= 0.9;
buffer.getSamples(1)[i] *= 0.1;
}
for(int i=0; i<128; ++i){
BOOST_CHECK_CLOSE(buffer.getSamples(0)[i], samples[i]*0.9, TEST_PRECISION);
BOOST_CHECK_CLOSE(buffer.getSamples(1)[i], samples[i]*0.1, TEST_PRECISION);
}
}
BOOST_AUTO_TEST_CASE(testCombAndSplitAndComb){
SampleBuffer buffer;
buffer.setSize(128);
float samples[128];
int16_t output[512];
int16_t input[512];
for(int i=0; i<128; ++i)
samples[i] = i/64.0 - 1.0f;
for(int i=0; i<128; ++i){
buffer.getSamples(0)[i] = samples[i];
buffer.getSamples(1)[i] = samples[i];
}
buffer.comb(output);
buffer.split(output, 256);
buffer.comb(input);
for(int i=0; i<256; ++i)
BOOST_CHECK_EQUAL(input[i], output[i]);
}
AudioBuffer::~AudioBuffer(){}