1e2efe24276a90b130e7819e0d6466bf8365cdc7
[mussa.git] / alg / tsf / test_tsf.cpp
1 #define BOOST_AUTO_TEST_MAIN
2 #include <boost/test/auto_unit_test.hpp>
3
4 #include "trivial_filter.hpp"
5
6 BOOST_AUTO_TEST_CASE( test_nt_map )
7 {
8   BOOST_CHECK_EQUAL( nt_map('A'), A );
9   BOOST_CHECK_EQUAL( nt_map('a'), A );
10   BOOST_CHECK_EQUAL( nt_map('T'), T );
11   BOOST_CHECK_EQUAL( nt_map('t'), T );
12   BOOST_CHECK_EQUAL( nt_map('G'), G );
13   BOOST_CHECK_EQUAL( nt_map('g'), G );
14   BOOST_CHECK_EQUAL( nt_map('C'), C );
15   BOOST_CHECK_EQUAL( nt_map('c'), C );
16   BOOST_CHECK_EQUAL( nt_map('U'), U );
17   BOOST_CHECK_EQUAL( nt_map('u'), U );
18   BOOST_CHECK_EQUAL( nt_map('N'), N );
19   BOOST_CHECK_EQUAL( nt_map('n'), N );
20   BOOST_CHECK_EQUAL( nt_map('X'), X );
21   BOOST_CHECK_EQUAL( nt_map('x'), X );
22 }
23
24 BOOST_AUTO_TEST_CASE( test_generate_dna_pattern_1mer )
25 {
26   TSFLookupTable table(1,4);
27   BOOST_CHECK( table.states() > 0);
28
29   const int failed_state =  TSFLookupTable::failed_state;
30   const int accept_state = TSFLookupTable::accept_state;
31   
32
33   int a_state = table.next(TSFLookupTable::start_state, A);
34   int t_state = table.next(TSFLookupTable::start_state, T);
35   int g_state = table.next(TSFLookupTable::start_state, G);
36   int c_state = table.next(TSFLookupTable::start_state, C);
37
38   BOOST_CHECK(a_state != t_state);
39   BOOST_CHECK(a_state != g_state);
40   BOOST_CHECK(a_state != c_state);
41   BOOST_CHECK(t_state != g_state);
42   BOOST_CHECK(t_state != c_state);
43   BOOST_CHECK(g_state != c_state);
44
45   BOOST_CHECK_EQUAL( table.next(TSFLookupTable::start_state, A), a_state );
46   BOOST_CHECK_EQUAL( table.next(a_state, A), a_state+1 );
47   BOOST_CHECK_EQUAL( table.next(a_state, G), failed_state);
48   BOOST_CHECK_EQUAL( table.next(a_state+1, A), a_state+2 );
49   BOOST_CHECK_EQUAL( table.next(a_state+2, A), a_state+3 );
50   BOOST_CHECK_EQUAL( table.next(a_state+3, A), a_state+3 );
51   BOOST_CHECK_EQUAL( table.next(a_state+3, G), accept_state);
52
53   BOOST_CHECK_EQUAL( table.next(TSFLookupTable::start_state, G), g_state );
54   BOOST_CHECK_EQUAL( table.next(g_state, G), g_state+1 );
55   BOOST_CHECK_EQUAL( table.next(g_state, T), failed_state);
56   BOOST_CHECK_EQUAL( table.next(g_state+1, G), g_state+2 );
57   BOOST_CHECK_EQUAL( table.next(g_state+2, G), g_state+3 );
58   BOOST_CHECK_EQUAL( table.next(g_state+3, G), g_state+3 );
59   BOOST_CHECK_EQUAL( table.next(g_state+3, C), accept_state);
60 }