update sequence serialization to support the xml archive
[mussa.git] / alg / test / test_sequence.cpp
index 11beace88500dfce8d95db24a5d0d53970188e3e..70c585e6d440ef9b4777d606a9a62902ccbc9f99 100644 (file)
@@ -9,6 +9,8 @@ namespace fs=boost::filesystem;
 
 #include <boost/archive/text_oarchive.hpp>
 #include <boost/archive/text_iarchive.hpp>
+#include <boost/archive/xml_oarchive.hpp>
+#include <boost/archive/xml_iarchive.hpp>
 
 #include "alg/sequence.hpp"
 #include "mussa_exceptions.hpp"
@@ -454,6 +456,35 @@ BOOST_AUTO_TEST_CASE( serialize_simple )
 {
   std::string seq_string = "AAGGCCTT";
   Sequence seq(seq_string);
+  seq.set_species("ribbet");
+  std::ostringstream oss;
+  // allocate/deallocate serialization components
+  {
+    boost::archive::text_oarchive oarchive(oss);
+    const Sequence& const_seq(seq);
+    BOOST_CHECK_EQUAL(seq, const_seq);
+    oarchive << const_seq;
+  }
+
+  Sequence seq_loaded;
+  {
+    std::istringstream iss(oss.str());
+    boost::archive::text_iarchive iarchive(iss);
+    iarchive >> seq_loaded;
+  }
+  BOOST_CHECK_EQUAL(seq_loaded, seq);
+  BOOST_CHECK_EQUAL(seq.get_species(), "ribbet");
+}  
+
+BOOST_AUTO_TEST_CASE( serialize_tree )
+{
+  std::string seq_string = "AAGGCCTT";
+  Sequence seq(seq_string);
+  seq.set_species("ribbet");
+  seq.add_motif("AA");
+  seq.add_motif("GC");
+  annot a1(6,7,"t","t");
+  seq.add_annotation(a1);
 
   std::ostringstream oss;
   // allocate/deallocate serialization components
@@ -470,4 +501,33 @@ BOOST_AUTO_TEST_CASE( serialize_simple )
     boost::archive::text_iarchive iarchive(iss);
     iarchive >> seq_loaded;
   }
+  BOOST_CHECK_EQUAL(seq_loaded, seq);
+}  
+
+BOOST_AUTO_TEST_CASE( serialize_xml_tree )
+{
+  std::string seq_string = "AAGGCCTT";
+  Sequence seq(seq_string);
+  seq.set_species("ribbet");
+  seq.add_motif("AA");
+  seq.add_motif("GC");
+  annot a1(6,7,"t","t");
+  seq.add_annotation(a1);
+
+  std::ostringstream oss;
+  // allocate/deallocate serialization components
+  {
+    boost::archive::xml_oarchive oarchive(oss);
+    const Sequence& const_seq(seq);
+    BOOST_CHECK_EQUAL(seq, const_seq);
+    oarchive << boost::serialization::make_nvp("seq", const_seq);
+  }
+  
+  Sequence seq_loaded;
+  {
+    std::istringstream iss(oss.str());
+    boost::archive::xml_iarchive iarchive(iss);
+    iarchive >> boost::serialization::make_nvp("seq", seq_loaded);
+  }
+  BOOST_CHECK_EQUAL(seq_loaded, seq);
 }