From 4262881ac02571029cd0bcd0533325cfa6edbd36 Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Fri, 7 May 2010 09:33:25 +0000
Subject: [PATCH] Added some unit tests for SequenceHandle

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2196 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/seq/base/tests/test_sequence.cc | 145 +++++++++++++++++++++++-
 1 file changed, 139 insertions(+), 6 deletions(-)

diff --git a/modules/seq/base/tests/test_sequence.cc b/modules/seq/base/tests/test_sequence.cc
index 666ebe6c4..dacb54ffb 100644
--- a/modules/seq/base/tests/test_sequence.cc
+++ b/modules/seq/base/tests/test_sequence.cc
@@ -19,12 +19,36 @@
 #define BOOST_TEST_DYN_LINK
 #include <boost/test/unit_test.hpp>
 
+#include <ost/mol/mol.hh>
+
 #include <ost/seq/sequence_handle.hh>
 #include <ost/seq/invalid_sequence.hh>
 #include <ost/seq/sequence_op.hh>
 
 using namespace ost;
 using namespace ost::seq;
+using namespace ost::mol;
+
+
+struct Fixture {
+  Fixture() {
+    eh = CreateEntity();
+    eh.SetName("TestEntity");
+    XCSEditor e=eh.RequestXCSEditor();
+    chain = e.InsertChain("A");
+    res1 = e.AppendResidue(chain, "ARG");
+    e.InsertAtom(res1, "CA",geom::Vec3(1,0,0));
+    res2 = e.AppendResidue(chain, "ARG");
+    e.InsertAtom(res2, "CA",geom::Vec3(0,1,0));
+    res3 = e.AppendResidue(chain, "ARG");
+    e.InsertAtom(res3, "CA",geom::Vec3(0,0,1));
+  }
+  EntityHandle eh;
+  ChainHandle  chain;
+  ResidueHandle res1;
+  ResidueHandle res2;
+  ResidueHandle res3;
+};
 
 BOOST_AUTO_TEST_SUITE( seq )
 
@@ -34,18 +58,46 @@ BOOST_AUTO_TEST_CASE(seq_triv)
   BOOST_CHECK_THROW(CreateSequence("S1", "1"), InvalidSequence);
   BOOST_CHECK_THROW(CreateSequence("S1", "."), InvalidSequence);
   BOOST_CHECK_THROW(CreateSequence("S1", " "), InvalidSequence);
+  SequenceHandle s=CreateSequence("S1","-afbcdefghijkLMNOPQRSTUV-");
+  BOOST_CHECK_EQUAL(s.GetString(),"-afbcdefghijkLMNOPQRSTUV-");
+  BOOST_CHECK_NO_THROW(s.SetString("-afc--de-f"));
+  BOOST_CHECK_EQUAL(s.GetString(),"-afc--de-f");
+  BOOST_CHECK_THROW(s.SetString("1"), InvalidSequence);
+}
+
+BOOST_AUTO_TEST_CASE(seq_length)
+{
+  SequenceHandle s=CreateSequence("S1", "abfcdadeaf");
+  BOOST_CHECK_EQUAL(s.GetLength(),10);
+  s=CreateSequence("S1", "-afc--de-f");
+  BOOST_CHECK_EQUAL(s.GetLength(),10);
+  s=CreateSequence("S1", "");
+  BOOST_CHECK_EQUAL(s.GetLength(),0);
+}
+
+BOOST_AUTO_TEST_CASE(seq_string)
+{
+  SequenceHandle s=CreateSequence("S1", "abfcdadeaf");
+  BOOST_CHECK_EQUAL(s.GetString(),"abfcdadeaf");
+  BOOST_CHECK_EQUAL(s.GetGaplessString(),"abfcdadeaf");
+  s=CreateSequence("S1", "-afc--de-f");
+  BOOST_CHECK_EQUAL(s.GetString(),"-afc--de-f");
+  BOOST_CHECK_EQUAL(s.GetGaplessString(),"afcdef");
+  s=CreateSequence("S1", "");
+  BOOST_CHECK_EQUAL(s.GetString(),"");
+  BOOST_CHECK_EQUAL(s.GetGaplessString(),"");
 }
 
 BOOST_AUTO_TEST_CASE(seq_getnum) 
 {
   SequenceHandle s=CreateSequence("S1", "-afc--de-f");
   BOOST_CHECK_THROW(s.GetResidueIndex(0), Error);
-  BOOST_CHECK(s.GetResidueIndex(1)==1-1);
-  BOOST_CHECK(s.GetResidueIndex(2)==2-1);
-  BOOST_CHECK(s.GetResidueIndex(3)==3-1);
-  BOOST_CHECK(s.GetResidueIndex(6)==4-1);
-  BOOST_CHECK(s.GetResidueIndex(7)==5-1);
-  BOOST_CHECK(s.GetResidueIndex(9)==6-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(1),1-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(2),2-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(3),3-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(6),4-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(7),5-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(9),6-1);
   BOOST_CHECK_THROW(s.GetResidueIndex(-1), Error);
   BOOST_CHECK_THROW(s.GetResidueIndex(10), Error);
 }
