track where our analysis is saved and if the analysis is empty
[mussa.git] / alg / test / test_mussa.cpp
index d8b2ab51fdbf00b3d43db1f6387c25c5ee09c2a6..4b88c242e5ff4b5dfb8a6342cfeea1e3009c79fb 100644 (file)
@@ -1,4 +1,5 @@
 #include <boost/test/auto_unit_test.hpp>
+#include <boost/filesystem/path.hpp>
 #include <boost/filesystem/operations.hpp>
 namespace fs = boost::filesystem;
 #include <boost/assign/list_of.hpp>
@@ -19,6 +20,7 @@ using namespace std;
 BOOST_AUTO_TEST_CASE( mussa_simple )
 {
   Mussa m;
+  BOOST_CHECK_EQUAL(m.empty(), true);
   BOOST_CHECK_EQUAL(m.get_name(), "" );
   BOOST_CHECK_EQUAL(m.get_window(), 0);
   BOOST_CHECK_EQUAL(m.get_threshold(), 0);
@@ -38,6 +40,8 @@ BOOST_AUTO_TEST_CASE( mussa_simple )
   BOOST_CHECK_EQUAL(m.get_soft_threshold(), 25);
   m.set_analysis_mode(Mussa::RadialNway);
   BOOST_CHECK_EQUAL(m.get_analysis_mode(), Mussa::RadialNway);
+  // make sure our path is empty
+  BOOST_CHECK_EQUAL(m.get_analysis_path().string(), fs::path().string() );
     
   m.clear();
   BOOST_CHECK_EQUAL(m.get_name(), "" );
@@ -66,10 +70,12 @@ BOOST_AUTO_TEST_CASE( mussa_sequences )
   std::string s2("TTTTNNNN");
 
   Mussa analysis;
+  BOOST_CHECK_EQUAL(analysis.empty(), true);
   analysis.append_sequence(s0);
   analysis.append_sequence(s1);
   analysis.append_sequence(s2);
 
+  BOOST_CHECK_EQUAL( analysis.empty(), false);
   BOOST_CHECK_EQUAL( analysis.sequences().size(), 3 );
   BOOST_CHECK_EQUAL( *(analysis.sequences()[0]), s0);
   BOOST_CHECK_EQUAL( *(analysis.sequences()[1]), s1);
@@ -99,13 +105,23 @@ BOOST_AUTO_TEST_CASE( mussa_load_mupa )
   m1.load_mupa_file( mupa_path );
   m1.analyze();
   m1.save( result_path );
+  BOOST_CHECK_EQUAL( m1.empty(), false);
   BOOST_CHECK_EQUAL( m1.get_name(), std::string("mck3test") );
   BOOST_CHECK( m1.size() > 0 );
+  BOOST_CHECK_EQUAL( m1.get_analysis_path().string(), result_path.string());
 
   Mussa m2;
   m2.load( result_path );
+  BOOST_CHECK_EQUAL( m2.empty(), false);
   BOOST_CHECK_EQUAL( m2.get_name(), result_path.leaf() );
   BOOST_CHECK_EQUAL( m1.size(), m2.size() );
+  BOOST_CHECK_EQUAL( result_path.string(), m2.get_analysis_path().string() );
+
+  // check clear a bit
+  m2.clear();
+  BOOST_CHECK_EQUAL( m2.empty(), true);
+  BOOST_CHECK_EQUAL( m2.is_dirty(), false );
+  BOOST_CHECK_EQUAL( m2.get_analysis_path().string(), fs::path().string());
 }
 
 BOOST_AUTO_TEST_CASE( mussa_load_full_path )
@@ -118,9 +134,12 @@ BOOST_AUTO_TEST_CASE( mussa_load_full_path )
   BOOST_CHECK( m1.size() > 0);
   BOOST_CHECK_EQUAL( m1.get_window(), 30 );
   BOOST_CHECK_EQUAL( m1.get_threshold(), 20);
+  BOOST_CHECK_EQUAL( m1.is_dirty(), true);
+  BOOST_CHECK_EQUAL( m1.get_analysis_path().string(), "");
 }
 
-BOOST_AUTO_TEST_CASE( mussa_mupa_directory )
+// make sure we know that mupa files cannot be directories 
+BOOST_AUTO_TEST_CASE( mussa_mupa_is_file_not_directory )
 {
   fs::path curdir(".");
   Mussa m1;
@@ -135,11 +154,13 @@ BOOST_AUTO_TEST_CASE( mussa_load_analysis )
   m1.analyze();
 
   Mussa m2;
-  m2.load( fs::initial_path() / "mck3test_w30_t20");
+  fs::path analysis_path = fs::initial_path() / "mck3test_w30_t20";
+  m2.load( analysis_path );
 
   BOOST_CHECK_EQUAL( m1.size(), m2.size() );
   BOOST_CHECK_EQUAL( m1.get_window(), m2.get_window() );
   BOOST_CHECK_EQUAL( m1.get_threshold(), m2.get_threshold() );
+  BOOST_CHECK_EQUAL( m2.get_analysis_path().string(), analysis_path.string());
 }
 
 BOOST_AUTO_TEST_CASE( mussa_load_motif )