public void TestAllSaturated_Formaldehyde() { // test Formaldehyde, CH2=O with explicit hydrogen var m = new AtomContainer(); Atom c = new Atom("C"); Atom h1 = new Atom("H"); Atom h2 = new Atom("H"); Atom O = new Atom("O"); m.Atoms.Add(c); m.Atoms.Add(h1); m.Atoms.Add(h2); m.Atoms.Add(O); for (int i = 0; i < 2; i++) { LonePair lp = new LonePair(O); m.LonePairs.Add(lp); } m.Bonds.Add(new Bond(c, h1)); m.Bonds.Add(new Bond(c, h2)); m.Bonds.Add(new Bond(c, O, BondOrder.Double)); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(m); Assert.IsTrue(CDK.LonePairElectronChecker.IsSaturated(m)); }
public void TestAllSaturated_Methanethiol() { // test Methanethiol, CH4S Atom c = new Atom("C") { ImplicitHydrogenCount = 3 }; Atom s = new Atom("S") { ImplicitHydrogenCount = 1 }; Bond b1 = new Bond(c, s, BondOrder.Single); var m = new AtomContainer(); m.Atoms.Add(c); m.Atoms.Add(s); m.Bonds.Add(b1); for (int i = 0; i < 1; i++) { LonePair lp = new LonePair(s); m.LonePairs.Add(lp); } AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(m); Assert.IsFalse(CDK.LonePairElectronChecker.IsSaturated(m)); }
public void TestDontDeleteSingleElectrons() { AtomContainer atomCon = new AtomContainer(); // make two molecules; one with an LonePair, the other with a SingleElectron IAtomContainer mol1 = new AtomContainer(); Atom atom1 = new Atom("C"); mol1.Atoms.Add(atom1); LonePair lp1 = new LonePair(atom1); mol1.LonePairs.Add(lp1); // mol2 IAtomContainer mol2 = new AtomContainer(); Atom atom2 = new Atom("C"); mol2.Atoms.Add(atom2); SingleElectron se2 = new SingleElectron(atom2); mol2.SingleElectrons.Add(se2); atomCon.Add(mol1); atomCon.Add(mol2); // now partition IChemObjectSet <IAtomContainer> moleculeSet = ConnectivityChecker.PartitionIntoMolecules(atomCon); Assert.IsNotNull(moleculeSet); Assert.AreEqual(2, moleculeSet.Count); Assert.IsTrue(ConnectivityChecker.IsConnected(moleculeSet[0])); Assert.IsTrue(ConnectivityChecker.IsConnected(moleculeSet[1])); // make sure Assert.AreEqual(1, moleculeSet[0].Atoms.Count); Assert.AreEqual(1, moleculeSet[0].GetElectronContainers().Count()); Assert.AreEqual(1, moleculeSet[1].Atoms.Count); Assert.AreEqual(1, moleculeSet[1].GetElectronContainers().Count()); // we don't know which partition contains the LP and which the electron Assert.IsTrue(moleculeSet[0].GetConnectedSingleElectrons( moleculeSet[0].Atoms[0]).Count() == 0 || moleculeSet[1].GetConnectedSingleElectrons( moleculeSet[1].Atoms[0]).Count() == 0); Assert.IsTrue(moleculeSet[0].GetConnectedLonePairs( moleculeSet[0].Atoms[0]).Count() == 0 || moleculeSet[1].GetConnectedLonePairs( moleculeSet[1].Atoms[0]).Count() == 0); }