libsequence  1.9.5
SimpleSNPIO.cc
1 #include <Sequence/PolySites.hpp>
2 #include <Sequence/SimpleSNP.hpp>
3 #include <boost/test/unit_test.hpp>
4 #include <sstream>
5 #include <fstream>
6 #include <unistd.h>
7 
8 BOOST_AUTO_TEST_SUITE(SimpleSNPIOTest)
9 
10 BOOST_AUTO_TEST_CASE( polysites_io )
11 {
12  std::vector<double> pos = {1,2,3,4,5};
13  std::vector<std::string> data = {"AAAAA",
14  "AAGAA",
15  "CTGAA",
16  "NAACT"};
17 
18  Sequence::PolySites temp(std::move(pos),std::move(data));
19 
20  Sequence::SimpleSNP ps,ps2,ps3;
21  ps.assign(temp.sbegin(),temp.send());
22  ps3.assign(temp.sbegin(),temp.send());
23 
24  std::ostringstream o;
25  o << ps << '\n';
26  std::istringstream in(o.str());
27 
28  BOOST_REQUIRE_NO_THROW( in >> ps2 >> std::ws );
29 
30  BOOST_REQUIRE( ps == ps2 );
31 
32  const char * fn = "simplesnpio.txt";
33 
34  std::ofstream of(fn);
35  of << ps << '\n';
36  of.close();
37  std::ifstream inf(fn);
38  BOOST_REQUIRE_NO_THROW(inf >> ps2 >> std::ws);
39  BOOST_REQUIRE( ps == ps2 );
40  inf.close();
41  unlink(fn);
42 
43  const char * fn2 = "simplesnpio2.txt";
44  //Now, change the outgroup
45  ps.set_outgroup(true);
46  of.open(fn2);
47  of << ps << '\n';
48  of.close();
49  inf.open(fn2);
50  BOOST_REQUIRE_NO_THROW(inf >> ps2 >> std::ws);
51  inf.close();
52  BOOST_REQUIRE( ps == ps2 );
53  BOOST_REQUIRE( ps == ps3 );
54 
55  unlink(fn2);
56 }
57 BOOST_AUTO_TEST_SUITE_END()
Polymorphism tables for sequence data.
Definition: PolySites.hpp:33
Declaration of Sequence::SimpleSNP, a polymorphism table stream in a "spreadsheet" format...
Sequence::PolySites, generates polymorphism tables from data.
SNP table data format.