public void TestButadiene() { var mol = new AtomContainer(); var carbon = new AtomType(ChemicalElement.C); var a0 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 2 }; AtomTypeManipulator.ConfigureUnsetProperties(a0, carbon); var a1 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a1, carbon); var a2 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a2, carbon); var a3 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 2 }; AtomTypeManipulator.ConfigureUnsetProperties(a3, carbon); mol.Atoms.Add(a0); mol.Atoms.Add(a1); mol.Atoms.Add(a2); mol.Atoms.Add(a3); var b0 = new Bond(a0, a1) { IsSingleOrDouble = true }; mol.Bonds.Add(b0); var b1 = new Bond(a1, a2) { IsSingleOrDouble = true }; mol.Bonds.Add(b1); IBond b2 = new Bond(a2, a3) { IsSingleOrDouble = true }; mol.Bonds.Add(b2); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(mol); atasc.DecideBondOrder(mol, true); Assert.AreEqual(BondOrder.Double, mol.Bonds[0].Order); Assert.AreEqual(BondOrder.Single, mol.Bonds[1].Order); Assert.AreEqual(BondOrder.Double, mol.Bonds[2].Order); }
public void TestASimpleCarbonRing() { // First we create a simple carbon ring to play with... var mol = new AtomContainer(); var carbon = new AtomType(ChemicalElement.C); var a0 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a0, carbon); var a1 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a1, carbon); var a2 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a2, carbon); var a3 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a3, carbon); var a4 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a4, carbon); var a5 = new Atom("C") { Hybridization = Hybridization.SP2, ImplicitHydrogenCount = 1 }; AtomTypeManipulator.ConfigureUnsetProperties(a5, carbon); mol.Atoms.Add(a0); mol.Atoms.Add(a1); mol.Atoms.Add(a2); mol.Atoms.Add(a3); mol.Atoms.Add(a4); mol.Atoms.Add(a5); var b0 = new Bond(a0, a1) { IsSingleOrDouble = true }; mol.Bonds.Add(b0); var b1 = new Bond(a1, a2) { IsSingleOrDouble = true }; mol.Bonds.Add(b1); var b2 = new Bond(a2, a3) { IsSingleOrDouble = true }; mol.Bonds.Add(b2); var b3 = new Bond(a3, a4) { IsSingleOrDouble = true }; mol.Bonds.Add(b3); var b4 = new Bond(a4, a5) { IsSingleOrDouble = true }; mol.Bonds.Add(b4); var b5 = new Bond(a5, a0) { IsSingleOrDouble = true }; mol.Bonds.Add(b5); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(mol); // ...then we send it to the method we want to test... atasc.DecideBondOrder(mol, false); Assert.AreEqual(BondOrder.Double, b0.Order); Assert.AreEqual(BondOrder.Single, b1.Order); Assert.AreEqual(BondOrder.Double, b2.Order); Assert.AreEqual(BondOrder.Single, b3.Order); Assert.AreEqual(BondOrder.Double, b4.Order); Assert.AreEqual(BondOrder.Single, b5.Order); Assert.IsTrue(satcheck.IsSaturated(a0, mol)); }