⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chemmodelmanipulatortest.java

📁 化学图形处理软件
💻 JAVA
字号:
/* $Revision: 7691 $ $Author: egonw $ $Date: 2007-01-11 12:47:48 +0100 (Thu, 11 Jan 2007) $ *  * Copyright (C) 2007  Egon Willighagen <egonw@users.sf.net> *  * 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.tools.manipulator;import java.io.InputStream;import java.util.Iterator;import java.util.List;import junit.framework.Test;import junit.framework.TestSuite;import org.openscience.cdk.Atom;import org.openscience.cdk.AtomContainer;import org.openscience.cdk.Bond;import org.openscience.cdk.ChemModel;import org.openscience.cdk.ChemObject;import org.openscience.cdk.Molecule;import org.openscience.cdk.MoleculeSet;import org.openscience.cdk.Reaction;import org.openscience.cdk.ReactionSet;import org.openscience.cdk.interfaces.IAtom;import org.openscience.cdk.interfaces.IAtomContainer;import org.openscience.cdk.interfaces.IBond;import org.openscience.cdk.interfaces.IChemModel;import org.openscience.cdk.interfaces.IMolecule;import org.openscience.cdk.interfaces.IMoleculeSet;import org.openscience.cdk.interfaces.IReaction;import org.openscience.cdk.interfaces.IReactionSet;import org.openscience.cdk.io.MDLV2000Reader;import org.openscience.cdk.test.CDKTestCase;import org.openscience.cdk.tools.LoggingTool;import org.openscience.cdk.tools.manipulator.ChemModelManipulator;/** * @cdk.module test-standard */public class ChemModelManipulatorTest extends CDKTestCase {    	private final static LoggingTool logger = new LoggingTool(ChemModelManipulatorTest.class);		IMolecule molecule1 = null;	IMolecule molecule2 = null;	IAtom atomInMol1 = null;	IBond bondInMol1 = null;	IAtom atomInMol2 = null;	IMoleculeSet moleculeSet = null;	IReaction reaction = null;	IReactionSet reactionSet = null;	IChemModel chemModel = null;		public ChemModelManipulatorTest(String name) {        super(name);    }    	public static Test suite() {		return new TestSuite(ChemModelManipulatorTest.class);	}		public void setUp() {		molecule1 = new Molecule();		atomInMol1 = new Atom("Cl");		atomInMol1.setCharge(-1.0);		atomInMol1.setFormalCharge(-1);		atomInMol1.setHydrogenCount(1);		molecule1.addAtom(atomInMol1);		molecule1.addAtom(new Atom("Cl"));		bondInMol1 = new Bond(atomInMol1, molecule1.getAtom(1));		molecule1.addBond(bondInMol1);		molecule2 = new Molecule();		atomInMol2 = new Atom("O");		atomInMol2.setHydrogenCount(2);		molecule2.addAtom(atomInMol2);		moleculeSet = new MoleculeSet();		moleculeSet.addAtomContainer(molecule1);		moleculeSet.addAtomContainer(molecule2);		reaction = new Reaction();		reaction.addReactant(molecule1);		reaction.addProduct(molecule2);		reactionSet = new ReactionSet();		reactionSet.addReaction(reaction);		chemModel = new ChemModel();		chemModel.setMoleculeSet(moleculeSet);		chemModel.setReactionSet(reactionSet);	}    public void testGetAllAtomContainers_IChemModel() throws Exception {        String filename = "data/mdl/a-pinene.mol";        logger.info("Testing: " + filename);        InputStream ins = this.getClass().getClassLoader().getResourceAsStream(filename);        MDLV2000Reader reader = new MDLV2000Reader(ins);        ChemModel chemFile = (ChemModel)reader.read((ChemObject)new ChemModel());        assertNotNull(chemFile);        List containersList = ChemModelManipulator.getAllAtomContainers(chemFile);        assertEquals(1, containersList.size());    }        public void testNewChemModel_IAtomContainer()    {    	IAtomContainer ac = new AtomContainer();    	IChemModel model = ChemModelManipulator.newChemModel(ac);    	assertEquals(ac, model.getMoleculeSet().getAtomContainer(0));    }        public void testGetAtomCount_IChemModel()    {    	int count = ChemModelManipulator.getAtomCount(chemModel);    	assertEquals(6, count);    }        public void testGetBondCount_IChemModel()    {    	int count = ChemModelManipulator.getBondCount(chemModel);    	assertEquals(2, count);    }        public void testRemoveElectronContainer_IChemModel_IElectronContainer()    {    	IMolecule mol1 = new Molecule();		mol1.addAtom(new Atom("Cl"));		mol1.addAtom(new Atom("Cl"));		IBond bond1 = new Bond(mol1.getAtom(0), mol1.getAtom(1));		mol1.addBond(bond1);		IMolecule mol2 = new Molecule();		mol2.addAtom(new Atom("I"));		mol2.addAtom(new Atom("I"));		IBond bond2 = new Bond(mol2.getAtom(0), mol2.getAtom(1));		mol2.addBond(bond2);		IMoleculeSet molSet = new MoleculeSet();		molSet.addAtomContainer(mol1);		IReaction r = new Reaction();		r.addProduct(mol2);		IReactionSet rSet = new ReactionSet();		rSet.addReaction(r);		IChemModel model = new ChemModel();		model.setMoleculeSet(molSet);		model.setReactionSet(rSet);		IBond otherBond = new Bond();		assertEquals(2, ChemModelManipulator.getBondCount(model));		ChemModelManipulator.removeElectronContainer(model, otherBond);		assertEquals(2, ChemModelManipulator.getBondCount(model));		ChemModelManipulator.removeElectronContainer(model, bond1);		assertEquals(1, ChemModelManipulator.getBondCount(model));		ChemModelManipulator.removeElectronContainer(model, bond2);		assertEquals(0, ChemModelManipulator.getBondCount(model));    }        public void testRemoveAtomAndConnectedElectronContainers_IChemModel_IAtom()    {    	IMolecule mol1 = new Molecule();    	IAtom atom1 = new Atom("Cl");		mol1.addAtom(atom1);		mol1.addAtom(new Atom("Cl"));		IBond bond1 = new Bond(mol1.getAtom(0), mol1.getAtom(1));		mol1.addBond(bond1);		IMolecule mol2 = new Molecule();		IAtom atom2 = new Atom("I");		mol2.addAtom(atom2);		mol2.addAtom(new Atom("I"));		IBond bond2 = new Bond(mol2.getAtom(0), mol2.getAtom(1));		mol2.addBond(bond2);		IMoleculeSet molSet = new MoleculeSet();		molSet.addAtomContainer(mol1);		IReaction r = new Reaction();		r.addProduct(mol2);		IReactionSet rSet = new ReactionSet();		rSet.addReaction(r);		IChemModel model = new ChemModel();		model.setMoleculeSet(molSet);		model.setReactionSet(rSet);		IAtom otherAtom = new Atom("Cl");		assertEquals(2, ChemModelManipulator.getBondCount(model));		assertEquals(4, ChemModelManipulator.getAtomCount(model));		ChemModelManipulator.removeAtomAndConnectedElectronContainers(model, otherAtom);		assertEquals(2, ChemModelManipulator.getBondCount(model));		assertEquals(4, ChemModelManipulator.getAtomCount(model));		ChemModelManipulator.removeAtomAndConnectedElectronContainers(model, atom1);		assertEquals(1, ChemModelManipulator.getBondCount(model));		assertEquals(3, ChemModelManipulator.getAtomCount(model));		ChemModelManipulator.removeAtomAndConnectedElectronContainers(model, atom2);		assertEquals(0, ChemModelManipulator.getBondCount(model));		assertEquals(2, ChemModelManipulator.getAtomCount(model));    }        public void testSetAtomProperties_IChemModel_Object_Object()    {    	String key = "key";    	String value = "value";    	ChemModelManipulator.setAtomProperties(chemModel, key, value);		assertEquals(value, atomInMol1.getProperty(key));		assertEquals(value, atomInMol2.getProperty(key));    }        public void testGetRelevantAtomContainer_IChemModel_IAtom()    {    	IAtomContainer ac1 = ChemModelManipulator.getRelevantAtomContainer(chemModel, atomInMol1);		assertEquals(molecule1, ac1);		IAtomContainer ac2 = ChemModelManipulator.getRelevantAtomContainer(chemModel, atomInMol2);		assertEquals(molecule2, ac2);    }        public void testGetRelevantAtomContainer_IChemModel_IBond()    {    	IAtomContainer ac1 = ChemModelManipulator.getRelevantAtomContainer(chemModel, bondInMol1);		assertEquals(molecule1, ac1);    }        public void testGetAllChemObjects_IChemModel()    {    	List list = ChemModelManipulator.getAllChemObjects(chemModel);    	assertEquals(5, list.size());    	//int atomCount = 0; // not traversed    	//int bondCount = 0; // not traversed    	int molCount = 0;    	int molSetCount = 0;    	int reactionCount = 0;    	int reactionSetCount = 0;    	for (Iterator iter = list.iterator(); iter.hasNext();) {    		Object o = iter.next();    		//if (o instanceof IAtom) ++atomCount;    		//if (o instanceof IBond) ++bondCount;    		if (o instanceof IMolecule) ++molCount;    		else if (o instanceof IMoleculeSet) ++molSetCount;    		else if (o instanceof IReaction) ++reactionCount;    		else if (o instanceof IReactionSet) ++reactionSetCount;    		else fail("Unexpected Object of type " + o.getClass());    	}    	//assertEquals(3, atomCount);    	//assertEquals(1, bondCount);    	assertEquals(2, molCount);    	assertEquals(1, molSetCount);    	assertEquals(1, reactionCount);    	assertEquals(1, reactionSetCount);    }        public void testCreateNewMolecule_IChemModel()    {    	IChemModel model = new ChemModel();    	IAtomContainer ac = ChemModelManipulator.createNewMolecule(model);    	assertEquals(1, model.getMoleculeSet().getAtomContainerCount());    	assertEquals(ac, model.getMoleculeSet().getAtomContainer(0));    }        public void testGetRelevantReaction_IChemModel_IAtom()    {    	IReaction r = ChemModelManipulator.getRelevantReaction(chemModel, atomInMol1);    	assertNotNull(r);    	assertEquals(reaction, r);    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -