/** * Saturates an IAtom by adding the appropriate number lone pairs. */ public void saturate(IAtom atom, IAtomContainer ac) throws CDKException { logger.info("Saturating atom by adjusting lone pair electrons..."); IAtomType atomType = factory.getAtomType(atom.getAtomTypeName()); int lpCount = (Integer) atomType.getProperty(CDKConstants.LONE_PAIR_COUNT); int missingLPs = lpCount - ac.getConnectedLonePairsCount(atom); for (int j = 0; j < missingLPs; j++) { ILonePair lp = atom.getBuilder().newInstance(ILonePair.class, atom); ac.addLonePair(lp); } }
@Test public void testGetLonePair_int() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c = mol.getBuilder().newInstance(IAtom.class, "C"); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c); mol.addAtom(c1); mol.addLonePair(1); ILonePair lp = mol.getBuilder().newInstance(ILonePair.class, c); mol.addLonePair(lp); Assert.assertEquals(lp, mol.getLonePair(1)); }
@Test public void testGetLonePairNumber_ILonePair() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c = mol.getBuilder().newInstance(IAtom.class, "C"); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c); mol.addAtom(c1); mol.addLonePair(1); ILonePair lp = mol.getBuilder().newInstance(ILonePair.class, c); mol.addLonePair(lp); Assert.assertEquals(1, mol.indexOf(lp)); }
@Test public void testRemoveLonePair_int() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c = mol.getBuilder().newInstance(IAtom.class, "C"); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c); mol.addAtom(c1); mol.addLonePair(1); ILonePair lp = mol.getBuilder().newInstance(ILonePair.class, c); mol.addLonePair(lp); mol.removeLonePair(0); Assert.assertEquals(1, mol.getLonePairCount()); Assert.assertEquals(lp, mol.getLonePair(0)); }
@Test public void testClone_AtomlessILonePair() throws Exception { IAtomContainer molecule = (IAtomContainer) newChemObject(); ILonePair lonePair = molecule.getBuilder().newInstance(ILonePair.class); molecule.addLonePair(lonePair); Assert.assertEquals(lonePair, molecule.getLonePair(0)); IAtomContainer clone = (IAtomContainer) molecule.clone(); Assert.assertNotNull(clone.getLonePair(0)); }
@Test public void testRemoveLonePair_ILonePair() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c = mol.getBuilder().newInstance(IAtom.class, "C"); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c); mol.addAtom(c1); ILonePair lp = mol.getBuilder().newInstance(ILonePair.class, c1); mol.addLonePair(lp); ILonePair lp1 = mol.getBuilder().newInstance(ILonePair.class, c); mol.addLonePair(lp1); mol.removeLonePair(lp); Assert.assertEquals(1, mol.getLonePairCount()); Assert.assertEquals(lp1, mol.getLonePair(0)); }
@Test public void testAdd_IAtomContainer_LonePairs() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c1); mol.addLonePair(0); IAtomContainer container = (IAtomContainer) newChemObject(); container.add(mol); Assert.assertEquals(1, container.getAtomCount()); Assert.assertEquals(1, container.getLonePairCount()); }
@Test public void testClone_ILonePair() throws Exception { IAtomContainer molecule = (IAtomContainer) newChemObject(); IAtom atom1 = molecule.getBuilder().newInstance(IAtom.class, "C"); IAtom atom2 = molecule.getBuilder().newInstance(IAtom.class, "C"); molecule.addAtom(atom1); // 1 molecule.addAtom(atom2); // 2 molecule.addLonePair(0); // test that cloned bonds contain atoms from cloned atomcontainer IAtomContainer clonedMol = (IAtomContainer) molecule.clone(); Assert.assertNotNull(clonedMol); Assert.assertEquals(1, clonedMol.getConnectedLonePairsCount(clonedMol.getAtom(0))); }
@Test public void testCloneButKeepOriginalsIntact_ILonePair() throws Exception { IAtomContainer molecule = (IAtomContainer) newChemObject(); molecule.addAtom(molecule.getBuilder().newInstance(IAtom.class)); ILonePair lonePair = molecule.getBuilder().newInstance(ILonePair.class, molecule.getAtom(0)); molecule.addLonePair(lonePair); Assert.assertEquals(lonePair, molecule.getLonePair(0)); Object clone = molecule.clone(); Assert.assertNotSame(molecule, clone); // after the cloning the ILonePair on the original IAtomContainer should be unchanged Assert.assertEquals(lonePair, molecule.getLonePair(0)); }
@Test public void testContains_ILonePair() { IAtomContainer mol = (IAtomContainer) newChemObject(); IAtom c = mol.getBuilder().newInstance(IAtom.class, "C"); IAtom c1 = mol.getBuilder().newInstance(IAtom.class, "C"); mol.addAtom(c); mol.addAtom(c1); ILonePair lp = mol.getBuilder().newInstance(ILonePair.class, c1); mol.addLonePair(lp); ILonePair lp1 = mol.getBuilder().newInstance(ILonePair.class, c); assertTrue(mol.contains(lp)); assertFalse(mol.contains(lp1)); }
@Test public void testAtomContainer_int_int_int_int() { // create an empty container with predefined // array lengths IAtomContainer ac = new AtomContainer(5, 6, 1, 2); Assert.assertEquals(0, ac.getAtomCount()); Assert.assertEquals(0, ac.getElectronContainerCount()); // test whether the ElectronContainer is correctly initialized ac.addBond(ac.getBuilder().newInstance(IBond.class, ac.getBuilder().newInstance(IAtom.class, "C"), ac.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); ac.addLonePair(ac.getBuilder().newInstance(ILonePair.class, ac.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testDebugAtomContainer_int_int_int_int() { // create an empty container with predefined // array lengths IAtomContainer ac = new DebugAtomContainer(5, 6, 1, 2); Assert.assertEquals(0, ac.getAtomCount()); Assert.assertEquals(0, ac.getElectronContainerCount()); // test whether the ElectronContainer is correctly initialized ac.addBond(ac.getBuilder().newInstance(IBond.class, ac.getBuilder().newInstance(IAtom.class, "C"), ac.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); ac.addLonePair(ac.getBuilder().newInstance(ILonePair.class, ac.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testAtomContainer_int_int_int_int() { // create an empty container with predefined // array lengths IAtomContainer ac = new AtomContainer(5, 6, 1, 2); Assert.assertEquals(0, ac.getAtomCount()); Assert.assertEquals(0, ac.getElectronContainerCount()); // test whether the ElectronContainer is correctly initialized ac.addBond(ac.getBuilder().newInstance(IBond.class, ac.getBuilder().newInstance(IAtom.class, "C"), ac.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); ac.addLonePair(ac.getBuilder().newInstance(ILonePair.class, ac.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testAtomContainer() { // create an empty container with in the constructor defined array lengths IAtomContainer container = new AtomContainer(); Assert.assertEquals(0, container.getAtomCount()); Assert.assertEquals(0, container.getBondCount()); // test whether the ElectronContainer is correctly initialized container.addBond(container.getBuilder().newInstance(IBond.class, container.getBuilder().newInstance(IAtom.class, "C"), container.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); container.addLonePair(container.getBuilder().newInstance(ILonePair.class, container.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testLonePairs() throws Exception { IAtomContainer container = new AtomContainer(); container.addAtom(container.getBuilder().newInstance(IAtom.class, "I")); container.addLonePair(container.getBuilder().newInstance(ILonePair.class, container.getAtom(0))); container.addAtom(container.getBuilder().newInstance(IAtom.class, "H")); container.getBuilder().newInstance(IBond.class, container.getAtom(0), container.getAtom(1), IBond.Order.SINGLE); double[][] matrix = ConnectionMatrix.getMatrix(container); Assert.assertEquals(2, matrix.length); Assert.assertEquals(2, matrix[0].length); }
@Test public void testDebugAtomContainer() { // create an empty container with in the constructor defined array lengths IAtomContainer container = new DebugAtomContainer(); Assert.assertEquals(0, container.getAtomCount()); Assert.assertEquals(0, container.getBondCount()); // test whether the ElectronContainer is correctly initialized container.addBond(container.getBuilder().newInstance(IBond.class, container.getBuilder().newInstance(IAtom.class, "C"), container.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); container.addLonePair(container.getBuilder().newInstance(ILonePair.class, container.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testAtomContainer() { // create an empty container with in the constructor defined array lengths IAtomContainer container = new AtomContainer(); Assert.assertEquals(0, container.getAtomCount()); Assert.assertEquals(0, container.getBondCount()); // test whether the ElectronContainer is correctly initialized container.addBond(container.getBuilder().newInstance(IBond.class, container.getBuilder().newInstance(IAtom.class, "C"), container.getBuilder().newInstance(IAtom.class, "C"), IBond.Order.DOUBLE)); container.addLonePair(container.getBuilder().newInstance(ILonePair.class, container.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testReplaceAtom_lonePair() { IAtomContainer container = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainer.class); IAtom atom1 = DefaultChemObjectBuilder.getInstance().newInstance(IAtom.class, "C"); atom1.setCharge(1.0); IAtom atom2 = DefaultChemObjectBuilder.getInstance().newInstance(IAtom.class, "N"); container.addAtom(atom1); container.addAtom(atom2); container.addBond(new Bond(atom1, atom2, Order.SINGLE)); container.addLonePair(1); IAtom atom3 = DefaultChemObjectBuilder.getInstance().newInstance(IAtom.class, "Br"); AtomContainerManipulator.replaceAtomByAtom(container, atom2, atom3); Assert.assertEquals(atom3, container.getLonePair(0).getAtom()); }
@Test public void testAtomContainer() { // create an empty container with in the constructor defined array lengths IAtomContainer container = new AtomContainer2(); Assert.assertEquals(0, container.getAtomCount()); Assert.assertEquals(0, container.getBondCount()); // test whether the ElectronContainer is correctly initialized IAtom a1 = container.getBuilder().newInstance(IAtom.class, "C"); IAtom a2 = container.getBuilder().newInstance(IAtom.class, "C"); container.addAtom(a1); container.addAtom(a2); container.addBond(container.getBuilder().newInstance(IBond.class, a1, a2, IBond.Order.DOUBLE)); container.addLonePair(container.getBuilder().newInstance(ILonePair.class, container.getBuilder().newInstance(IAtom.class, "N"))); }
@Test public void testAtomContainer_int_int_int_int() { // create an empty container with predefined // array lengths IAtomContainer ac = new AtomContainer2(5, 6, 1, 2); Assert.assertEquals(0, ac.getAtomCount()); Assert.assertEquals(0, ac.getElectronContainerCount()); // test whether the ElectronContainer is correctly initialized IAtom a1 = ac.getBuilder().newInstance(IAtom.class, "C"); IAtom a2 = ac.getBuilder().newInstance(IAtom.class, "C"); ac.addAtom(a1); ac.addAtom(a2); ac.addBond(ac.getBuilder().newInstance(IBond.class, a1, a2, IBond.Order.DOUBLE)); ac.addLonePair(ac.getBuilder().newInstance(ILonePair.class, ac.getBuilder().newInstance(IAtom.class, "N"))); }