#include <boost/test/unit_test.hpp>
#include <usml/types/types.h>
#include <iostream>
BOOST_AUTO_TEST_SUITE(sequence_test)
using namespace boost::unit_test;
using namespace usml::types;
cout << "=== sequence_test: sequence_linear_test1() ===" << endl;
seq_linear seq( 1.0, 2.0, 15.0 );
cout << "seq => " << seq << endl;
cout << "size => " << seq.size() << endl;
BOOST_CHECK_EQUAL( seq.size(), 8u );
cout << "increment(3) => " << seq.increment(3) << endl;
BOOST_CHECK_CLOSE( seq.increment(3), 2.0, 1e-6 );
cout << "seq(3) => " << seq(3) << endl;
BOOST_CHECK_CLOSE( seq(3), 7.0, 1e-6 );
cout << "find_index(-2) => " << seq.find_index(-2) << endl;
BOOST_CHECK_EQUAL( seq.find_index(-2), 0u );
cout << "find_index(11.5) => " << seq.find_index(11.5) << endl;
BOOST_CHECK_EQUAL( seq.find_index(11.5), 5u );
cout << "find_index(13) => " << seq.find_index(13) << endl;
BOOST_CHECK_EQUAL( seq.find_index(13), 6u );
cout << "find_index(100.0) => " << seq.find_index(100.0) <<endl;
BOOST_CHECK_EQUAL( seq.find_index(100.0), 6u );
seq_linear::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current << " ";
++current;
}
cout << endl;
vector<double> vect;
vect = seq;
cout << "vect => " << vect << endl;
}
cout << "=== sequence_test: sequence_linear_test2() ===" << endl;
seq_linear seq( 1.0, 3.5, 8 );
cout << "seq => " << seq << endl;
cout << "size => " << seq.size() << endl;
BOOST_CHECK_EQUAL( seq.size(), 8u );
cout << "increment(3) => " << seq.increment(3) << endl;
BOOST_CHECK_CLOSE( seq.increment(3), 3.5, 1e-6 );
cout << "seq[3] => " << seq[3] << endl;
BOOST_CHECK_CLOSE( seq[3], 11.5, 1e-6 );
cout << "find_index(-2) => " << seq.find_index(-2) << endl;
BOOST_CHECK_EQUAL( seq.find_index(-2), 0u );
cout << "find_index(11.5) => " << seq.find_index(11.5) << endl;
BOOST_CHECK_EQUAL( seq.find_index(11.5), 3u );
cout << "find_index(13) => " << seq.find_index(13) << endl;
BOOST_CHECK_EQUAL( seq.find_index(13), 3u );
cout << "find_index(100.0) => " << seq.find_index(100.0) <<endl;
BOOST_CHECK_EQUAL( seq.find_index(100.0), 6u );
seq_linear::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current++ << " ";
}
cout << endl;
}
cout << "=== sequence_test: sequence_log_test ===" << endl;
seq_log seq( 10.0, std::pow(2.0,1.0/3.0), 10 );
cout << "seq => " << seq << endl;
cout << "size => " << seq.size() << endl;
BOOST_CHECK_EQUAL( seq.size(), 10u );
cout << "increment(3) => " << seq.increment(3) << endl;
BOOST_CHECK_CLOSE( seq.increment(3), 5.19842, 1e-4 );
cout << "seq[3] => " << seq[3] << endl;
BOOST_CHECK_CLOSE( seq[3], 20.0, 1e-6 );
cout << "find_index(-2) => " << seq.find_index(-2) << endl;
BOOST_CHECK_EQUAL( seq.find_index(-2), 0u );
cout << "find_index(13) => " << seq.find_index(13) << endl;
BOOST_CHECK_EQUAL( seq.find_index(13), 1u );
cout << "find_index(20.0) => " << seq.find_index(20.0) << endl;
cout << "find_index(20.0+e) => " << seq.find_index(20.0+1e-10) << endl;
BOOST_CHECK_EQUAL( seq.find_index(20.0+1e-10), 3u );
cout << "find_index(1000.0) => " << seq.find_index(1000.0) <<endl;
BOOST_CHECK_EQUAL( seq.find_index(1000.0), 8u );
seq_log::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current++ << " ";
}
cout << endl;
}
cout << "=== sequence_test: sequence_data_test1() ===" << endl;
int N = 10;
double data[] = {10.0,12.5,16.0,20.0,25.0,32.0,40.0,50.0,63.5,80.0};
vector<double> vect(N);
std::copy( data, data+N, vect.begin() );
seq_data seq( vect );
cout << "seq => " << seq << endl;
cout << "size => " << seq.size() << endl;
BOOST_CHECK_EQUAL( seq.size(), 10u );
cout << "increment(3) => " << seq.increment(3) << endl;
BOOST_CHECK_CLOSE( seq.increment(3), 5.0, 1e-4 );
cout << "seq[3] => " << seq[3] << endl;
BOOST_CHECK_CLOSE( seq[3], 20.0, 1e-6 );
cout << "find_index(-2) => " << seq.find_index(-2) << endl;
BOOST_CHECK_EQUAL( seq.find_index(-2), 0u );
cout << "find_index(13) => " << seq.find_index(13) << endl;
BOOST_CHECK_EQUAL( seq.find_index(13), 1u );
cout << "find_index(20.0) => " << seq.find_index(20.0) << endl;
BOOST_CHECK_EQUAL( seq.find_index(20.0), 3u );
cout << "find_index(1000.0) => " << seq.find_index(1000.0) <<endl;
BOOST_CHECK_EQUAL( seq.find_index(1000.0), 8u );
seq_data::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current++ << " ";
}
cout << endl;
}
cout << "=== sequence_test: sequence_data_test2() ===" << endl;
int N = 10;
double data[] = {80.0,63.5,50.0,40.0,32.0,25.0,20.0,16.0,12.5,10.0};
vector<double> vect(N);
std::copy( data, data+N, vect.begin() );
seq_data seq( vect );
cout << "seq => " << seq << endl;
cout << "size => " << seq.size() << endl;
BOOST_CHECK_EQUAL( seq.size(), 10u );
cout << "increment(3) => " << seq.increment(3) << endl;
BOOST_CHECK_CLOSE( seq.increment(3), -8.0, 1e-4 );
cout << "seq[3] => " << seq[3] << endl;
BOOST_CHECK_CLOSE( seq[3], 40.0, 1e-6 );
cout << "find_index(-2) => " << seq.find_index(-2) << endl;
BOOST_CHECK_EQUAL( seq.find_index(-2), 8u );
cout << "find_index(13) => " << seq.find_index(13) << endl;
BOOST_CHECK_EQUAL( seq.find_index(13), 7u );
cout << "find_index(20.0) => " << seq.find_index(20.0) << endl;
BOOST_CHECK_EQUAL( seq.find_index(20.0), 6u );
cout << "find_index(1000.0) => " << seq.find_index(1000.0) <<endl;
BOOST_CHECK_EQUAL( seq.find_index(1000.0), 0u );
seq_data::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current++ << " ";
}
cout << endl;
}
cout << "=== sequence_test: sequence_rayfan_test ===" << endl;
seq_rayfan seq( -90.0, 90.0, 7, 10.0 );
cout << "seq => " << seq << endl;
seq_log::const_iterator current = seq.begin();
cout << "iterator => ";
while ( current != seq.end() ) {
cout << *current++ << " ";
}
cout << endl;
}
BOOST_AUTO_TEST_SUITE_END()