@@ -62,4 +114,85 @@ BOOST_AUTO_TEST_CASE(seq_getpos)
   BOOST_CHECK(s.GetPos(5)==9);
 }
 
+BOOST_AUTO_TEST_CASE(seq_offset)
+{
+  SequenceHandle s=CreateSequence("S1", "-afc--de-f");
+  SequenceHandle s2=CreateSequence("S1", "-afc--de-f");
+  s.SetSequenceOffset(2);
+  BOOST_CHECK_THROW(s.GetPos(-1), Error);
+  BOOST_CHECK_THROW(s.GetPos(0), Error);
+  BOOST_CHECK_THROW(s.GetPos(1), Error);
+  BOOST_CHECK_EQUAL(s.GetPos(2),1);
+  BOOST_CHECK_EQUAL(s.GetPos(2),s2.GetPos(2-2));
+  BOOST_CHECK_EQUAL(s.GetPos(5),6);
+  BOOST_CHECK_EQUAL(s.GetPos(5),s2.GetPos(5-2));
+  BOOST_CHECK_EQUAL(s.GetPos(7),9);
+  BOOST_CHECK_EQUAL(s.GetPos(7),s2.GetPos(7-2));
+  BOOST_CHECK_THROW(s.GetPos(8), Error);
+  BOOST_CHECK_THROW(s.GetResidueIndex(0), Error);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(1),2);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(1),s2.GetResidueIndex(1)+2);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(6), 5);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(6),s2.GetResidueIndex(6)+2);
+  BOOST_CHECK_THROW(s.GetResidueIndex(10), Error);
+
+  s.SetSequenceOffset(-1);
+  BOOST_CHECK_THROW(s.GetPos(-2), Error);
+  BOOST_CHECK_EQUAL(s.GetPos(-1), 1);
+  BOOST_CHECK_EQUAL(s.GetPos(0), 2);
+  BOOST_CHECK_EQUAL(s.GetPos(0),s2.GetPos(0+1));
+  BOOST_CHECK_EQUAL(s.GetPos(2), 6);
+  BOOST_CHECK_EQUAL(s.GetPos(2),s2.GetPos(2+1));
+  BOOST_CHECK_EQUAL(s.GetPos(4),9);
+  BOOST_CHECK_EQUAL(s.GetPos(4),s2.GetPos(4+1));
+  BOOST_CHECK_THROW(s.GetPos(5), Error);
+  BOOST_CHECK_THROW(s.GetResidueIndex(0), Error);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(1),-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(1),s2.GetResidueIndex(1)-1);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(6), 2);
+  BOOST_CHECK_EQUAL(s.GetResidueIndex(6),s2.GetResidueIndex(6)-1);
+  BOOST_CHECK_THROW(s.GetResidueIndex(10), Error);
+}
+
+BOOST_AUTO_TEST_CASE(seq_gaps)
+{
+  SequenceHandle s=CreateSequence("S1", "");
+  BOOST_CHECK_EQUAL(s.GetFirstNonGap(),-1);
+  BOOST_CHECK_EQUAL(s.GetLastNonGap(),-1);
+
+  s=CreateSequence("S1", "afcdef");
+  BOOST_CHECK_EQUAL(s.GetFirstNonGap(),0);
+  BOOST_CHECK_EQUAL(s.GetLastNonGap(),5);
+
+  s=CreateSequence("S1", "-afc--de-f-");
+  BOOST_CHECK_EQUAL(s.GetFirstNonGap(),1);
+  BOOST_CHECK_EQUAL(s.GetLastNonGap(),9);
+}
+
+BOOST_AUTO_TEST_CASE(seq_attach_view)
+{
+  Fixture f;
+  SequenceHandle s=CreateSequence("S1", "r-r");
+  BOOST_CHECK_EQUAL(s.HasAttachedView(),false);
+  BOOST_CHECK_EQUAL(s.GetAttachedView(),EntityView());
+  BOOST_CHECK_EQUAL(s.GetResidue(0),ResidueHandle());
+
+  EntityView v = f.eh.CreateFullView();
+  s.AttachView(v);
+  BOOST_CHECK_EQUAL(s.HasAttachedView(),true);
+  BOOST_CHECK_EQUAL(s.GetAttachedView(),v);
+
+  BOOST_CHECK_EQUAL(s.GetResidue(0),f.res1);
+  BOOST_CHECK_EQUAL(s.GetResidue(s.GetPos(0)),f.res1);
+  BOOST_CHECK_EQUAL(s.GetResidue(1),ResidueHandle());
+  BOOST_CHECK_EQUAL(s.GetResidue(2),f.res3);
+  BOOST_CHECK_EQUAL(s.GetResidue(s.GetPos(1)),f.res3);
+
+  v = EntityView();
+  s.AttachView(v);
+  BOOST_CHECK_EQUAL(s.HasAttachedView(),false);
+  BOOST_CHECK_EQUAL(s.GetAttachedView(),EntityView());
+  BOOST_CHECK_EQUAL(s.GetResidue(0),ResidueHandle());
+}
+
 BOOST_AUTO_TEST_SUITE_END()
-- 
GitLab