示例#1
0
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())]);
        }
    }

}
示例#2
0
文件: Bond_test.C 项目: PierFio/ball
	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);