diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc index b97087878877263bfcd075ff8bd075b2ea8acd69..37eb2caa6abd2c596ba3372b6c22466b84e82daf 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 3d775f2a8e16508b8efcaa2d3a8ad60a005f8150..4362d4ce8836dd4dbf4347e0978f948c1286667f 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."); }