TEST(HydrogenToolsTest, adjustHydrogens_adjustments) { for (int i = 0; i < 3; ++i) { HydrogenTools::Adjustment adjustment; std::string expectedFormula; switch (i) { case 0: adjustment = HydrogenTools::Add; expectedFormula = "C2H14"; break; case 1: adjustment = HydrogenTools::Remove; expectedFormula = "C2H5"; break; case 2: adjustment = HydrogenTools::AddAndRemove; expectedFormula = "C2H8"; break; } Molecule mol; Atom C1 = mol.addAtom(6); // Overbond this atom mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); mol.addBond(C1, mol.addAtom(1)); Atom C2 = mol.addAtom(6); // Underbond this atom mol.addBond(C2, mol.addAtom(1)); EXPECT_EQ(std::string("C2H11"), mol.formula()); HydrogenTools::adjustHydrogens(mol, adjustment); EXPECT_EQ(expectedFormula, mol.formula()); } }
TEST(HydrogenToolsTest, adjustHydrogens_C2H4O) { Molecule mol; Atom C1 = mol.addAtom(6); Atom C2 = mol.addAtom(6); Atom O1 = mol.addAtom(8); mol.addBond(C1, C2, 1); mol.addBond(C2, O1, 2); HydrogenTools::adjustHydrogens(mol); EXPECT_EQ(7, mol.atomCount()); EXPECT_EQ(6, mol.bondCount()); EXPECT_EQ(std::string("C2H4O"), mol.formula()); }
TEST(HydrogenToolsTest, adjustHydrogens_C3H8) { Molecule mol; Atom C1 = mol.addAtom(6); Atom C2 = mol.addAtom(6); Atom C3 = mol.addAtom(6); mol.addBond(C1, C2, 1); mol.addBond(C2, C3, 1); HydrogenTools::adjustHydrogens(mol); EXPECT_EQ(11, mol.atomCount()); EXPECT_EQ(10, mol.bondCount()); EXPECT_EQ(std::string("C3H8"), mol.formula()); }
TEST(HydrogenToolsTest, removeAllHydrogens) { Molecule mol; mol.addAtom(1); HydrogenTools::removeAllHydrogens(mol); EXPECT_EQ(mol.atomCount(), 0); Atom C1 = mol.addAtom(6); Atom C2 = mol.addAtom(6); Atom C3 = mol.addAtom(6); mol.addBond(C1, C2, 1); mol.addBond(C2, C3, 1); Atom H = mol.addAtom(1); mol.addBond(C1, H); H = mol.addAtom(1); mol.addBond(C1, H); H = mol.addAtom(1); mol.addBond(C1, H); H = mol.addAtom(1); mol.addBond(C2, H); H = mol.addAtom(1); mol.addBond(C2, H); H = mol.addAtom(1); mol.addBond(C3, H); H = mol.addAtom(1); mol.addBond(C3, H); H = mol.addAtom(1); mol.addBond(C3, H); HydrogenTools::removeAllHydrogens(mol); EXPECT_EQ(std::string("C3"), mol.formula()); }