aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests/convert_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/tests/convert_test.cpp')
-rw-r--r--host/tests/convert_test.cpp54
1 files changed, 39 insertions, 15 deletions
diff --git a/host/tests/convert_test.cpp b/host/tests/convert_test.cpp
index cd31a7846..982007d4e 100644
--- a/host/tests/convert_test.cpp
+++ b/host/tests/convert_test.cpp
@@ -17,7 +17,6 @@
#include <uhd/convert.hpp>
#include <boost/test/unit_test.hpp>
-#include <boost/foreach.hpp>
#include <stdint.h>
#include <boost/assign/list_of.hpp>
#include <complex>
@@ -71,13 +70,13 @@ template <typename Range> static void loopback(
* Test short conversion
**********************************************************************/
static void test_convert_types_sc16(
- size_t nsamps, convert::id_type &id, const int extra_div = 1
+ size_t nsamps, convert::id_type &id, const int extra_div = 1, int mask = 0xffff
){
//fill the input samples
std::vector<sc16_t> input(nsamps), output(nsamps);
- BOOST_FOREACH(sc16_t &in, input) in = sc16_t(
- short((float((std::rand())/(double(RAND_MAX)/2)) - 1)*32767/extra_div),
- short((float((std::rand())/(double(RAND_MAX)/2)) - 1)*32767/extra_div)
+ for(sc16_t &in: input) in = sc16_t(
+ short((float((std::rand())/(double(RAND_MAX)/2)) - 1)*32767/extra_div) & mask,
+ short((float((std::rand())/(double(RAND_MAX)/2)) - 1)*32767/extra_div) & mask
);
//run the loopback and test
@@ -126,7 +125,7 @@ static void test_convert_types_for_floats(
//fill the input samples
std::vector<data_type> input(nsamps), output(nsamps);
- BOOST_FOREACH(data_type &in, input) in = data_type(
+ for(data_type &in: input) in = data_type(
((std::rand()/(value_type(RAND_MAX)/2)) - 1)*float(extra_scale),
((std::rand()/(value_type(RAND_MAX)/2)) - 1)*float(extra_scale)
);
@@ -145,7 +144,7 @@ static void test_convert_types_for_floats(
;
//loopback foreach prio combo (generic vs best)
- BOOST_FOREACH(const int_pair_t &prio, prios){
+ for(const int_pair_t &prio: prios){
loopback(nsamps, in_id, out_id, input, output, prio.first, prio.second);
for (size_t i = 0; i < nsamps; i++){
MY_CHECK_CLOSE(input[i].real(), output[i].real(), value_type(1./(1 << 14)));
@@ -236,6 +235,31 @@ BOOST_AUTO_TEST_CASE(test_convert_types_be_sc12_with_fc32){
}
}
+BOOST_AUTO_TEST_CASE(test_convert_types_le_sc16_and_sc12){
+ convert::id_type id;
+ id.input_format = "sc16";
+ id.num_inputs = 1;
+ id.num_outputs = 1;
+
+ //try various lengths to test edge cases
+ id.output_format = "sc12_item32_le";
+ for (size_t nsamps = 1; nsamps < 16; nsamps++){
+ test_convert_types_sc16(nsamps, id, 1, 0xfff0);
+ }
+}
+
+BOOST_AUTO_TEST_CASE(test_convert_types_be_sc16_and_sc12){
+ convert::id_type id;
+ id.input_format = "sc16";
+ id.num_inputs = 1;
+ id.num_outputs = 1;
+
+ id.output_format = "sc12_item32_be";
+ for (size_t nsamps = 1; nsamps < 16; nsamps++){
+ test_convert_types_sc16(nsamps, id, 1, 0xfff0);
+ }
+}
+
/***********************************************************************
* Test float to/from fc32 conversion loopback
**********************************************************************/
@@ -284,7 +308,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_fc32_to_sc16){
const size_t nsamps = 13;
std::vector<fc32_t> input(nsamps);
- BOOST_FOREACH(fc32_t &in, input) in = fc32_t(
+ for(fc32_t &in: input) in = fc32_t(
(std::rand()/(RAND_MAX/2.0)) - 1,
(std::rand()/(RAND_MAX/2.0)) - 1
);
@@ -329,7 +353,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_sc16_to_fc32){
const size_t nsamps = 13;
std::vector<sc16_t> input(nsamps);
- BOOST_FOREACH(sc16_t &in, input) in = sc16_t(
+ for(sc16_t &in: input) in = sc16_t(
std::rand()-(RAND_MAX/2),
std::rand()-(RAND_MAX/2)
);
@@ -424,9 +448,9 @@ static void test_convert_types_u8(
){
//fill the input samples
std::vector<uint8_t> input(nsamps), output(nsamps);
- BOOST_FOREACH(uint8_t &in, input) in = uint8_t(std::rand() & 0xFF);
+ for(uint8_t &in: input) in = uint8_t(std::rand() & 0xFF);
//uint32_t d = 48;
- //BOOST_FOREACH(uint8_t &in, input) in = d++;
+ //for(uint8_t &in: input) in = d++;
//run the loopback and test
convert::id_type in_id = id;
@@ -464,7 +488,7 @@ static void test_convert_types_s8(
){
//fill the input samples
std::vector<int8_t> input(nsamps), output(nsamps);
- BOOST_FOREACH(int8_t &in, input) in = int8_t(std::rand() & 0xFF);
+ for(int8_t &in: input) in = int8_t(std::rand() & 0xFF);
//run the loopback and test
convert::id_type in_id = id;
@@ -502,7 +526,7 @@ static void test_convert_types_s16(
){
//fill the input samples
std::vector<int16_t> input(nsamps), output(nsamps);
- BOOST_FOREACH(int16_t &in, input) in = int16_t(std::rand() & 0xFFFF);
+ for(int16_t &in: input) in = int16_t(std::rand() & 0xFFFF);
//run the loopback and test
convert::id_type in_id = id;
@@ -540,7 +564,7 @@ static void test_convert_types_fc32(
){
//fill the input samples
std::vector< std::complex<float> > input(nsamps), output(nsamps);
- BOOST_FOREACH(fc32_t &in, input) in = fc32_t(
+ for(fc32_t &in: input) in = fc32_t(
(std::rand()/float(RAND_MAX/2)) - 1,
(std::rand()/float(RAND_MAX/2)) - 1
);
@@ -584,7 +608,7 @@ static void test_convert_types_f32(
){
//fill the input samples
std::vector<float> input(nsamps), output(nsamps);
- BOOST_FOREACH(float &in, input) in = float((float(std::rand())/float(RAND_MAX/2)) - 1);
+ for(float &in: input) in = float((float(std::rand())/float(RAND_MAX/2)) - 1);
//run the loopback and test
convert::id_type in_id = id;