📄 atomcontainertest.java
字号:
/* $RCSfile$ * $Author: egonw $ * $Date: 2007-02-08 23:35:55 +0000 (Do, 08 Feb 2007) $ * $Revision: 7921 $ * * Copyright (C) 1997-2007 The Chemistry Development Kit (CDK) project * * Contact: cdk-devel@lists.sourceforge.net * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * */package org.openscience.cdk.test;import java.util.Iterator;import java.util.List;import javax.vecmath.Point2d;import junit.framework.Test;import junit.framework.TestSuite;import org.openscience.cdk.CDKConstants;import org.openscience.cdk.DefaultChemObjectBuilder;import org.openscience.cdk.interfaces.IAtom;import org.openscience.cdk.interfaces.IAtomContainer;import org.openscience.cdk.interfaces.IAtomParity;import org.openscience.cdk.interfaces.IBond;import org.openscience.cdk.interfaces.IChemObjectBuilder;import org.openscience.cdk.interfaces.IChemObjectChangeEvent;import org.openscience.cdk.interfaces.IChemObjectListener;import org.openscience.cdk.interfaces.IElectronContainer;import org.openscience.cdk.interfaces.ILonePair;import org.openscience.cdk.interfaces.IMolecule;import org.openscience.cdk.interfaces.ISingleElectron;/** * Checks the funcitonality of the AtomContainer. * * @cdk.module test-data */public class AtomContainerTest extends CDKTestCase { protected IChemObjectBuilder builder; public AtomContainerTest(String name) { super(name); } public void setUp() { builder = DefaultChemObjectBuilder.getInstance(); } public static Test suite() { return new TestSuite(AtomContainerTest.class); } public void testSetAtoms_arrayIAtom() { IAtom[] atoms = new IAtom[4]; atoms[0] = builder.newAtom("C"); atoms[1] = builder.newAtom("C"); atoms[2] = builder.newAtom("C"); atoms[3] = builder.newAtom("O"); IAtomContainer ac = builder.newAtomContainer(); ac.setAtoms(atoms); assertEquals(4, ac.getAtomCount()); //assertEquals(4, ac.getAtoms().length); } /** * Only test wether the atoms are correctly cloned. */ public void testClone() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); Object clone = molecule.clone(); assertTrue(clone instanceof IAtomContainer); } public void testClone_IAtom() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); molecule.addAtom(builder.newAtom("C")); // 1 molecule.addAtom(builder.newAtom("C")); // 2 molecule.addAtom(builder.newAtom("C")); // 3 molecule.addAtom(builder.newAtom("C")); // 4 IAtomContainer clonedMol = (IAtomContainer)molecule.clone(); assertEquals(molecule.getAtomCount(), clonedMol.getAtomCount()); for (int f = 0; f < molecule.getAtomCount(); f++) { for (int g = 0; g < clonedMol.getAtomCount(); g++) { assertNotNull(molecule.getAtom(f)); assertNotNull(clonedMol.getAtom(g)); assertNotSame(molecule.getAtom(f), clonedMol.getAtom(g)); } } } public void testClone_IAtom2() throws Exception { IMolecule molecule = builder.newMolecule(); IAtom carbon = builder.newAtom("C"); carbon.setPoint2d(new Point2d(2, 4)); molecule.addAtom(carbon); // 1 // test cloning of Atoms IMolecule clonedMol = (IMolecule)molecule.clone(); carbon.setPoint2d(new Point2d(3, 1)); assertEquals(clonedMol.getAtom(0).getPoint2d().x, 2.0, 0.001); } public void testClone_IBond() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); molecule.addAtom(builder.newAtom("C")); // 1 molecule.addAtom(builder.newAtom("C")); // 2 molecule.addAtom(builder.newAtom("C")); // 3 molecule.addAtom(builder.newAtom("C")); // 4 molecule.addBond(0, 1, 2.0); // 1 molecule.addBond(1, 2, 1.0); // 2 molecule.addBond(2, 3, 1.0); // 3 IAtomContainer clonedMol = (IAtomContainer)molecule.clone(); assertNotNull(clonedMol); assertEquals(molecule.getBondCount(), clonedMol.getBondCount()); for (int f = 0; f < molecule.getElectronContainerCount(); f++) { for (int g = 0; g < clonedMol.getElectronContainerCount(); g++) { assertNotNull(molecule.getBond(f)); assertNotNull(clonedMol.getBond(g)); assertNotSame(molecule.getBond(f), clonedMol.getBond(g)); } } } public void testClone_IBond2() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); IAtom atom1 = builder.newAtom("C"); IAtom atom2 = builder.newAtom("C"); molecule.addAtom(atom1); // 1 molecule.addAtom(atom2); // 2 molecule.addBond(builder.newBond(atom1, atom2, 2.0)); // 1 // test cloning of atoms in bonds IAtomContainer clonedMol = (IAtomContainer)molecule.clone(); assertNotNull(clonedMol); assertNotSame(atom1, clonedMol.getBond(0).getAtom(0)); assertNotSame(atom2, clonedMol.getBond(0).getAtom(1)); } public void testClone_IBond3() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); IAtom atom1 = builder.newAtom("C"); IAtom atom2 = builder.newAtom("C"); molecule.addAtom(atom1); // 1 molecule.addAtom(atom2); // 2 molecule.addBond(builder.newBond(atom1, atom2, 2.0)); // 1 // test that cloned bonds contain atoms from cloned atomcontainer IAtomContainer clonedMol = (IAtomContainer)molecule.clone(); assertNotNull(clonedMol); assertTrue(clonedMol.contains(clonedMol.getBond(0).getAtom(0))); assertTrue(clonedMol.contains(clonedMol.getBond(0).getAtom(1))); } public void testClone_ILonePair() throws Exception { IAtomContainer molecule = builder.newAtomContainer(); IAtom atom1 = builder.newAtom("C"); IAtom atom2 = builder.newAtom("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(); assertNotNull(clonedMol); assertEquals(1, clonedMol.getConnectedLonePairsCount(clonedMol.getAtom(0))); } public void testGetConnectedElectronContainersList_IAtom() { // acetone molecule IMolecule acetone = builder.newMolecule(); IAtom c1 = builder.newAtom("C"); IAtom c2 = builder.newAtom("C"); IAtom o = builder.newAtom("O"); IAtom c3 = builder.newAtom("C"); acetone.addAtom(c1); acetone.addAtom(c2); acetone.addAtom(c3); acetone.addAtom(o); IBond b1 = builder.newBond(c1, c2,1); IBond b2 = builder.newBond(c1, o, 2); IBond b3 = builder.newBond(c1, c3,1); acetone.addBond(b1); acetone.addBond(b2); acetone.addBond(b3); assertEquals(1, acetone.getConnectedElectronContainersList(o).size()); assertEquals(3, acetone.getConnectedElectronContainersList(c1).size()); assertEquals(1, acetone.getConnectedElectronContainersList(c2).size()); assertEquals(1, acetone.getConnectedElectronContainersList(c3).size()); // add lone pairs on oxygen ILonePair lp1 = builder.newLonePair(o); ILonePair lp2 = builder.newLonePair(o); acetone.addLonePair(lp1); acetone.addLonePair(lp2); assertEquals(3, acetone.getConnectedElectronContainersList(o).size()); assertEquals(3, acetone.getConnectedElectronContainersList(c1).size()); assertEquals(1, acetone.getConnectedElectronContainersList(c2).size()); assertEquals(1, acetone.getConnectedElectronContainersList(c3).size()); } public void testGetConnectedBondsList_IAtom() { // acetone molecule IMolecule acetone = builder.newMolecule(); IAtom c1 = builder.newAtom("C"); IAtom c2 = builder.newAtom("C"); IAtom o = builder.newAtom("O"); IAtom c3 = builder.newAtom("C"); acetone.addAtom(c1); acetone.addAtom(c2); acetone.addAtom(c3); acetone.addAtom(o); IBond b1 = builder.newBond(c1, c2,1); IBond b2 = builder.newBond(c1, o, 2); IBond b3 = builder.newBond(c1, c3,1); acetone.addBond(b1); acetone.addBond(b2); acetone.addBond(b3); assertEquals(1, acetone.getConnectedBondsList(o).size()); assertEquals(3, acetone.getConnectedBondsList(c1).size()); assertEquals(1, acetone.getConnectedBondsList(c2).size()); assertEquals(1, acetone.getConnectedBondsList(c3).size()); // add lone pairs on oxygen ILonePair lp1 = builder.newLonePair(o); ILonePair lp2 = builder.newLonePair(o); acetone.addLonePair(lp1); acetone.addLonePair(lp2); assertEquals(1, acetone.getConnectedBondsList(o).size()); assertEquals(3, acetone.getConnectedBondsList(c1).size()); assertEquals(1, acetone.getConnectedBondsList(c2).size()); assertEquals(1, acetone.getConnectedBondsList(c3).size()); }// public void testGetConnectedBonds_IAtom() {// // acetone molecule// IMolecule acetone = builder.newMolecule();// // IAtom c1 = builder.newAtom("C");// IAtom c2 = builder.newAtom("C");// IAtom o = builder.newAtom("O");// IAtom c3 = builder.newAtom("C");// acetone.addAtom(c1);// acetone.addAtom(c2);// acetone.addAtom(c3);// acetone.addAtom(o);// IBond b1 = builder.newBond(c1, c2,1);// IBond b2 = builder.newBond(c1, o, 2);// IBond b3 = builder.newBond(c1, c3,1);// acetone.addBond(b1);// acetone.addBond(b2);// acetone.addBond(b3);// // assertEquals(1, acetone.getConnectedBondsVector(o).size());// assertEquals(3, acetone.getConnectedBondsVector(c1).size());// assertEquals(1, acetone.getConnectedBondsVector(c2).size());// assertEquals(1, acetone.getConnectedBondsVector(c3).size());// // // add lone pairs on oxygen// ILonePair lp1 = builder.newLonePair(o);// ILonePair lp2 = builder.newLonePair(o);// acetone.addElectronContainer(lp1);// acetone.addElectronContainer(lp2);//// assertEquals(1, acetone.getConnectedBondsVector(o).size());// assertEquals(3, acetone.getConnectedBondsVector(c1).size());// assertEquals(1, acetone.getConnectedBondsVector(c2).size());// assertEquals(1, acetone.getConnectedBondsVector(c3).size());// } public void testGetConnectedLonePairsList_IAtom() { // acetone molecule IMolecule acetone = builder.newMolecule(); IAtom c1 = builder.newAtom("C"); IAtom c2 = builder.newAtom("C"); IAtom o = builder.newAtom("O"); IAtom c3 = builder.newAtom("C"); acetone.addAtom(c1); acetone.addAtom(c2); acetone.addAtom(c3); acetone.addAtom(o); IBond b1 = builder.newBond(c1, c2,1); IBond b2 = builder.newBond(c1, o, 2); IBond b3 = builder.newBond(c1, c3,1); acetone.addBond(b1); acetone.addBond(b2); acetone.addBond(b3); assertEquals(0, acetone.getConnectedLonePairsList(o).size()); assertEquals(0, acetone.getConnectedLonePairsList(c1).size()); assertEquals(0, acetone.getConnectedLonePairsList(c2).size()); assertEquals(0, acetone.getConnectedLonePairsList(c3).size()); // add lone pairs on oxygen ILonePair lp1 = builder.newLonePair(o); ILonePair lp2 = builder.newLonePair(o); acetone.addLonePair(lp1); acetone.addLonePair(lp2); assertEquals(2, acetone.getConnectedLonePairsList(o).size()); assertEquals(0, acetone.getConnectedLonePairsList(c1).size()); assertEquals(0, acetone.getConnectedLonePairsList(c2).size()); assertEquals(0, acetone.getConnectedLonePairsList(c3).size()); } public void testRemoveAtomAndConnectedElectronContainers_IAtom() { // acetone molecule IMolecule acetone = builder.newMolecule(); IAtom c1 = builder.newAtom("C"); IAtom c2 = builder.newAtom("C"); IAtom o = builder.newAtom("O"); IAtom c3 = builder.newAtom("C"); acetone.addAtom(c1); acetone.addAtom(c2); acetone.addAtom(c3); acetone.addAtom(o); IBond b1 = builder.newBond(c1, c2,1); IBond b2 = builder.newBond(c1, o, 2); IBond b3 = builder.newBond(c1, c3,1); acetone.addBond(b1); acetone.addBond(b2); acetone.addBond(b3); // add lone pairs on oxygen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -