/************************************************************************* * * * 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.reachables; import com.act.reachables.WavefrontExpansion; import org.junit.Before; import org.junit.Test; import java.util.Map; import static org.junit.Assert.assertEquals; public class WavefrontExpansionTest { private Map<String, Integer> testCases; @Before public void setUp() throws Exception { testCases = new java.util.HashMap<>(); testCases.put("InChI=1S/ClH7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 0); testCases.put("InChI=1S/CH7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 1); testCases.put("InChI=1S/CCl9H7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 1); testCases.put("InChI=1S/ClC9H7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 9); testCases.put("InChI=1S/Cl9H7NOC/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 1); testCases.put("InChI=1S/C14H17NO8/c1-6(16)15-7-2-4-8(5-3-7)22-14-11(19)9(17)10(18)12(23-14)13(20)21/h2-5,9-12,14,17-19H,1H3,(H,15,16)(H,20,21)/t9-,10-,11+,12-,14+/m0/s1", 14); testCases.put("InChI=1S/C12H14N2O5/c13-8-3-1-7(2-4-8)11(17)14-9(12(18)19)5-6-10(15)16/h1-4,9H,5-6,13H2,(H,14,17)(H,15,16)(H,18,19)", 12); testCases.put("InChI=1S/C24H39NO/c1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-19-22-24(26)25-23-20-17-16-18-21-23/h9-10,16-18,20-21H,2-8,11-15,19,22H2,1H3,(H,25,26)", 24); testCases.put("InChI=1S/C6H7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 6); testCases.put("InChI=1S/Cl6H7NO/c7-5-1-3-6(8)4-2-5/h1-4,8H,7H2", 0); testCases.put("InChI=1S/Cd12H14N2O5/c13-8-3-1-7(2-4-8)11(17)14-9(12(18)19)5-6-10(15)16/h1-4,9H,5-6,13H2,(H,14,17)(H,15,16)(H,18,19)", 0); } @Test public void testCarbonCountingAccuratelyCountsCarbonsFromInchi() throws Exception { for (Map.Entry<String, Integer> testCase : testCases.entrySet()) { assertEquals(testCase.getValue(), WavefrontExpansion.countCarbons(testCase.getKey())); } } }