From 4d14334aa9c2fe356e03e6e3a6f2a60dabf1af07 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@stud.unibas.ch>
Date: Fri, 27 Jul 2012 15:59:00 +0200
Subject: [PATCH] added unit tests to entity and chain

---
 modules/mol/base/tests/test_chain.cc  | 32 ++++++++++++++++++++++-----
 modules/mol/base/tests/test_entity.cc | 20 +++++++++++++++--
 2 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/modules/mol/base/tests/test_chain.cc b/modules/mol/base/tests/test_chain.cc
index ee4d933d0..39ffd35e2 100644
--- a/modules/mol/base/tests/test_chain.cc
+++ b/modules/mol/base/tests/test_chain.cc
@@ -87,16 +87,38 @@ BOOST_AUTO_TEST_CASE(test_comparison)
   BOOST_CHECK(cc==ch1);
 }
 
-
 BOOST_AUTO_TEST_CASE(throw_invalid_chain_handle)
 {
   EntityHandle ent=CreateEntity();
-  ChainHandle chain=ent.FindChain("A");
-  BOOST_CHECK_THROW(CheckHandleValidity(chain), InvalidHandle);
+  ChainHandle ch=ent.FindChain("A");
+  BOOST_CHECK_THROW(CheckHandleValidity(ch), InvalidHandle);
   XCSEditor edi=ent.EditXCS();
   edi.InsertChain("A");
-  chain=ent.FindChain("A");
-  BOOST_CHECK_NO_THROW(CheckHandleValidity(chain));
+  ch=ent.FindChain("A");
+  BOOST_CHECK_NO_THROW(CheckHandleValidity(ch));
+
+
+  EntityHandle eh1 = CreateEntity();
+  XCSEditor e1=eh1.EditXCS();
+  ChainHandle chain = e1.InsertChain("C");
+  ResidueHandle res1 = e1.AppendResidue(chain, "FOO", ResNum(13));
+  AtomHandle atom1 = e1.InsertAtom(res1, "X1",geom::Vec3());
+  AtomHandle atom2 = e1.InsertAtom(res1, "X2",geom::Vec3());
+  ResidueHandle res2 = e1.AppendResidue(chain, "FOO", ResNum(42));
+  e1.InsertAtom(res2, "X1",geom::Vec3());
+  e1.InsertAtom(res2, "X2",geom::Vec3());
+
+  EntityHandle eh2=CreateEntity();
+  XCSEditor e2=eh2.EditXCS();
+  ChainHandle inserted_chain1 = e2.InsertChain("Q",chain);
+  res1.SetIntProp("amazing",42);
+  ResidueHandle inserted_residue1 = e2.AppendResidue(inserted_chain1,res1);
+  BOOST_CHECK(inserted_residue1!=res1);
+  BOOST_CHECK(eh2.GetResidueCount()==1);
+  BOOST_CHECK(eh2.GetAtomCount()==0);
+  BOOST_CHECK(inserted_residue1.HasProp("amazing"));
+  ResidueHandle inserted_residue2 = e2.AppendResidue(inserted_chain1,res2,true);
+  BOOST_CHECK(eh2.GetAtomCount()==2);
 }
 
 BOOST_AUTO_TEST_CASE(throw_invalid_chain_view)
diff --git a/modules/mol/base/tests/test_entity.cc b/modules/mol/base/tests/test_entity.cc
index 47ffcbd73..767b68bb3 100644
--- a/modules/mol/base/tests/test_entity.cc
+++ b/modules/mol/base/tests/test_entity.cc
@@ -136,8 +136,24 @@ BOOST_AUTO_TEST_CASE(entity_creator)
   BOOST_CHECK(eh.GetAtomCount()==2);
   
   BOOST_CHECK(eh.GetAtomCount()==chain.GetAtomCount());
-  BOOST_CHECK(eh.GetResidueCount()==chain.GetResidueCount());    
-  
+  BOOST_CHECK(eh.GetResidueCount()==chain.GetResidueCount());
+
+  chain.SetIntProp("amazing",42);
+  EntityHandle eh2 = CreateEntity();
+  XCSEditor e2 = eh2.EditXCS();
+  ChainHandle inserted_chain=e2.InsertChain("Q",chain);
+  BOOST_CHECK(eh2.GetChainCount()==1);
+  BOOST_CHECK(eh2.GetResidueCount()==0);
+  BOOST_CHECK(eh2.GetAtomCount()==0);
+  BOOST_CHECK(inserted_chain.HasProp("amazing"));
+  BOOST_CHECK(eh2.FindChain("Q").IsValid());
+
+  EntityHandle eh3 = CreateEntity();
+  XCSEditor e3 = eh3.EditXCS();
+  e3.InsertChain("Q",chain,true);
+  BOOST_CHECK(eh3.GetResidueCount()==1);
+  BOOST_CHECK(eh3.GetAtomCount()==2);
+
   EntityVisitor v;
   eh.Apply(v);
 }
-- 
GitLab