6 #include <boost/test/unit_test.hpp> 13 const char* input_data;
14 const char* phylip_input_data;
16 : input_data{
"data/CG15644-Z.aln" }, phylip_input_data{
17 "data/phylip_input.txt" 26 BOOST_FIXTURE_TEST_SUITE(AlignStreamTest, infilenames)
29 BOOST_AUTO_TEST_CASE(from_vector1)
31 std::vector<Sequence::Fasta> vf
34 BOOST_REQUIRE_NO_THROW(
clustal c(vf);
35 BOOST_CHECK_EQUAL(vf.size(), c.size()););
38 BOOST_AUTO_TEST_CASE(from_vector2)
40 std::vector<Sequence::Fasta> vf
43 BOOST_REQUIRE_NO_THROW(
phylip c(vf);
44 BOOST_CHECK_EQUAL(vf.size(), c.size()););
47 BOOST_AUTO_TEST_CASE(from_vector3)
49 std::vector<Sequence::Fasta> vf
51 BOOST_REQUIRE_NO_THROW(
clustal c(std::move(vf)); BOOST_CHECK(vf.empty());
52 BOOST_REQUIRE_EQUAL(c.size(), 2););
55 BOOST_AUTO_TEST_CASE(from_vector4)
57 std::vector<Sequence::Fasta> vf
59 BOOST_REQUIRE_NO_THROW(
phylip c(std::move(vf)); BOOST_CHECK(vf.empty());
60 BOOST_REQUIRE_EQUAL(c.size(), 2););
63 BOOST_AUTO_TEST_CASE(copy_construct1)
65 std::vector<Sequence::Fasta> vf
68 BOOST_REQUIRE_NO_THROW(
clustal c2(c);
69 BOOST_REQUIRE_EQUAL(c.size(), c2.size());
70 for (decltype(c.size()) i = 0; i < c.size();
71 ++i) { BOOST_REQUIRE(c[i] == c2[i]); });
74 BOOST_AUTO_TEST_CASE(copy_construct2)
76 std::vector<Sequence::Fasta> vf
79 BOOST_REQUIRE_NO_THROW(
phylip c2(c);
80 BOOST_REQUIRE_EQUAL(c.size(), c2.size());
81 for (decltype(c.size()) i = 0; i < c.size();
82 ++i) { BOOST_REQUIRE(c[i] == c2[i]); });
86 BOOST_AUTO_TEST_CASE(move_construct1)
88 std::vector<Sequence::Fasta> vf
91 BOOST_CHECK_EQUAL(vf.size(), 0);
93 BOOST_REQUIRE_EQUAL(c2.size(), 2);
94 BOOST_CHECK_EQUAL(c.size(), 0);
98 BOOST_AUTO_TEST_CASE(move_construct2)
100 std::vector<Sequence::Fasta> vf
103 BOOST_CHECK_EQUAL(vf.size(), 0);
105 BOOST_REQUIRE_EQUAL(c2.size(), 2);
106 BOOST_CHECK_EQUAL(c.size(), 0);
110 BOOST_AUTO_TEST_CASE(move_construct3)
112 std::vector<Sequence::Fasta> vf
115 BOOST_CHECK_EQUAL(vf.size(), 0);
117 BOOST_REQUIRE_EQUAL(c2.size(), 2);
118 BOOST_CHECK_EQUAL(c.size(), 0);
122 BOOST_AUTO_TEST_CASE(move_construct4)
124 std::vector<Sequence::Fasta> vf
127 BOOST_CHECK_EQUAL(vf.size(), 0);
129 BOOST_REQUIRE_EQUAL(c2.size(), 2);
130 BOOST_CHECK_EQUAL(c.size(), 0);
133 BOOST_AUTO_TEST_CASE(should_throw1)
136 std::vector<Sequence::Fasta> vf
139 BOOST_REQUIRE_THROW(
clustal c(vf), std::runtime_error);
140 BOOST_REQUIRE_THROW(
phylip c(vf), std::runtime_error);
141 BOOST_REQUIRE_THROW(
clustal c(std::vector<Sequence::Fasta>(
145 BOOST_REQUIRE_THROW(
clustal c(std::move(std::vector<Sequence::Fasta>(
151 BOOST_AUTO_TEST_CASE(should_throw2)
154 std::vector<Sequence::Fasta> vf
159 c[1].seq += std::string(
"ATGC");
162 BOOST_REQUIRE_EQUAL(c.IsAlignment(),
false);
165 BOOST_REQUIRE_THROW(
clustal c2(c), std::runtime_error);
168 BOOST_AUTO_TEST_CASE(should_throw3)
171 std::vector<Sequence::Fasta> vf
174 BOOST_REQUIRE_THROW(c.
assign(vf.begin(), vf.end()), std::runtime_error);
176 BOOST_REQUIRE_THROW(c.
assign(vf.cbegin(), vf.cend()), std::runtime_error);
182 BOOST_AUTO_TEST_CASE(clustalw_in)
184 std::ifstream in(input_data);
187 BOOST_REQUIRE_NO_THROW(in >> c >> std::ws;);
189 BOOST_REQUIRE(!c.
empty());
190 BOOST_REQUIRE_EQUAL(c.
size(), 10);
194 BOOST_AUTO_TEST_CASE(phylip_in)
196 std::ifstream in(phylip_input_data);
198 BOOST_REQUIRE_NO_THROW(in >> p >> std::ws;);
201 BOOST_AUTO_TEST_CASE(clustalw_convert)
203 std::ifstream in(input_data);
206 BOOST_REQUIRE_NO_THROW(in >> c >> std::ws;);
208 BOOST_REQUIRE(!c.
empty());
209 BOOST_REQUIRE_EQUAL(c.
size(), 10);
214 BOOST_REQUIRE(!p.
empty());
215 BOOST_REQUIRE_EQUAL(c.
size(), p.
size());
216 for (decltype(c.
size()) i = 0; i < c.
size(); ++i)
218 BOOST_REQUIRE_EQUAL(c[i], p[i]);
222 BOOST_AUTO_TEST_CASE(clustalw_convert2)
224 std::ifstream in(input_data);
227 BOOST_REQUIRE_NO_THROW(in >> c >> std::ws;);
229 BOOST_REQUIRE(!c.
empty());
230 BOOST_REQUIRE_EQUAL(c.
size(), 10);
235 BOOST_REQUIRE(!p.empty());
236 BOOST_REQUIRE_EQUAL(c.
size(), p.size());
237 for (decltype(c.
size()) i = 0; i < c.
size(); ++i)
239 BOOST_REQUIRE(c[i] == p[i]);
243 BOOST_AUTO_TEST_CASE(clustalw_reread)
245 std::ifstream in(input_data);
251 BOOST_REQUIRE(!c.
empty());
252 BOOST_REQUIRE_EQUAL(c.
size(), 10);
254 const char* outfile =
"clustalw_out_test.aln";
255 std::ofstream out(outfile);
263 BOOST_REQUIRE(!c2.
empty());
264 BOOST_REQUIRE_EQUAL(c.size(), c2.
size());
266 for (decltype(c.size()) i = 0; i < c.size(); ++i)
268 BOOST_REQUIRE(c[i] == c2[i]);
273 BOOST_AUTO_TEST_CASE(convert_write_read)
275 std::ifstream in(input_data);
282 const char* outfile =
"phylip_test.txt";
283 std::ofstream out(outfile);
284 BOOST_REQUIRE_NO_THROW(out << p <<
'\n';);
290 BOOST_REQUIRE_NO_THROW(in >> p2 >> std::ws);
291 BOOST_REQUIRE_EQUAL(p.
size(), p2.
size());
293 for (decltype(p.
size()) i = 0; i < p.
size(); ++i)
298 BOOST_REQUIRE(p[i] == p2[i]);
303 BOOST_AUTO_TEST_SUITE_END()
Sequence::phylipData – read in phylip alignments.
size_type size(void) const
Declaration of Sequence::Fasta streams.
Declaration of Sequence::ClustalW streams.
void assign(const_iterator beg, const_iterator end)