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