5 #include <boost/test/unit_test.hpp> 14 BOOST_AUTO_TEST_SUITE(PolyTableTweakingTest)
16 BOOST_AUTO_TEST_CASE( remove_missing_N )
18 std::vector<double> pos = {1,2,3,4,5};
19 std::vector<std::string> data = {
"AAAAA",
25 ps2(copyPolyTable(ps)),ps3(copyPolyTable(ps)),ps4(copyPolyTable(ps));
27 BOOST_CHECK(pos.empty());
28 BOOST_CHECK(data.empty());
30 BOOST_REQUIRE(ps == ps2);
32 BOOST_REQUIRE_EQUAL( ps.numsites() , 5 );
33 BOOST_REQUIRE_EQUAL( ps.size(), 4 );
35 ps = removeMissing(ps);
37 BOOST_REQUIRE_EQUAL( ps.numsites() , 4 );
38 BOOST_REQUIRE_EQUAL( ps.size(), 4 );
42 ps2=removeMissing(ps2,
true,3);
44 BOOST_REQUIRE_EQUAL( ps2.numsites() , 5 );
45 BOOST_REQUIRE_EQUAL( ps2.size(), 4 );
49 ps2=removeMissing(ps2,
false,3);
51 BOOST_REQUIRE_EQUAL( ps2.numsites() , 4 );
52 BOOST_REQUIRE_EQUAL( ps2.size(), 4 );
56 ps3=removeMissing(ps3,
false,0);
57 BOOST_REQUIRE_EQUAL( ps3.numsites() , 4 );
58 BOOST_REQUIRE_EQUAL( ps3.size(), 4 );
60 BOOST_REQUIRE( ps2 == ps3 );
64 ps4=removeMissing(ps4,
false,0);
65 BOOST_REQUIRE_EQUAL( ps4.numsites() , 4 );
66 BOOST_REQUIRE_EQUAL( ps4.size(), 4 );
68 BOOST_REQUIRE( ps3 == ps4 );
153 BOOST_AUTO_TEST_CASE( remove_missing_extreme )
155 std::vector<double> pos = {1,2,3,4,5};
156 std::vector<std::string> data = {
"aaaaa",
166 std::for_each(d.begin(),
168 [](
char & ch) { ch =
'N'; });
171 ps=removeMissing(ps);
172 BOOST_REQUIRE(ps.empty());
173 BOOST_REQUIRE_EQUAL(ps.numsites(),0);
174 BOOST_REQUIRE_EQUAL(ps.size(),0);
178 BOOST_AUTO_TEST_CASE( to_lower )
180 std::vector<double> pos = {1,2,3,4,5};
181 std::vector<std::string> data = {
"AAAAA",
187 ps2(copyPolyTable(ps));
191 std::transform(d.begin(),
194 [](
char & ch) {
return std::tolower(ch); });
198 BOOST_REQUIRE( ps != ps2 );
202 std::transform(d.begin(),
205 [](
char & ch) {
return std::toupper(ch); });
208 BOOST_REQUIRE( ps == ps2 );
211 BOOST_AUTO_TEST_CASE( to_lower2 )
213 std::vector<double> pos = {1,2,3,4,5};
214 std::vector<std::string> data = {
"AAAAA",
220 ps2(copyPolyTable(ps));
226 ch = std::tolower(ch);
231 BOOST_REQUIRE( ps != ps2 );
237 ch = std::toupper(ch);
241 BOOST_REQUIRE( ps == ps2 );
292 BOOST_AUTO_TEST_CASE( remove_multi )
294 std::vector<double> pos = {1,2,3,4,5};
295 std::vector<std::string> data = {
"TAAAA",
302 ps=removeMultiHits(ps);
304 BOOST_REQUIRE_EQUAL( ps.numsites(), 4 );
314 BOOST_AUTO_TEST_CASE( remove_multi_ingroup )
316 std::vector<double> pos = {1,2,3,4,5};
317 std::vector<std::string> data = {
"CAAAA",
324 ps=removeMultiHits(ps,
true,0);
326 BOOST_REQUIRE_EQUAL( ps.numsites(), 5 );
334 BOOST_AUTO_TEST_CASE( remove_multi_ingroup2 )
336 std::vector<double> pos = {1,2,3,4,5};
337 std::vector<std::string> data = {
"CAAAA",
343 ps=removeMultiHits(ps,
true,1);
344 BOOST_REQUIRE_EQUAL( ps.numsites(), 4 );
347 BOOST_AUTO_TEST_CASE( remove_ambig )
349 std::vector<double> pos = {1,2,3,4,5};
351 std::vector<std::string> data = {
"QAAAA",
357 ps=removeAmbiguous(ps);
359 BOOST_REQUIRE_EQUAL( ps.numsites(), 4 );
362 BOOST_AUTO_TEST_CASE( remove_ambig2 )
364 std::vector<double> pos = {1,2,3,4,5};
366 std::vector<std::string> data = {
"QAAAA",
374 ps=removeAmbiguous(ps,
true,0);
376 BOOST_REQUIRE_EQUAL( ps.numsites(), 5 );
379 BOOST_AUTO_TEST_CASE( remove_ambig3 )
381 std::vector<double> pos = {1,2,3,4,5};
383 std::vector<std::string> data = {
"QAAAA",
391 ps=removeAmbiguous(ps,
true,1);
393 BOOST_REQUIRE_EQUAL( ps.numsites(), 4 );
398 BOOST_AUTO_TEST_CASE( contains_char )
400 std::vector<double> pos = {1,2,3,4,5};
402 std::vector<std::string> data = {
"QAAAA",
410 for(
auto c : {
'Q',
'A',
'G',
'T',
'C' } )
416 for(
auto c : {
'-',
'N',
'K',
'?' } )
423 BOOST_AUTO_TEST_CASE( is_valid )
425 std::vector<double> pos = {1,2,3,4,5};
427 std::vector<std::string> data = {
"QAAAA",
436 ps=removeAmbiguous(ps);
467 BOOST_AUTO_TEST_CASE( remove_gaps )
469 std::vector<double> pos = {1,2,3,4,5};
471 std::vector<std::string> data = {
"-AAAA",
478 ps=Sequence::removeGaps(ps);
480 BOOST_REQUIRE_EQUAL( ps.numsites(), 4 );
483 BOOST_AUTO_TEST_CASE( remove_invariant )
485 std::vector<double> pos = {1,2,3,4,5};
487 std::vector<std::string> data = {
"AAAAA",
495 ps =Sequence::removeInvariantPos(ps);
497 BOOST_REQUIRE_EQUAL( ps.numsites(), 5 );
500 ps=Sequence::removeInvariantPos(ps,
true,3);
501 BOOST_REQUIRE_EQUAL( ps.numsites(), 2 );
505 BOOST_AUTO_TEST_SUITE_END()
bool polyTableValid(const PolyTable *t) __attribute__((deprecated))
Polymorphism tables for sequence data.
The namespace in which this library resides.
bool containsCharacter(const PolyTable *t, const char ch) __attribute__((deprecated))
Site-major variation tables in ASCII format.
Sequence::PolySites, generates polymorphism tables from data.
Declaration of Sequence::Fasta streams.
Operations on non-const Sequence::PolyTable objects.