From a52df4088ecf6a512b4174ef0d9bfee5f205602a Mon Sep 17 00:00:00 2001
From: Stefan Bienert <stefan.bienert@unibas.ch>
Date: Wed, 21 Sep 2011 11:32:36 +0200
Subject: [PATCH] Added unit test for multi model case in mmcif files

---
 modules/io/src/mol/mmcif_reader.cc    |  2 +-
 modules/io/tests/test_mmcif_reader.cc | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc
index b97087878..37eb2caa6 100644
--- a/modules/io/src/mol/mmcif_reader.cc
+++ b/modules/io/src/mol/mmcif_reader.cc
@@ -147,7 +147,7 @@ bool MMCifParser::OnBeginLoop(const StarLoopDesc& header)
     // post processing
     if (category_counts_[category_] > 0) {
       if ((has_model_ && (indices_[PDBX_PDB_MODEL_NUM] == -1))||
-          (!has_model_ && (indices_[PDBX_PDB_MODEL_NUM] != -1))) { // unit test
+          (!has_model_ && (indices_[PDBX_PDB_MODEL_NUM] != -1))) {
         throw IOException(this->FormatDiagnostic(STAR_DIAG_ERROR,
                               "Not all atom_site entries carry a model number.",
                                                  this->GetCurrentLinenum()));
diff --git a/modules/io/tests/test_mmcif_reader.cc b/modules/io/tests/test_mmcif_reader.cc
index 3d775f2a8..4362d4ce8 100644
--- a/modules/io/tests/test_mmcif_reader.cc
+++ b/modules/io/tests/test_mmcif_reader.cc
@@ -233,6 +233,31 @@ BOOST_AUTO_TEST_CASE(mmcif_parse_models)
   }
   BOOST_MESSAGE("          done.");
 
+  BOOST_MESSAGE("          testing single model with model no. entry...");
+  {
+    // build dummy header
+    mol::EntityHandle eh = mol::CreateEntity();
+    StarLoopDesc tmmcif_h;
+    TestMMCifParserProtected tmmcif_p("testfiles/mmcif/atom_site.mmcif", eh);
+    tmmcif_h.SetCategory(StringRef("atom_site", 9));
+    tmmcif_h.Add(StringRef("auth_asym_id", 12));
+    tmmcif_h.Add(StringRef("id", 2));
+    tmmcif_h.Add(StringRef("label_alt_id", 12));
+    tmmcif_h.Add(StringRef("label_asym_id", 13));
+    tmmcif_h.Add(StringRef("label_atom_id", 13));
+    tmmcif_h.Add(StringRef("label_comp_id", 13));
+    tmmcif_h.Add(StringRef("label_entity_id", 15));
+    tmmcif_h.Add(StringRef("label_seq_id", 12));
+    tmmcif_h.Add(StringRef("type_symbol", 11));
+    tmmcif_h.Add(StringRef("Cartn_x", 7));
+    tmmcif_h.Add(StringRef("Cartn_y", 7));
+    tmmcif_h.Add(StringRef("Cartn_z", 7));
+    tmmcif_p.OnBeginLoop(tmmcif_h);
+    tmmcif_h.Add(StringRef("pdbx_PDB_model_num", 18));
+    BOOST_CHECK_THROW(tmmcif_p.OnBeginLoop(tmmcif_h), IOException);
+  }
+  BOOST_MESSAGE("          done.");
+
   BOOST_MESSAGE("  done.");
 }
 
-- 
GitLab