7 #include <boost/test/unit_test.hpp> 12 BOOST_AUTO_TEST_SUITE(PolyTableConversionsTest)
14 BOOST_AUTO_TEST_CASE( make_a_table_from_strings )
16 std::vector< std::string >
20 BOOST_REQUIRE( !data.empty() );
21 BOOST_REQUIRE_EQUAL( data.size(), 2 );
22 BOOST_REQUIRE_EQUAL( data[0].size(),5 );
23 BOOST_REQUIRE_EQUAL( data[0].length(),5 );
24 BOOST_REQUIRE( Sequence::Alignment::IsAlignment(data) );
26 BOOST_REQUIRE_EQUAL( ps.numsites(), 2 );
29 BOOST_AUTO_TEST_CASE( make_a_table_from_Fasta )
31 std::vector< Sequence::Fasta >
35 BOOST_REQUIRE( !data.empty() );
36 BOOST_REQUIRE_EQUAL( data.size(), 2 );
37 BOOST_REQUIRE_EQUAL( data[0].length(),5 );
38 BOOST_REQUIRE( Sequence::Alignment::IsAlignment(data) );
40 BOOST_REQUIRE_EQUAL( ps.numsites(), 2 );
43 BOOST_AUTO_TEST_CASE( conversion1 )
45 std::vector< Sequence::Fasta >
52 ps2.assign(ps.sbegin(),ps.send());
54 BOOST_REQUIRE( ps == ps2 );
56 ps.assign(ps2.sbegin(),ps2.send());
58 BOOST_REQUIRE( ps == ps2 );
61 BOOST_AUTO_TEST_CASE( conversion2 )
63 std::vector< Sequence::Fasta >
69 ps = Sequence::polyTableToBinary(ps);
73 BOOST_REQUIRE(ps == sd);
76 BOOST_AUTO_TEST_CASE( conversion3 )
78 std::vector< Sequence::Fasta >
85 ss.assign(ps.sbegin(),ps.send());
86 BOOST_REQUIRE( ss.label(0) !=
"anc" );
87 ss.set_outgroup(
true);
89 BOOST_REQUIRE_EQUAL( ss.label(0) ,
"anc" );
91 BOOST_REQUIRE_THROW( ss.label(ss.size()), std::out_of_range );
94 BOOST_AUTO_TEST_CASE( conversion2_throw )
96 std::vector< Sequence::Fasta >
107 BOOST_AUTO_TEST_CASE( const_construction_1 )
109 std::vector< Sequence::Fasta >
115 std::vector<double> pos;
116 std::vector<std::string> snps;
117 std::copy( ps.pbegin(), ps.pend(),
118 std::back_inserter(pos) );
119 std::copy( ps.begin(), ps.end(),
120 std::back_inserter(snps) );
124 BOOST_CHECK_EQUAL( pos.size(), ps2.numsites() );
125 BOOST_CHECK_EQUAL( snps.size(), ps2.size() );
126 BOOST_REQUIRE_EQUAL( ps.numsites() , ps2.numsites() );
127 BOOST_REQUIRE_EQUAL( ps.size() , ps2.size() );
128 BOOST_REQUIRE( ps == ps2 );
131 BOOST_AUTO_TEST_CASE( const_construction_2 )
133 std::vector< Sequence::Fasta >
139 std::vector<double> pos;
140 std::vector<std::string> snps;
141 std::copy( ps.pbegin(), ps.pend(),
142 std::back_inserter(pos) );
143 std::copy( ps.begin(), ps.end(),
144 std::back_inserter(snps) );
154 BOOST_CHECK_EQUAL( pos.size(), ps2.numsites() );
155 BOOST_CHECK_EQUAL( snps.size(), ps2.size() );
156 BOOST_REQUIRE_EQUAL( ps.numsites() , ps2.numsites() );
157 BOOST_REQUIRE_EQUAL( ps.size() , ps2.size() );
158 BOOST_REQUIRE( ps == ps2 );
164 BOOST_CHECK_EQUAL( pos.size(), 0 );
165 BOOST_CHECK_EQUAL( snps.size(), 0 );
166 BOOST_REQUIRE_EQUAL( ps.numsites() , ps2.numsites() );
167 BOOST_REQUIRE_EQUAL( ps.size() , ps2.size() );
168 BOOST_REQUIRE( ps == ps2 );
172 BOOST_AUTO_TEST_CASE( move_construction_1 )
174 std::vector< Sequence::Fasta >
180 std::vector<double> pos;
181 std::vector<std::string> snps;
182 std::copy( ps.pbegin(), ps.pend(),
183 std::back_inserter(pos) );
184 std::copy( ps.begin(), ps.end(),
185 std::back_inserter(snps) );
191 BOOST_CHECK_EQUAL( pos.size(), 0 );
192 BOOST_CHECK_EQUAL( snps.size(), 0 );
193 BOOST_REQUIRE_EQUAL( ps.numsites() , ps2.numsites() );
194 BOOST_REQUIRE_EQUAL( ps.size() , ps2.size() );
195 BOOST_REQUIRE( ps == ps2 );
198 BOOST_AUTO_TEST_CASE( move_construction_2 )
200 std::vector< Sequence::Fasta >
209 BOOST_CHECK(ps.empty());
212 BOOST_AUTO_TEST_CASE( move_construction_3 )
214 std::vector< Sequence::Fasta >
225 BOOST_CHECK(ps.empty());
228 BOOST_AUTO_TEST_CASE( move_construction_4 )
230 std::ifstream in(
"data/single_ms.txt");
234 BOOST_CHECK(d.empty());
237 BOOST_AUTO_TEST_CASE( move_construction_5 )
239 std::ifstream in(
"data/single_ms.txt");
243 BOOST_CHECK(d.empty());
246 BOOST_AUTO_TEST_CASE(test_swap)
248 std::vector< Sequence::Fasta >
257 BOOST_CHECK(ps.empty());
258 BOOST_CHECK(!ps2.empty());
261 BOOST_AUTO_TEST_SUITE_END()
Polymorphism tables for sequence data.
Declaration of namespace Sequence::Alignment.
Declaration of Sequence::SimpleSNP, a polymorphism table stream in a "spreadsheet" format...
Sequence::PolySites, generates polymorphism tables from data.
Declaration of Sequence::Fasta streams.
Declaration of Sequence::SimData, a class representing polymorphism data from coalescent simulations ...
Data from coalescent simulations.
Operations on non-const Sequence::PolyTable objects.