+#define BOOST_AUTO_TEST_MAIN
+#include <boost/test/auto_unit_test.hpp>
+
+#include "trivial_filter.hpp"
+
+BOOST_AUTO_TEST_CASE( test_nt_map )
+{
+ BOOST_CHECK_EQUAL( nt_map('A'), A );
+ BOOST_CHECK_EQUAL( nt_map('a'), A );
+ BOOST_CHECK_EQUAL( nt_map('T'), T );
+ BOOST_CHECK_EQUAL( nt_map('t'), T );
+ BOOST_CHECK_EQUAL( nt_map('G'), G );
+ BOOST_CHECK_EQUAL( nt_map('g'), G );
+ BOOST_CHECK_EQUAL( nt_map('C'), C );
+ BOOST_CHECK_EQUAL( nt_map('c'), C );
+ BOOST_CHECK_EQUAL( nt_map('U'), U );
+ BOOST_CHECK_EQUAL( nt_map('u'), U );
+ BOOST_CHECK_EQUAL( nt_map('N'), N );
+ BOOST_CHECK_EQUAL( nt_map('n'), N );
+ BOOST_CHECK_EQUAL( nt_map('X'), X );
+ BOOST_CHECK_EQUAL( nt_map('x'), X );
+}
+
+BOOST_AUTO_TEST_CASE( test_generate_dna_pattern_1mer )
+{
+ TSFLookupTable table(1,4);
+ BOOST_CHECK( table.states() > 0);
+
+ const int failed_state = TSFLookupTable::failed_state;
+ const int accept_state = TSFLookupTable::accept_state;
+
+
+ int a_state = table.next(TSFLookupTable::start_state, A);
+ int t_state = table.next(TSFLookupTable::start_state, T);
+ int g_state = table.next(TSFLookupTable::start_state, G);
+ int c_state = table.next(TSFLookupTable::start_state, C);
+
+ BOOST_CHECK(a_state != t_state);
+ BOOST_CHECK(a_state != g_state);
+ BOOST_CHECK(a_state != c_state);
+ BOOST_CHECK(t_state != g_state);
+ BOOST_CHECK(t_state != c_state);
+ BOOST_CHECK(g_state != c_state);
+
+ BOOST_CHECK_EQUAL( table.next(TSFLookupTable::start_state, A), a_state );
+ BOOST_CHECK_EQUAL( table.next(a_state, A), a_state+1 );
+ BOOST_CHECK_EQUAL( table.next(a_state, G), failed_state);
+ BOOST_CHECK_EQUAL( table.next(a_state+1, A), a_state+2 );
+ BOOST_CHECK_EQUAL( table.next(a_state+2, A), a_state+3 );
+ BOOST_CHECK_EQUAL( table.next(a_state+3, A), a_state+3 );
+ BOOST_CHECK_EQUAL( table.next(a_state+3, G), accept_state);
+
+ BOOST_CHECK_EQUAL( table.next(TSFLookupTable::start_state, G), g_state );
+ BOOST_CHECK_EQUAL( table.next(g_state, G), g_state+1 );
+ BOOST_CHECK_EQUAL( table.next(g_state, T), failed_state);
+ BOOST_CHECK_EQUAL( table.next(g_state+1, G), g_state+2 );
+ BOOST_CHECK_EQUAL( table.next(g_state+2, G), g_state+3 );
+ BOOST_CHECK_EQUAL( table.next(g_state+3, G), g_state+3 );
+ BOOST_CHECK_EQUAL( table.next(g_state+3, C), accept_state);
+}