From 95ddda1464887017b9dd7af4b88e63ac9418fb0a Mon Sep 17 00:00:00 2001
From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Tue, 11 May 2010 08:08:44 +0000
Subject: [PATCH] Added unittests for AlignedColumn

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2228 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/seq/base/tests/CMakeLists.txt         |   1 +
 modules/seq/base/tests/test_aligned_column.cc | 133 ++++++++++++++++++
 2 files changed, 134 insertions(+)
 create mode 100644 modules/seq/base/tests/test_aligned_column.cc

diff --git a/modules/seq/base/tests/CMakeLists.txt b/modules/seq/base/tests/CMakeLists.txt
index df7a2d6f4..62099af52 100644
--- a/modules/seq/base/tests/CMakeLists.txt
+++ b/modules/seq/base/tests/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(OST_SEQ_UNIT_TESTS
   test_sequence.cc
+  test_aligned_column.cc
   test_aligned_region.cc
   test_alignment.cc
   tests.cc
diff --git a/modules/seq/base/tests/test_aligned_column.cc b/modules/seq/base/tests/test_aligned_column.cc
new file mode 100644
index 000000000..f76573df3
--- /dev/null
+++ b/modules/seq/base/tests/test_aligned_column.cc
@@ -0,0 +1,133 @@
+//------------------------------------------------------------------------------
+// This file is part of the OpenStructure project <www.openstructure.org>
+//
+// Copyright (C) 2008-2010 by the OpenStructure authors
+//
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License as published by the Free
+// Software Foundation; either version 3.0 of the License, or (at your option)
+// any later version.
+// This library is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+// details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this library; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+//------------------------------------------------------------------------------
+#define BOOST_TEST_DYN_LINK
+#include <boost/test/unit_test.hpp>
+
+#include <ost/mol/mol.hh>
+
+#include <ost/invalid_handle.hh>
+#include <ost/integrity_error.hh>
+
+#include <ost/mol/mol.hh>
+#include <ost/seq/alignment_handle.hh>
+#include <ost/seq/aligned_region.hh>
+#include <ost/seq/aligned_column.hh>
+#include <ost/seq/sequence_handle.hh>
+#include <ost/seq/sequence_list.hh>
+#include <ost/seq/impl/sequence_list_impl.hh>
+#include <ost/seq/impl/sequence_impl.hh>
+#include <ost/seq/sequence_list.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( aligned_column )
+
+BOOST_AUTO_TEST_CASE(aligned_column_triv)
+{
+  AlignedColumn ac =AlignedColumn();
+  BOOST_CHECK_THROW(ac[0], InvalidHandle);
+
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  AlignedRegion ar = AlignedRegion(a,1,3,1);
+  ac = ar[0];
+
+  BOOST_CHECK_EQUAL(ac.GetIndex(), 1);
+  ac = ar[1];
+  BOOST_CHECK_EQUAL(ac.GetIndex(), 2);
+  BOOST_CHECK_THROW(ar[2], std::out_of_range);
+  BOOST_CHECK_THROW(ar[-1], std::out_of_range);
+
+  AlignedColumn ac_test = AlignedColumn(a,2);
+  char c = ac[0];
+  BOOST_CHECK_EQUAL(c, ac_test[0]);
+  BOOST_CHECK_EQUAL(c, '-');
+  c = ac[1];
+  BOOST_CHECK_EQUAL(c, ac_test[1]);
+  BOOST_CHECK_EQUAL(c, 'i');
+}
+
+BOOST_AUTO_TEST_CASE(aligned_get_residue)
+{
+  Fixture f;
+  EntityView v1 = f.eh.CreateFullView();
+  EntityView v2 = f.eh.CreateFullView();
+
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  a.AttachView(0,v1);
+  a.AttachView(1,v2);
+  AlignedRegion ar = AlignedRegion(a,1,3,1);
+  AlignedColumn ac = ar[0];
+  BOOST_CHECK_EQUAL(f.res2,ac.GetResidue(0));
+  ac = ar[1];
+  BOOST_CHECK_EQUAL(f.res2,ac.GetResidue(1));
+  BOOST_CHECK_THROW(ac.GetResidue(2),std::out_of_range);
+  BOOST_CHECK_THROW(ac.GetResidue(-1),std::out_of_range);
+}
+
+BOOST_AUTO_TEST_CASE(aligned_get_residue_index)
+{
+  AlignmentHandle a = CreateAlignment();
+  SequenceHandle seq1 = CreateSequence("S1","ab-cdef");
+  SequenceHandle seq2 = CreateSequence("S2","ghijk-l");
+  a.AddSequence(seq1);
+  a.AddSequence(seq2);
+  AlignedRegion ar = AlignedRegion(a,1,3,1);
+  AlignedColumn ac = ar[0];
+  BOOST_CHECK_EQUAL(ac.GetResidueIndex(0),1);
+  BOOST_CHECK_EQUAL(ac.GetResidueIndex(1),1);
+
+  ac = ar[1];
+  BOOST_CHECK_THROW(ac.GetResidueIndex(0),Error);
+  BOOST_CHECK_EQUAL(ac.GetResidueIndex(1),2);
+  BOOST_CHECK_THROW(ac.GetResidueIndex(2),std::out_of_range);
+  BOOST_CHECK_THROW(ac.GetResidueIndex(-1),std::out_of_range);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
-- 
GitLab