module("Bond");

test("Check Creation", function(){
	var bondNoOrder = new Bond(new Atom(), new Atom());
	var bond = new Bond(new Atom(), new Atom(), 2);
	expect(6);
    ok(bondNoOrder.a1!=null, 'Check bondNoOrder a1');
    ok(bondNoOrder.a2!=null, 'Check bondNoOrder a2');
    equals(1, bondNoOrder.bondOrder, 'Check bondNoOrder bond order');
    ok(bond.a1!=null, 'Check double bond a1');
    ok(bond.a2!=null, 'Check double bond a2');
    equals(2, bond.bondOrder, 'Check double bond order');
});

test("Check Contains", function(){
	var a1 = new Atom();
	var a2 = new Atom();
	var bond = new Bond(a1, a2);
	expect(3);
	ok(bond.contains(a1), 'Check contains a1');
	ok(bond.contains(a2), 'Check contains a2');
	ok(!bond.contains(new Atom()), 'Check not contains stranger atom');
});
	
test("Check Get Neighbor", function(){
	var a1 = new Atom();
	var a2 = new Atom();
	var bond = new Bond(a1, a2);
	expect(3);
	equals(a2, bond.getNeighbor(a1), 'Check a1 neighbor');
	equals(a1, bond.getNeighbor(a2), 'Check a2 neighbor');
	equals(null, bond.getNeighbor(new Atom()), 'Check non-constituent');
});

test("Check Get Center", function(){
	expect(2);
	var center = new Bond(new Atom(), new Atom('C', 10, 10)).getCenter();
	equals(5, center.x, 'Check center x');
	equals(5, center.y, 'Check center y');
});

test("Check Bond Length", function(){
	expect(1);
	equals(5, new Bond(new Atom(), new Atom('C', 3, 4)).getLength(), 'Check length');
});

test("Check Bond Length 3D", function(){
	expect(1);
	equals(Math.sqrt(50), new Bond(new Atom(), new Atom('C', 3, 4, 5)).getLength3D(), 'Check length');
});
