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

📄 parsertest.java

📁 化学图形处理软件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* $Revision: 8325 $ $Author: djiao $ $Date: 2007-05-11 18:06:18 +0000 (Fr, 11 Mai 2007) $ *  * Copyright (C) 2004-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.smiles.smarts;import junit.framework.Test;import junit.framework.TestSuite;import org.openscience.cdk.DefaultChemObjectBuilder;import org.openscience.cdk.interfaces.IAtomContainer;import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;import org.openscience.cdk.isomorphism.matchers.smarts.AnyOrderQueryBond;import org.openscience.cdk.isomorphism.matchers.smarts.AromaticQueryBond;import org.openscience.cdk.isomorphism.matchers.smarts.OrderQueryBond;import org.openscience.cdk.isomorphism.matchers.smarts.SMARTSAtom;import org.openscience.cdk.smiles.SmilesParser;import org.openscience.cdk.smiles.smarts.SMARTSParser;import org.openscience.cdk.smiles.smarts.SMARTSQueryTool;import org.openscience.cdk.test.CDKTestCase;/** * JUnit test routines for the SMARTS parser. * * @cdk.module  test-smarts * @cdk.require ant1.6 * * @author      Egon Willighagen */public class ParserTest extends CDKTestCase {        public ParserTest() {}    public ParserTest(String testName) {        super(testName);    }        public static Test suite() {        return new TestSuite(ParserTest.class);    }        public void parse(String smarts) throws Exception {    	SMARTSParser.parse(smarts);    }    public int match(String smarts, String smiles) throws Exception {   	 SMARTSQueryTool sqt = new SMARTSQueryTool(smarts);   	 SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());   	 IAtomContainer atomContainer = sp.parseSmiles(smiles);     	 boolean status = sqt.matches(atomContainer);   	 if (status) {   		 int nmatch = sqt.countMatches();   		 return nmatch;   	 } else {   		 return 0;   	 }   }        public void testQueryAtomCreation() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("*");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testAliphaticAtom() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("A");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testAromaticAtom() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("a");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testDegree() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("[D2]");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testImplicitHCount() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("[h3]");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testTotalHCount() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("[H2]");    	assertEquals(1, container.getAtomCount());    	org.openscience.cdk.interfaces.IAtom atom = container.getAtom(0);    	assertTrue(atom instanceof SMARTSAtom);    }    public void testSingleBond() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("C-C");    	assertEquals(2, container.getAtomCount());    	assertEquals(1, container.getBondCount());    	org.openscience.cdk.interfaces.IBond bond = container.getBond(0);    	assertTrue(bond instanceof OrderQueryBond);    	OrderQueryBond qBond = (OrderQueryBond)bond;    	assertEquals(1.0, qBond.getOrder(), 0.001);    }    public void testDoubleBond() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("C=C");    	assertEquals(2, container.getAtomCount());    	assertEquals(1, container.getBondCount());    	org.openscience.cdk.interfaces.IBond bond = container.getBond(0);    	assertTrue(bond instanceof OrderQueryBond);    	OrderQueryBond qBond = (OrderQueryBond)bond;    	assertEquals(2.0, qBond.getOrder(), 0.001);    }    public void testTripleBond() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("C#C");    	assertEquals(2, container.getAtomCount());    	assertEquals(1, container.getBondCount());    	org.openscience.cdk.interfaces.IBond bond = container.getBond(0);    	assertTrue(bond instanceof OrderQueryBond);    	OrderQueryBond qBond = (OrderQueryBond)bond;    	assertEquals(3.0, qBond.getOrder(), 0.001);    }    public void testAromaticBond() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("C:C");    	assertEquals(2, container.getAtomCount());    	assertEquals(1, container.getBondCount());    	org.openscience.cdk.interfaces.IBond bond = container.getBond(0);    	assertTrue(bond instanceof AromaticQueryBond);    }    public void testAnyOrderBond() throws Exception {    	QueryAtomContainer container = SMARTSParser.parse("C~C");    	assertEquals(2, container.getAtomCount());    	assertEquals(1, container.getBondCount());    	org.openscience.cdk.interfaces.IBond bond = container.getBond(0);    	assertTrue(bond instanceof AnyOrderQueryBond);    }    /**     * From http://wiki.cubic.uni-koeln.de/cdkwiki/doku.php?id=parsertest.java.     */    public void testPattern1() throws Exception {        parse("[CX4]");    }    public void testPattern2() throws Exception {        parse("[$([CX2](=C)=C)]");    }    public void testPattern3() throws Exception {        parse("[$([CX3]=[CX3])]");    }    public void testPattern4() throws Exception {        parse("[$([CX2]#C)]");    }    public void testPattern5() throws Exception {        parse("[CX3]=[OX1]");    }    public void testPattern6() throws Exception {        parse("[$([CX3]=[OX1]),$([CX3+]-[OX1-])]");    }    public void testPattern7() throws Exception {        parse("[CX3](=[OX1])C");    }    public void testPattern8() throws Exception {        parse("[OX1]=CN");    }    public void testPattern9() throws Exception {        parse("[CX3](=[OX1])O");    }    public void testPattern10() throws Exception {        parse("[CX3](=[OX1])[F,Cl,Br,I]");    }    public void testPattern11() throws Exception {        parse("[CX3H1](=O)[#6]");    }    public void testPattern12() throws Exception {        parse("[CX3](=[OX1])[OX2][CX3](=[OX1])");    }    public void testPattern13() throws Exception {        parse("[NX3][CX3](=[OX1])[#6]");    }    public void testPattern14() throws Exception {        parse("[NX3][CX3]=[NX3+]");    }    public void testPattern15() throws Exception {        parse("[NX3,NX4+][CX3](=[OX1])[OX2,OX1-]");    }    public void testPattern16() throws Exception {        parse("[NX3][CX3](=[OX1])[OX2H0]");    }    public void testPattern17() throws Exception {        parse("[NX3,NX4+][CX3](=[OX1])[OX2H,OX1-]");    }    public void testPattern18() throws Exception {        parse("[CX3](=O)[O-]");    }    public void testPattern19() throws Exception {        parse("[CX3](=[OX1])(O)O");    }    public void testPattern20() throws Exception {        parse("[CX3](=[OX1])([OX2])[OX2H,OX1H0-1]");    }    public void testPattern21() throws Exception {        parse("[CX3](=O)[OX2H1]");    }    public void testPattern22() throws Exception {        parse("[CX3](=O)[OX1H0-,OX2H1]");    }    public void testPattern23() throws Exception {        parse("[NX3][CX2]#[NX1]");    }    public void testPattern24() throws Exception {        parse("[#6][CX3](=O)[OX2H0][#6]");    }    public void testPattern25() throws Exception {        parse("[#6][CX3](=O)[#6]");    }    public void testPattern26() throws Exception {        parse("[OD2]([#6])[#6]");    }    public void testPattern27() throws Exception {        parse("[H]");    }    public void testPattern28() throws Exception {        parse("[!#1]");    }    public void testPattern29() throws Exception {        parse("[H+]");    }    public void testPattern30() throws Exception {        parse("[+H]");    }    public void testPattern31() throws Exception {        parse("[NX3;H2,H1;!$(NC=O)]");    }    public void testPattern32() throws Exception {        parse("[NX3][CX3]=[CX3]");    }    public void testPattern33() throws Exception {        parse("[NX3;H2,H1;!$(NC=O)].[NX3;H2,H1;!$(NC=O)]");    }    public void testPattern34() throws Exception {        parse("[NX3][$(C=C),$(cc)]");    }    public void testPattern35() throws Exception {        parse("[NX3,NX4+][CX4H]([*])[CX3](=[OX1])[O,N]");    }    public void testPattern36() throws Exception {        parse("[NX3H2,NH3X4+][CX4H]([*])[CX3](=[OX1])[NX3,NX4+][CX4H]([*])[CX3](=[OX1])[OX2H,OX1-]");    }    public void testPattern37() throws Exception {        parse("[$([NX3H2,NX4H3+]),$([NX3H](C)(C))][CX4H]([*])[CX3](=[OX1])[OX2H,OX1-,N]");    }    public void testPattern38() throws Exception {        parse("[CH3X4]");    }    public void testPattern39() throws Exception {        parse("[CH2X4][CH2X4][CH2X4][NHX3][CH0X3](=[NH2X3+,NHX2+0])[NH2X3]");    }    public void testPattern40() throws Exception {        parse("[CH2X4][CX3](=[OX1])[NX3H2]");    }    public void testPattern41() throws Exception {        parse("[CH2X4][CX3](=[OX1])[OH0-,OH]");    }    public void testPattern42() throws Exception {        parse("[CH2X4][SX2H,SX1H0-]");    }    public void testPattern43() throws Exception {        parse("[CH2X4][CH2X4][CX3](=[OX1])[OH0-,OH]");    }    public void testPattern44() throws Exception {        parse("[$([$([NX3H2,NX4H3+]),$([NX3H](C)(C))][CX4H2][CX3](=[OX1])[OX2H,OX1-,N])]");    }    public void testPattern45() throws Exception {        parse("[CH2X4][#6X3]1:[$([#7X3H+,#7X2H0+0]:[#6X3H]:[#7X3H]),$([#7X3H])]:[#6X3H]:[$([#7X3H+,#7X2H0+0]:[#6X3H]:[#7X3H]),$([#7X3H])]:[#6X3H]1");    }    public void testPattern47() throws Exception {        parse("[CHX4]([CH3X4])[CH2X4][CH3X4]");    }    public void testPattern48() throws Exception {        parse("[CH2X4][CHX4]([CH3X4])[CH3X4]");    }    public void testPattern49() throws Exception {        parse("[CH2X4][CH2X4][CH2X4][CH2X4][NX4+,NX3+0]");    }    public void testPattern50() throws Exception {        parse("[CH2X4][CH2X4][SX2][CH3X4]");    }    public void testPattern51() throws Exception {        parse("[CH2X4][cX3]1[cX3H][cX3H][cX3H][cX3H][cX3H]1");    }    public void testPattern52() throws Exception {        parse("[$([NX3H,NX4H2+]),$([NX3](C)(C)(C))]1[CX4H]([CH2][CH2][CH2]1)[CX3](=[OX1])[OX2H,OX1-,N]");    }    public void testPattern53() throws Exception {        parse("[CH2X4][OX2H]");    }    public void testPattern54() throws Exception {        parse("[NX3][CX3]=[SX1]");    }    public void testPattern55() throws Exception {        parse("[CHX4]([CH3X4])[OX2H]");    }    public void testPattern56() throws Exception {        parse("[CH2X4][cX3]1[cX3H][nX3H][cX3]2[cX3H][cX3H][cX3H][cX3H][cX3]12");    }    public void testPattern57() throws Exception {        parse("[CH2X4][cX3]1[cX3H][cX3H][cX3]([OHX2,OH0X1-])[cX3H][cX3H]1");    }    public void testPattern58() throws Exception {        parse("[CHX4]([CH3X4])[CH3X4]");    }    public void testPattern59() throws Exception {        parse("[CH3X4]");    }    public void testPattern60() throws Exception {        parse("[CH2X4][CH2X4][CH2X4][NHX3][CH0X3](=[NH2X3+,NHX2+0])[NH2X3]");    }    public void testPattern61() throws Exception {        parse("[CH2X4][CX3](=[OX1])[NX3H2]");    }    public void testPattern62() throws Exception {        parse("[CH2X4][CX3](=[OX1])[OH0-,OH]");    }    public void testPattern63() throws Exception {        parse("[CH2X4][SX2H,SX1H0-]");    }    public void testPattern64() throws Exception {        parse("[CH2X4][CH2X4][CX3](=[OX1])[OH0-,OH]");

⌨️ 快捷键说明

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