// // Copyright (C) 2020 Brian P Kelley, Joann Prescott-Roy // // @@ 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 using namespace RDKit; using namespace RDKit::Deprotect; TEST_CASE("Standard deprotections", "[deprotect]") { SECTION("simple deprotections") { auto m = "N(C(=O)OC(C)(C)C)Cc1ccccc1NC(=O)OC(C)(C)C"_smiles; auto res = deprotect(*m); REQUIRE(res); CHECK(MolToSmiles(*res) == "NCc1ccccc1N"); CHECK(res->getProp("DEPROTECTION_COUNT") == 2); std::vector expected{"Boc", "Boc"}; CHECK(res->getProp>("DEPROTECTIONS") == expected); } SECTION("test deprotection examples") { for(auto &data : getDeprotections()) { std::vector vect = {data}; std::vector examples; boost::split(examples, data.example, boost::is_any_of(">")); std::unique_ptr start(SmilesToMol(examples[0])); std::unique_ptr end(SmilesToMol(examples[2])); // check the one auto res = deprotect(*start, vect); CHECK(MolToSmiles(*res) == MolToSmiles(*end)); // check them all res = deprotect(*start); CHECK(MolToSmiles(*res) == MolToSmiles(*end)); } } }