module("HydrogenDeducer");

test("Check Hydrogen Removal on Empty Molecule", function(){
	var mol = new Molecule();
	expect(4);
    equals(0, mol.atoms.length, 'Check atoms before');
	equals(0, mol.bonds.length, 'Check bonds before');
	removeHydrogens(mol);
    equals(0, mol.atoms.length, 'Check atoms after');
	equals(0, mol.bonds.length, 'Check bonds after');
	for(var i = 0; i<mol.atoms.length; i++){
		ok(mol.atoms[i].label!='H', 'Check constituent atom is not Hydrogen');
	}
	for(var i = 0; i<mol.bonds.length; i++){
		ok(mol.bonds[i].a1.label!='H'&&mol.bonds[i].a2.label!='H', 'Check constituent bond contains no Hydrogen');
	}
});

test("Check Hydrogen Removal on Molecular Hydrogen", function(){
	var mol = readMOL(hydrogen);
	expect(4);
    equals(2, mol.atoms.length, 'Check atoms before');
	equals(1, mol.bonds.length, 'Check bonds before');
	removeHydrogens(mol);
    equals(0, mol.atoms.length, 'Check atoms after');
	equals(0, mol.bonds.length, 'Check bonds after');
	for(var i = 0; i<mol.atoms.length; i++){
		ok(mol.atoms[i].label!='H', 'Check constituent atom is not Hydrogen');
	}
	for(var i = 0; i<mol.bonds.length; i++){
		ok(mol.bonds[i].a1.label!='H'&&mol.bonds[i].a2.label!='H', 'Check constituent bond contains no Hydrogen');
	}
});

test("Check Hydrogen Removal on Benzene", function(){
	var mol = readMOL(benzene);
	expect(16);
    equals(12, mol.atoms.length, 'Check benzene atoms before');
	equals(12, mol.bonds.length, 'Check benzene bonds before');
	removeHydrogens(mol);
    equals(6, mol.atoms.length, 'Check benzene atoms after');
	equals(6, mol.bonds.length, 'Check benzene bonds after');
	for(var i = 0; i<mol.atoms.length; i++){
		ok(mol.atoms[i].label!='H', 'Check constituent atom is not Hydrogen');
	}
	for(var i = 0; i<mol.bonds.length; i++){
		ok(mol.bonds[i].a1.label!='H'&&mol.bonds[i].a2.label!='H', 'Check constituent bond contains no Hydrogen');
	}
});

test("Check Hydrogen Removal Twice on the Same Molecule", function(){
	var mol = readMOL(benzene);
	removeHydrogens(mol);
	expect(16);
    equals(6, mol.atoms.length, 'Check benzene atoms before');
	equals(6, mol.bonds.length, 'Check benzene bonds before');
	removeHydrogens(mol);
    equals(6, mol.atoms.length, 'Check benzene atoms after');
	equals(6, mol.bonds.length, 'Check benzene bonds after');
	for(var i = 0; i<mol.atoms.length; i++){
		ok(mol.atoms[i].label!='H', 'Check constituent atom is not Hydrogen');
	}
	for(var i = 0; i<mol.bonds.length; i++){
		ok(mol.bonds[i].a1.label!='H'&&mol.bonds[i].a2.label!='H', 'Check constituent bond contains no Hydrogen');
	}
});
