libsequence  1.9.5
Seq8test.cc
Go to the documentation of this file.
1 
2 #include <Sequence/Seq8.hpp>
3 #include <Sequence/SeqExceptions.hpp>
4 #include <boost/test/unit_test.hpp>
5 #include <algorithm>
6 #include <iterator>
7 #include <sstream>
8 #include <iostream>
9 BOOST_AUTO_TEST_CASE( create_1 )
10 {
11  std::string seq("ATGCN");
12  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet);
13 
14  BOOST_CHECK_EQUAL(seq.size(),s8.size());
15 
16  for( unsigned i = 0 ; i < seq.size() ; ++i )
17  {
18  BOOST_CHECK_EQUAL( seq[i],s8[i] );
19  }
20 
21  BOOST_CHECK_EQUAL( seq, s8.unpack() );
22 }
23 
24 BOOST_AUTO_TEST_CASE( create_2 )
25 {
26  std::string seq("ATGCNX");
27  BOOST_CHECK_THROW(Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
28  Sequence::SeqException);
29 
30 }
31 
32 BOOST_AUTO_TEST_CASE( create_3 )
33 {
34  std::string seq("ATGCNW"); //valid DNA, invalid POLY chars
35  BOOST_CHECK_THROW(Sequence::Seq8 s8(std::cref(seq), Sequence::dna_poly_alphabet),
36  Sequence::SeqException);
37 
38 }
39 
40 BOOST_AUTO_TEST_CASE( assign_1 )
41 {
42  std::string seq("ATGCN");
43  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
44  s8_2(s8);
45 
46  BOOST_CHECK(s8==s8_2);
47 }
48 
49 BOOST_AUTO_TEST_CASE( assign_2 )
50 {
51  std::string seq("ATGCN");
52  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
53  s8_2 = s8;
54 
55  BOOST_CHECK(s8==s8_2);
56 }
57 
58 BOOST_AUTO_TEST_CASE( assign_3 )
59 {
60  std::string seq("ATGCN");
61  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
62  s8_2(std::move(s8));
63 
64  BOOST_CHECK_EQUAL( s8.second.size(), 0 );
65 
66  BOOST_CHECK_EQUAL(seq.size(),s8_2.size());
67 
68  for( unsigned i = 0 ; i < seq.size() ; ++i )
69  {
70  BOOST_CHECK_EQUAL( seq[i],s8_2[i] );
71  }
72 }
73 
74 BOOST_AUTO_TEST_CASE( assign_4 )
75 {
76  std::string seq("ATGCN");
77  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
78  s8_2 = std::move(s8);
79 
80  BOOST_CHECK_EQUAL( s8.second.size(), 0 );
81 
82  BOOST_CHECK_EQUAL(seq.size(),s8_2.size());
83 
84  for( unsigned i = 0 ; i < seq.size() ; ++i )
85  {
86  BOOST_CHECK_EQUAL( seq[i],s8_2[i] );
87  }
88 }
89 
90 
91 BOOST_AUTO_TEST_CASE( IO_1 )
92 {
93  std::string seq("ATGCN");
94  Sequence::Seq8 s8(std::cref(seq), Sequence::dna_alphabet),
95  s8_2;
96 
97  std::ostringstream o;
98  o << s8;
99  std::istringstream i(o.str());
100  i >> s8_2;
101  BOOST_CHECK( s8.first == s8_2.first );
102  BOOST_CHECK( s8.second == s8_2.second );
103  BOOST_CHECK_EQUAL( s8.unpack() , s8_2.unpack() );
104 }
105 BOOST_AUTO_TEST_SUITE_END()
106 
const alphabet_t dna_alphabet
Alphabet for DNA sequences Valid DNA characters. Upper-case only. Only - is accepted as gap character...
Definition: SeqAlphabets.cc:8
const alphabet_t dna_poly_alphabet
Alphabet for polymorphism (SNP) analysis. 16 characters are used so that we may encode 2 nucleotides ...
Definition: SeqAlphabets.cc:13