1 #include <boost/test/auto_unit_test.hpp>
7 #include "alg/mussa.hpp"
11 //! can we initialize a mussa object?
12 BOOST_AUTO_TEST_CASE( mussa_simple )
15 BOOST_CHECK_EQUAL(m.get_name(), "" );
16 BOOST_CHECK_EQUAL(m.get_window(), 0);
17 BOOST_CHECK_EQUAL(m.get_threshold(), 0);
18 BOOST_CHECK_EQUAL(m.get_analysis_mode(), Mussa::TransitiveNway);
19 m.set_name( "hello" );
20 BOOST_CHECK_EQUAL(m.get_name(), "hello" );
22 BOOST_CHECK_EQUAL(m.get_window(), 30);
24 BOOST_CHECK_EQUAL(m.get_threshold(), 21);
25 m.set_analysis_mode(Mussa::RadialNway);
26 BOOST_CHECK_EQUAL(m.get_analysis_mode(), Mussa::RadialNway);
29 BOOST_CHECK_EQUAL(m.get_name(), "" );
30 BOOST_CHECK_EQUAL(m.get_window(), 0);
31 BOOST_CHECK_EQUAL(m.get_threshold(), 0);
32 BOOST_CHECK_EQUAL(m.get_analysis_mode(), Mussa::TransitiveNway);
35 BOOST_AUTO_TEST_CASE( mussa_analysis_name )
38 m.set_analysis_mode( Mussa::TransitiveNway );
39 BOOST_CHECK_EQUAL( m.get_analysis_mode_name(), "Transitive" );
40 m.set_analysis_mode( Mussa::RadialNway );
41 BOOST_CHECK_EQUAL( m.get_analysis_mode_name(), "Radial" );
42 m.set_analysis_mode( Mussa::EntropyNway );
43 BOOST_CHECK_EQUAL( m.get_analysis_mode_name(), "Entropy" );
44 m.set_analysis_mode( Mussa::RecursiveNway);
45 BOOST_CHECK_EQUAL( m.get_analysis_mode_name(), "[deprecated] Recursive" );
48 BOOST_AUTO_TEST_CASE( mussa_sequences )
50 std::string s0("AAAANNNN");
51 std::string s1("GGGGNNNN");
52 std::string s2("TTTTNNNN");
55 analysis.add_a_seq(s0);
56 analysis.add_a_seq(s1);
57 analysis.add_a_seq(s2);
59 BOOST_CHECK_EQUAL( analysis.sequences().size(), 3 );
60 BOOST_CHECK_EQUAL( analysis.sequences()[0].get_seq(), s0);
61 BOOST_CHECK_EQUAL( analysis.sequences()[1].get_seq(), s1);
62 BOOST_CHECK_EQUAL( analysis.sequences()[2].get_seq(), s2);
65 // for some reason we can call nway once safely but it
66 // somehow changed things and caused a segfault
67 // fixed by adding a return statement in trans_path_search
68 BOOST_AUTO_TEST_CASE ( empty_mussa_set_threshold )
79 BOOST_AUTO_TEST_CASE( mussa_load_mupa )
83 m1.load_mupa_file( "mck3test.mupa" );
85 BOOST_CHECK_EQUAL( m1.get_name(), std::string("mck3test") );
86 BOOST_CHECK( m1.size() > 0 );
89 std::string saved_analysis_path("mck3test_w30_t20");
90 m2.load( saved_analysis_path );
93 BOOST_CHECK_EQUAL( m2.get_name(), saved_analysis_path );
94 BOOST_CHECK_EQUAL( m1.size(), m2.size() );
98 BOOST_AUTO_TEST_CASE( mussa_load_full_path )
102 const int bufsize = 1024;
103 char path_buf[bufsize];
104 getcwd(path_buf, bufsize);
105 std::string path(path_buf);
107 path += "/mck3test.mupa";
108 m1.load_mupa_file( path );
111 BOOST_CHECK( m1.size() > 0);
114 BOOST_AUTO_TEST_CASE( mussa_load_motif )
116 string data = "AAGG 1.0 1.0 0.0\n"
120 istringstream test_istream(data);
123 m1.add_a_seq("AAAAGGGGTTTT");
124 m1.add_a_seq("GGGCCCCTTGGTT");
125 m1.load_motifs(test_istream);
127 for (vector<Sequence>::const_iterator seq_i = m1.sequences().begin();
128 seq_i != m1.sequences().end();
131 BOOST_CHECK( seq_i->motifs().size() > 0 );