// $HeadURL$
// $Id$
//
// Copyright 2006 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.iccbl.screensaver.soaputils;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import edu.mit.broad.chembank.shared.mda.webservices.service.FindBySimilarity1Fault1;
import edu.mit.broad.chembank.shared.mda.webservices.service.MoleculeWebServiceStub.ArrayOfMolecule;
import edu.mit.broad.chembank.shared.mda.webservices.service.MoleculeWebServiceStub.Molecule;
/**
* WARNING: this test requires an internet connection.
*
* @author <a mailto="john_sullivan@hms.harvard.edu">John Sullivan</a>
* @author <a mailto="andrew_tolopko@hms.harvard.edu">Andrew Tolopko</a>
*/
public class ChembankComponentTest extends TestCase
{
private static Logger log = Logger.getLogger(ChembankComponentTest.class);
@Override
protected void setUp() throws Exception
{
super.setUp();
}
public void testGetChembankIDsForSmiles1() throws RemoteException
{
String smiles = "Clc1ccc(\\C=C/c2c(C)n(C)n(c3ccccc3)c2=O)c(Cl)c1";
try {
long before = System.currentTimeMillis();
List<String> chembankIDs = PubchemChembankQueryUtility.getChembankIdsForSmiles(smiles);
log.info("query time: " + (System.currentTimeMillis()-before) +
", smiles: " + smiles + ": " + chembankIDs);
assertEquals(1, chembankIDs.size());
assertTrue(chembankIDs.contains("3081674"));
smiles = "O=C1CC(C)(C)CC(=O)C1C(c1ccccc1)C1=C(O)CC(C)(C)CC1=O";
before = System.currentTimeMillis();
chembankIDs = PubchemChembankQueryUtility.getChembankIdsForSmiles(smiles);
log.info("query time: " + (System.currentTimeMillis()-before) +
", smiles: " + smiles + ": " + chembankIDs);
assertEquals(1, chembankIDs.size());
assertTrue(chembankIDs.contains("1665724"));
} catch (FindBySimilarity1Fault1 e)
{
log.error("Failure: ", e);
fail("Fail with fault: " + e);
}
}
// public void testGetPubchemCidsForSmiles2()
// {
// try {
// List<String> pubchemCids = _pubchemSmilesOrInchiSearch.getPubchemCidsForSmilesOrInchi(
// "N#Cc1c(CN2CCN(C)CC2)n(C)c2ccccc12");
// assertEquals(1, pubchemCids.size());
// assertEquals("607443", pubchemCids.get(0));
// }
// catch (EutilsException e) {
// fail("PubchemSmilesOrInchiSearch threw an exception: " + e.getMessage());
// }
// }
//
// public void testGetPubchemCidsForSmiles3()
// {
// try {
// List<String> pubchemCids = _pubchemSmilesOrInchiSearch.getPubchemCidsForSmilesOrInchi(
// "NC(=S)c1cnc2ccccn2c1=N");
// assertEquals(1, pubchemCids.size());
// assertEquals("687414", pubchemCids.get(0));
// }
// catch (EutilsException e) {
// fail("PubchemSmilesOrInchiSearch threw an exception: " + e.getMessage());
// }
// }
//
// public void testGetPubchemCidsForSmiles4()
// {
// try {
// List<String> pubchemCids = _pubchemSmilesOrInchiSearch.getPubchemCidsForSmilesOrInchi(
// "CCOC(=O)C(C#N)C(=O)c1ccc(N)cc1");
// assertEquals(3, pubchemCids.size());
// assertTrue(pubchemCids.contains("577795"));
// assertTrue(pubchemCids.contains("684423"));
// assertTrue(pubchemCids.contains("684424"));
// }
// catch (EutilsException e) {
// fail("PubchemSmilesOrInchiSearch threw an exception: " + e.getMessage());
// }
// }
//
// public void testGetPubchemCidsForInvalidSmiles()
// {
// class MockedPubchemSmilesSearch extends PubchemSmilesOrInchiSearch
// {
// private boolean _gotDataOrServerError = false;
// public boolean gotDataOrServerError()
// {
// return _gotDataOrServerError;
// }
// public void reportError(String errorMessage)
// {
// if (errorMessage.startsWith("PUG server reported non-success status")) {
// _gotDataOrServerError = true;
// }
// }
// }
// try {
// MockedPubchemSmilesSearch mockedSearch = new MockedPubchemSmilesSearch();
// List<String> pubchemCids = mockedSearch.getPubchemCidsForSmilesOrInchi(
// "CCOC(=O)C(C#N)C(=O)c1ccc(N)cc1)"); // the dangling ')' is a actual encountered error
// assertNull(pubchemCids);
// assertTrue(mockedSearch.gotDataOrServerError());
// }
// catch (EutilsException e) {
// fail("PubchemSmilesOrInchiSearch threw an exception: " + e.getMessage());
// }
// }
}