/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * */ package org.biojava.nbio.structure; import org.biojava.nbio.structure.io.mmcif.ChemCompGroupFactory; import org.biojava.nbio.structure.io.mmcif.ChemCompProvider; import org.biojava.nbio.structure.io.mmcif.DownloadChemCompProvider; import org.biojava.nbio.structure.io.mmcif.ReducedChemCompProvider; import org.biojava.nbio.structure.io.mmcif.chem.PolymerType; import org.biojava.nbio.structure.io.mmcif.chem.ResidueType; import org.biojava.nbio.structure.io.mmcif.model.ChemComp; import org.junit.Test; import static org.junit.Assert.*; public class ChemCompTest { @Test public void testALA(){ String chemID = "ALA"; ChemComp cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc.getPolymerType()); assertEquals(cc.getPolymerType(), PolymerType.peptide); assertNotNull("residue type has not been set!", cc.getResidueType()); assertTrue (" is not amino ", cc.getResidueType().equals(ResidueType.lPeptideLinking)); } @Test public void testMEA(){ String chemID = "MEA"; // also test replacing providers... ChemCompProvider oldProvider = ChemCompGroupFactory.getChemCompProvider(); DownloadChemCompProvider all = new DownloadChemCompProvider(); ChemCompGroupFactory.setChemCompProvider(all); ChemComp cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc); assertTrue(" is not mea" , cc.getId().equals(chemID)); assertEquals(" one letter code is not correct", "F", cc.getOne_letter_code()); assertEquals("MEA",cc.getThree_letter_code()); assertNotNull(cc.getPolymerType()); assertEquals( PolymerType.peptide, cc.getPolymerType()); assertNotNull("residue type has not been set!", cc.getResidueType()); assertTrue (" is not amino ", cc.getResidueType().equals(ResidueType.lPeptideLinking)); Group g = ChemCompGroupFactory.getGroupFromChemCompDictionary(chemID); assertTrue( g.getType().equals(GroupType.AMINOACID)); ChemCompGroupFactory.setChemCompProvider(oldProvider); } @Test public void testPRR(){ ChemCompProvider oldProvider = ChemCompGroupFactory.getChemCompProvider(); DownloadChemCompProvider all = new DownloadChemCompProvider(); ChemCompGroupFactory.setChemCompProvider(all); String chemID = "PRR"; Group g = ChemCompGroupFactory.getGroupFromChemCompDictionary(chemID); assertTrue("Got back group of wrong type! " + g.getClass().getName(), g instanceof AminoAcid); AminoAcid aa = (AminoAcid) g; assertNotNull(aa.getAminoType()); assertTrue(aa.getAminoType().equals('X')); ChemCompGroupFactory.setChemCompProvider(oldProvider); } @Test public void testChangingProviders(){ // test for issue #145 String chemID = "MEA"; // first we test with reduced chem comp provider ChemCompGroupFactory.setChemCompProvider(new ReducedChemCompProvider()); ChemComp cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc); assertTrue(" is not mea" , cc.getId().equals(chemID)); assertTrue(cc.isEmpty()); // now we change to download chem comp provider ChemCompGroupFactory.setChemCompProvider(new DownloadChemCompProvider()); cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc); assertTrue(" is not mea" , cc.getId().equals(chemID)); assertEquals("MEA",cc.getThree_letter_code()); // now testing in opposite order // first we test with download chem comp provider ChemCompGroupFactory.setChemCompProvider(new DownloadChemCompProvider()); cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc); assertTrue(" is not mea" , cc.getId().equals(chemID)); assertEquals("MEA",cc.getThree_letter_code()); // now we change to reduced chem comp provider ChemCompGroupFactory.setChemCompProvider(new ReducedChemCompProvider()); cc = ChemCompGroupFactory.getChemComp(chemID); assertNotNull(cc); assertTrue(" is not mea" , cc.getId().equals(chemID)); //the cached description contains all information even with the ReducedProvider assertNotNull(cc.getThree_letter_code()); } }