/************************************************************************* * * * This file is part of the 20n/act project. * * 20n/act enables DNA prediction for synthetic biology/bioengineering. * * Copyright (C) 2017 20n Labs, Inc. * * * * Please direct all queries to act@20n.com. * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * * * *************************************************************************/ package com.act.biointerpretation.sars; import chemaxon.formats.MolFormatException; import chemaxon.formats.MolImporter; import chemaxon.sss.search.SearchException; import chemaxon.struc.Molecule; import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class OneSubstrateSubstructureSarTest { private static final String BENZENE_INCHI = "InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"; private static final String CONTAINS_BENZENE_INCHI = "InChI=1S/C8H9NO2/c1-6(10)9-7-2-4-8(11)5-3-7/h2-5,11H,1H3,(H,9,10)"; private static final String NO_BENZENE_INCHI = "InChI=1S/C3H8/c1-3-2/h3H2,1-2H3"; private static final String INCHI_SETTINGS = "inchi"; private Molecule benzene; private Molecule containsBenzene; private Molecule noBenzene; @Before public void init() throws MolFormatException { benzene = MolImporter.importMol(BENZENE_INCHI, INCHI_SETTINGS); containsBenzene = MolImporter.importMol(CONTAINS_BENZENE_INCHI, INCHI_SETTINGS); noBenzene = MolImporter.importMol(NO_BENZENE_INCHI, INCHI_SETTINGS); } @Test public void oneSubstrateContainsSubstructure() throws SearchException { Sar sar = new OneSubstrateSubstructureSar(benzene); List<Molecule> substrates = Arrays.asList(containsBenzene); assertTrue("Substrate contains substructure.", sar.test(substrates)); } @Test public void oneSubstrateDoesntContainsSubstructure() throws SearchException { Sar sar = new OneSubstrateSubstructureSar(benzene); List<Molecule> substrates = Arrays.asList(noBenzene); assertFalse("Substrate does not contain substructure.", sar.test(substrates)); } @Test public void twoSubstratesRejects() throws SearchException { Sar sar = new OneSubstrateSubstructureSar(benzene); List<Molecule> substrates = Arrays.asList(noBenzene, containsBenzene); assertFalse("Can't operate on two substrates", sar.test(substrates)); } @Test public void NoSubstratesRejects() throws SearchException { Sar sar = new OneSubstrateSubstructureSar(benzene); List<Molecule> substrates = new ArrayList<>(); assertFalse("Can't operate on no substrates", sar.test(substrates)); } }