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.