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));
        }