// // Copyright (c) 2018 Greg Landrum // // @@ All Rights Reserved @@ // This file is part of the RDKit. // The contents are covered by the terms of the BSD license // which is included in the file license.txt, found at the root // of the RDKit source tree. /// #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do // this in one cpp file #include "catch.hpp" #include #include #include #include #include #include #include #include #include using namespace RDKit; TEST_CASE("Github #1632", "[Reaction,PDB,bug]") { SECTION("basics") { bool sanitize = true; int flavor = 0; std::unique_ptr mol(SequenceToMol("K", sanitize, flavor)); REQUIRE(mol); REQUIRE(mol->getAtomWithIdx(0)->getMonomerInfo()); auto res = static_cast( mol->getAtomWithIdx(0)->getMonomerInfo()); CHECK(res->getResidueNumber() == 1); std::unique_ptr rxn(RxnSmartsToChemicalReaction( "[O:1]=[CX3:2]-[CX4:3]-[NX3:4]>>[O:1]=[CX3:2]-[CX4:3]-[NX3:4]-[C]")); REQUIRE(rxn); rxn->initReactantMatchers(); MOL_SPTR_VECT reacts; reacts.push_back(ROMOL_SPTR(new ROMol(*mol))); auto prods = rxn->runReactants(reacts); CHECK(prods.size() == 1); CHECK(prods[0].size() == 1); auto p = prods[0][0]; CHECK(p->getNumAtoms() == mol->getNumAtoms() + 1); REQUIRE(p->getAtomWithIdx(0)->getMonomerInfo()); auto pres = static_cast( p->getAtomWithIdx(0)->getMonomerInfo()); CHECK(pres->getResidueNumber() == 1); REQUIRE(!p->getAtomWithIdx(4)->getMonomerInfo()); } }