14 #include <boost/test/unit_test.hpp> 21 BOOST_AUTO_TEST_SUITE(AlignmentTest)
23 BOOST_AUTO_TEST_CASE(IsAlignmentFasta)
25 std::vector<Sequence::Fasta> vf
30 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
true);
32 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
true);
34 vf[0].seq.erase(std::remove(vf[0].seq.begin(), vf[0].seq.end(),
'-'),
36 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
false);
39 BOOST_AUTO_TEST_CASE(IsAlignmentString)
41 std::vector<std::string> vf
42 = { std::string(
"ATG"), std::string(
"AGC"), std::string(
"GTC"),
43 std::string(
"ATT"), std::string(
"AAC") };
45 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
true);
47 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
true);
49 vf[0].erase(std::remove(vf[0].begin(), vf[0].end(),
'-'), vf[0].end());
50 BOOST_REQUIRE_EQUAL(Sequence::Alignment::IsAlignment(vf),
false);
53 BOOST_AUTO_TEST_CASE(GetDataFasta)
55 const char* fn =
"GetDataText.txt";
57 std::vector<Sequence::Fasta> vf
61 BOOST_REQUIRE_NO_THROW(
63 std::copy(vf.begin(), vf.end(),
64 std::ostream_iterator<Sequence::Fasta>(o,
"\n"));
67 Sequence::Alignment::GetData(vf2, fn); BOOST_REQUIRE(vf == vf2);
68 BOOST_REQUIRE(Sequence::Alignment::IsAlignment(vf2)); unlink(fn););
71 BOOST_AUTO_TEST_CASE(GetDataFastaStream)
73 const char* fn =
"GetDataText.txt";
75 std::vector<Sequence::Fasta> vf
79 BOOST_REQUIRE_NO_THROW(
81 std::copy(vf.begin(), vf.end(),
82 std::ostream_iterator<Sequence::Fasta>(o,
"\n"));
85 std::ifstream in(fn); Sequence::Alignment::GetData(vf2, in);
86 in.close(); BOOST_REQUIRE(vf == vf2);
87 BOOST_REQUIRE(Sequence::Alignment::IsAlignment(vf2)); unlink(fn););
90 BOOST_AUTO_TEST_CASE(GetDataString)
92 const char* fn =
"GetDataText.txt";
94 std::vector<std::string> vf = {
"ATG",
"ATC" }, vf2;
96 BOOST_REQUIRE_NO_THROW(
97 std::ofstream o(fn); std::copy(
98 vf.begin(), vf.end(), std::ostream_iterator<std::string>(o,
"\n"));
99 o.close(); Sequence::Alignment::GetData(vf2, fn);
100 BOOST_REQUIRE(vf == vf2);
101 BOOST_REQUIRE(Sequence::Alignment::IsAlignment(vf2)); unlink(fn););
104 BOOST_AUTO_TEST_CASE(GetDataStringStream)
106 const char* fn =
"GetDataText.txt";
108 std::vector<std::string> vf = {
"ATG",
"ATC" }, vf2;
110 BOOST_REQUIRE_NO_THROW(
111 std::ofstream o(fn); std::copy(
112 vf.begin(), vf.end(), std::ostream_iterator<std::string>(o,
"\n"));
113 o.close(); std::ifstream in(fn); Sequence::Alignment::GetData(vf2, in);
114 in.close(); BOOST_REQUIRE(vf == vf2);
115 BOOST_REQUIRE(Sequence::Alignment::IsAlignment(vf2)); unlink(fn););
118 BOOST_AUTO_TEST_CASE(ReadNFasta)
120 const char* fn =
"GetDataText.txt";
122 std::vector<Sequence::Fasta> vf
128 BOOST_REQUIRE_NO_THROW(
130 std::copy(vf.begin(), vf.end(),
131 std::ostream_iterator<Sequence::Fasta>(o,
"\n"));
134 for (decltype(vf.size()) n = 0; n < vf.size(); ++n) {
136 std::ifstream in(fn);
137 Sequence::Alignment::ReadNObjects(vf2, n, in);
138 BOOST_REQUIRE_EQUAL(vf2.size(), n);
143 std::copy(vf.begin(), vf.end(),
144 std::ostream_iterator<Sequence::Fasta>(o,
"\n"));
147 std::ifstream in(fn);
148 BOOST_CHECK_NO_THROW(
149 Sequence::Alignment::ReadNObjects(vf2, vf.size() + 1, in));
150 BOOST_CHECK_EQUAL(vf2.size(), vf.size());
155 BOOST_AUTO_TEST_CASE(ReadNString)
157 const char* fn =
"GetDataText.txt";
159 std::vector<std::string> vf
160 = { std::string(
"ATG"), std::string(
"AGC"), std::string(
"GTC"),
161 std::string(
"ATT"), std::string(
"AAC") },
164 BOOST_REQUIRE_NO_THROW(
165 std::ofstream o(fn); std::copy(
166 vf.begin(), vf.end(), std::ostream_iterator<std::string>(o,
"\n"));
169 for (decltype(vf.size()) n = 0; n < vf.size(); ++n) {
171 std::ifstream in(fn);
172 Sequence::Alignment::ReadNObjects(vf2, n, in);
173 BOOST_REQUIRE_EQUAL(vf2.size(), n);
178 std::copy(vf.begin(), vf.end(),
179 std::ostream_iterator<std::string>(o,
"\n"));
182 std::ifstream in(fn);
183 BOOST_CHECK_NO_THROW(
184 Sequence::Alignment::ReadNObjects(vf2, vf.size() + 1, in));
185 BOOST_CHECK_EQUAL(vf2.size(), vf.size());
190 BOOST_AUTO_TEST_CASE(GappedFasta)
192 std::vector<Sequence::Fasta> vf
197 BOOST_REQUIRE_EQUAL(Sequence::Alignment::Gapped(vf),
false);
199 BOOST_REQUIRE_EQUAL(Sequence::Alignment::Gapped(vf),
true);
202 BOOST_AUTO_TEST_CASE(GappedString)
204 std::vector<std::string> vf
205 = { std::string(
"ATG"), std::string(
"AGC"), std::string(
"GTC"),
206 std::string(
"ATT"), std::string(
"AAC") };
208 BOOST_REQUIRE_EQUAL(Sequence::Alignment::Gapped(vf),
false);
210 BOOST_REQUIRE_EQUAL(Sequence::Alignment::Gapped(vf),
true);
213 BOOST_AUTO_TEST_CASE(UnGappedLengthFasta)
215 std::vector<Sequence::Fasta> vf
220 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 3);
222 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
225 BOOST_AUTO_TEST_CASE(UnGappedLengthString)
227 std::vector<std::string> vf
228 = { std::string(
"ATG"), std::string(
"AGC"), std::string(
"GTC"),
229 std::string(
"ATT"), std::string(
"AAC") };
231 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 3);
233 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
236 BOOST_AUTO_TEST_CASE(RemoveGapsFasta)
238 std::vector<Sequence::Fasta> vf
245 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
247 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
248 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2),
251 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
254 BOOST_REQUIRE_EQUAL(vf[i][0], vf2[i][0]);
256 BOOST_REQUIRE_EQUAL(vf[i][2], vf2[i][1]);
260 BOOST_AUTO_TEST_CASE(RemoveGapsString)
262 std::vector<std::string> vf
263 = { std::string(
"ATG"), std::string(
"AGC"), std::string(
"GTC"),
264 std::string(
"ATT"), std::string(
"AAC") };
268 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
270 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
271 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2),
274 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
277 BOOST_REQUIRE_EQUAL(vf[i][0], vf2[i][0]);
279 BOOST_REQUIRE_EQUAL(vf[i][2], vf2[i][1]);
283 BOOST_AUTO_TEST_CASE(RemoveTerminalGapsFasta)
285 std::vector<Sequence::Fasta> vf
291 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
293 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
296 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
298 BOOST_REQUIRE_EQUAL(vf[i].substr(0, 3), vf2[i].seq);
300 BOOST_REQUIRE_EQUAL(vf[i].substr(0, 3), std::string(vf2[i]));
304 BOOST_AUTO_TEST_CASE(RemoveTerminalGapString)
306 std::vector<std::string> vf
307 = { std::string(
"A-TG"), std::string(
"ACGC"), std::string(
"GCTC"),
308 std::string(
"ACTT"), std::string(
"ACA-") };
311 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
313 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 2);
316 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
318 BOOST_REQUIRE_EQUAL(vf[i].substr(0, 3), vf2[i]);
322 BOOST_AUTO_TEST_CASE(TrimFasta)
324 std::vector<Sequence::Fasta> vf
329 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
332 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 1);
334 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
336 BOOST_REQUIRE_EQUAL(vf[i].seq.substr(1, 2), vf2[i].seq);
340 BOOST_AUTO_TEST_CASE(TrimString)
342 std::vector<std::string> vf
343 = { std::string(
"A-TG"), std::string(
"ACGC"), std::string(
"GCTC"),
344 std::string(
"ACTT"), std::string(
"ACA-") };
346 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
349 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 1);
351 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
353 BOOST_REQUIRE_EQUAL(vf[i].substr(1, 2), vf2[i]);
357 BOOST_AUTO_TEST_CASE(TrimComplementFasta)
359 std::vector<Sequence::Fasta> vf
364 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
368 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 1);
370 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
372 BOOST_REQUIRE_EQUAL(vf[i][0], vf2[i][0]);
373 BOOST_REQUIRE_EQUAL(vf[i][3], vf2[i][1]);
377 BOOST_AUTO_TEST_CASE(TrimComplementString)
379 std::vector<std::string> vf
380 = { std::string(
"A-TG"), std::string(
"ACGC"), std::string(
"GCTC"),
381 std::string(
"ACTT"), std::string(
"ACA-") };
383 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf), 2);
387 BOOST_REQUIRE_EQUAL(Sequence::Alignment::UnGappedLength(vf2), 1);
389 for (decltype(vf.size()) i = 0; i < vf.size(); ++i)
391 BOOST_REQUIRE_EQUAL(vf[i][0], vf2[i][0]);
392 BOOST_REQUIRE_EQUAL(vf[i][3], vf2[i][1]);
396 BOOST_AUTO_TEST_CASE(TrimComplementSameResults)
398 std::vector<Sequence::Fasta> vf
402 std::vector<std::string> vs;
404 std::copy(vf.begin(), vf.end(), std::back_inserter(vs));
411 for (decltype(vf2.size()) i = 0; i < vf2.size(); ++i)
413 BOOST_REQUIRE_EQUAL(std::string(vf2[i]), vs2[i]);
414 BOOST_REQUIRE_EQUAL(vf2[i].seq, vs2[i]);
417 BOOST_AUTO_TEST_SUITE_END()
void RemoveTerminalGaps(std::vector< std::string > &data)
std::vector< std::string > TrimComplement(const std::vector< std::string > &data, const std::vector< int > &sites)
Declaration of namespace Sequence::Alignment.
void RemoveGaps(std::vector< std::string > &data)
std::vector< std::string > Trim(const std::vector< std::string > &data, const std::vector< int > &sites)
Declaration of Sequence::Fasta streams.