void Bond::copyBondOrders(const std::vector<Bond> &fromBonds, std::vector<Bond> &toBonds) { std::map<std::pair<MIAtom*, MIAtom*>, unsigned char> bondOrders; std::vector<Bond>::const_iterator constBondIter; for (constBondIter = fromBonds.begin(); constBondIter != fromBonds.end(); ++constBondIter) { Bond b = *constBondIter; if (b.getAtom1() < b.getAtom2()) { bondOrders[std::make_pair(b.getAtom1(), b.getAtom2())] = b.getOrder(); } else { bondOrders[std::make_pair(b.getAtom2(), b.getAtom1())] = b.getOrder(); } } std::vector<Bond>::iterator bondIter; for (bondIter = toBonds.begin(); bondIter != toBonds.end(); ++bondIter) { Bond b = *bondIter; if (b.getAtom1() < b.getAtom2()) { bondIter->setOrder(bondOrders[std::make_pair(b.getAtom1(), b.getAtom2())]); } else { bondIter->setOrder(bondOrders[std::make_pair(b.getAtom2(), b.getAtom1())]); } } }
Atom a2; Bond b1, b2; b1.setFirstAtom(&a1); TEST_EQUAL(b1.getFirstAtom(), &a1); b1.setFirstAtom(&a2); TEST_EQUAL(b1.getFirstAtom(), &a2); RESULT CHECK(Bond(const String& name, Atom& first, Atom& second, Order order = BALL_BOND_DEFAULT_ORDER, Type type = BALL_BOND_DEFAULT_TYPE) throw(TooManyBonds)) Atom a1; Atom a2; Bond b1("name", a1, a2, 1, 2); TEST_EQUAL(b1.getName(), "name") TEST_EQUAL(b1.getFirstAtom(), &a1) TEST_EQUAL(b1.getSecondAtom(), &a2) TEST_EQUAL(b1.getOrder(), 1) TEST_EQUAL(b1.getType(), 2) RESULT CHECK(static Bond* createBond(Bond& bond, Atom& first, Atom& second) throw(TooManyBonds)) Atom a1; Atom a2; Atom a3; Bond b1; Bond b2; TEST_NOT_EQUAL(b1.createBond(b1, a2, a1), 0) TEST_EQUAL(a2.countBonds(), 1); TEST_EQUAL(b1.getFirstAtom(), &a1); TEST_EQUAL(b1.getSecondAtom(), &a2);