X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2FMCview%2FPDBfileTest.java;h=c07c62e0f19550d2ee53ece8870bd9fd9d4ef015;hb=483e7163b1fb8d4bcb9393014816c944befce328;hp=a4fd28655b471929b92bd33d1f2839f99f1c4847;hpb=c93b9ad2ebfab4cad4608a8890132918589576be;p=jalview.git diff --git a/test/MCview/PDBfileTest.java b/test/MCview/PDBfileTest.java index a4fd286..c07c62e 100644 --- a/test/MCview/PDBfileTest.java +++ b/test/MCview/PDBfileTest.java @@ -1,3 +1,23 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview 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. + * + * Jalview 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 Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package MCview; import static org.testng.AssertJUnit.assertEquals; @@ -6,21 +26,35 @@ import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.PDBEntry; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; -import jalview.io.AppletFormatAdapter; +import jalview.gui.JvOptionPane; +import jalview.io.DataSourceType; +import jalview.structure.StructureImportSettings; import java.io.IOException; +import java.util.List; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class PDBfileTest { - @Test + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + + @Test(groups = { "Functional" }) public void testIsRna() { SequenceI seq = new Sequence("Seq1", "CGAU"); @@ -42,26 +76,28 @@ public class PDBfileTest * * @throws IOException */ - @Test + @Test(groups = { "Functional" }) public void testParse() throws IOException { /* * Constructor with file path performs parse() */ PDBfile pf = new PDBfile(false, false, false, "examples/3W5V.pdb", - AppletFormatAdapter.FILE); + DataSourceType.FILE); - assertEquals("3W5V", pf.id); + assertEquals("3W5V", pf.getId()); // verify no alignment annotations created assertNull(getAlignmentAnnotations(pf)); - assertEquals(4, pf.chains.size()); - assertEquals("A", pf.chains.get(0).id); - assertEquals("B", pf.chains.get(1).id); - assertEquals("C", pf.chains.get(2).id); - assertEquals("D", pf.chains.get(3).id); + assertEquals(4, pf.getChains().size()); + assertEquals("A", pf.getChains().get(0).id); + assertEquals("B", pf.getChains().get(1).id); + assertEquals("C", pf.getChains().get(2).id); + assertEquals("D", pf.getChains().get(3).id); + + PDBChain chainA = pf.getChains().get(0); + SequenceI seqA = pf.getSeqs().get(0); - PDBChain chainA = pf.chains.get(0); assertEquals(0, chainA.seqstart); // not set assertEquals(0, chainA.seqend); // not set assertEquals(18, chainA.sequence.getStart()); @@ -70,32 +106,47 @@ public class PDBfileTest assertTrue(chainA.sequence.getSequenceAsString().endsWith("WNVEVY")); assertEquals("3W5V|A", chainA.sequence.getName()); assertNull(chainA.sequence.getAnnotation()); - assertEquals(1, chainA.sequence.getPDBId().size()); - PDBEntry pdb = chainA.sequence.getPDBId().get(0); + assertEquals(1, seqA.getAllPDBEntries().size()); + PDBEntry pdb = seqA.getAllPDBEntries().get(0); assertEquals("A", pdb.getChainCode()); assertEquals("PDB", pdb.getType()); assertEquals("3W5V", pdb.getId()); - PDBChain chainB = pf.chains.get(1); + PDBChain chainB = pf.getChains().get(1); assertEquals(1, chainB.sequence.getStart()); assertEquals(96, chainB.sequence.getEnd()); assertTrue(chainB.sequence.getSequenceAsString().startsWith("ATYNVK")); assertTrue(chainB.sequence.getSequenceAsString().endsWith("KEEELT")); assertEquals("3W5V|B", chainB.sequence.getName()); - PDBChain chainC = pf.chains.get(2); + PDBChain chainC = pf.getChains().get(2); assertEquals(18, chainC.sequence.getStart()); assertEquals(314, chainC.sequence.getEnd()); assertTrue(chainC.sequence.getSequenceAsString().startsWith("KCSKKQEE")); assertTrue(chainC.sequence.getSequenceAsString().endsWith("WNVEVY")); assertEquals("3W5V|C", chainC.sequence.getName()); - PDBChain chainD = pf.chains.get(3); + PDBChain chainD = pf.getChains().get(3); assertEquals(1, chainD.sequence.getStart()); assertEquals(96, chainD.sequence.getEnd()); assertTrue(chainD.sequence.getSequenceAsString().startsWith("ATYNVK")); assertTrue(chainD.sequence.getSequenceAsString().endsWith("KEEELT")); assertEquals("3W5V|D", chainD.sequence.getName()); + + /* + * verify PDB-related data in parsed sequences + */ + List seqs = pf.getSeqs(); + assertEquals(4, seqs.size()); + assertEquals("3W5V|A", seqs.get(0).getName()); + assertEquals("3W5V|B", seqs.get(1).getName()); + assertEquals("3W5V|C", seqs.get(2).getName()); + assertEquals("3W5V|D", seqs.get(3).getName()); + assertEquals(1, seqs.get(0).getAllPDBEntries().size()); + PDBEntry pdbe = seqs.get(0).getAllPDBEntries().get(0); + assertEquals("A", pdbe.getChainCode()); + assertEquals("3W5V", pdbe.getId()); + assertEquals(PDBEntry.Type.PDB.toString(), pdbe.getType()); } /** @@ -104,11 +155,11 @@ public class PDBfileTest * * @throws IOException */ - @Test + @Test(groups = { "Functional" }) public void testParse_withAnnotations_noSS() throws IOException { PDBfile pf = new PDBfile(true, false, false, "examples/3W5V.pdb", - AppletFormatAdapter.FILE); + DataSourceType.FILE); AlignmentAnnotation[] anns = getAlignmentAnnotations(pf); assertEquals(4, anns.length); @@ -162,11 +213,11 @@ public class PDBfileTest * * @throws IOException */ - @Test + @Test(groups = { "Functional" }) public void testParse_withJmol_noAnnotations() throws IOException { PDBfile pf = new PDBfile(false, true, false, "examples/3W5V.pdb", - AppletFormatAdapter.FILE); + DataSourceType.FILE); /* * alignment annotations _are_ created anyway (in @@ -179,7 +230,7 @@ public class PDBfileTest * no sequence annotations created - tempFactor annotation is not added * unless the flag to 'addAlignmentAnnotations' is set true */ - for (PDBChain c : pf.chains) + for (PDBChain c : pf.getChains()) { assertNull(c.sequence.getAnnotation()); } @@ -191,12 +242,12 @@ public class PDBfileTest * * @throws IOException */ - @Test + @Test(groups = { "Functional" }) public void testParse_withJmolAddAlignmentAnnotations() throws IOException { PDBfile pf = new PDBfile(true, true, false, "examples/3W5V.pdb", - AppletFormatAdapter.FILE); + DataSourceType.FILE); /* * Alignment annotations for TempFactor, SecStruct, per sequence (chain) @@ -215,10 +266,10 @@ public class PDBfileTest /* * PDBFileWithJmol (unlike PDBChain!) leaves PDB id upper case */ - assertEquals("Secondary Structure for 3W5VA", anns[0].description); - assertEquals("Secondary Structure for 3W5VB", anns[2].description); - assertEquals("Secondary Structure for 3W5VC", anns[4].description); - assertEquals("Secondary Structure for 3W5VD", anns[6].description); + assertEquals("Secondary Structure for 3w5vA", anns[0].description); + assertEquals("Secondary Structure for 3w5vB", anns[2].description); + assertEquals("Secondary Structure for 3w5vC", anns[4].description); + assertEquals("Secondary Structure for 3w5vD", anns[6].description); /* * Verify SS annotations are linked to respective sequences (chains) @@ -248,14 +299,15 @@ public class PDBfileTest * @throws IOException */ - @Test(enabled = false) + @Test(groups = { "Functional" }, enabled = false) public void testParse_withAnnotate3D() throws IOException { // TODO requires a mock for Annotate3D processing // and/or run as an integration test PDBfile pf = new PDBfile(true, true, true, "examples/2GIS.pdb", - AppletFormatAdapter.FILE); + DataSourceType.FILE); } + /** * Helper method to extract parsed annotations from the PDBfile * @@ -265,7 +317,20 @@ public class PDBfileTest private AlignmentAnnotation[] getAlignmentAnnotations(PDBfile pf) { AlignmentI al = new Alignment(pf.getSeqsAsArray()); - pf.addAnnotations((Alignment) al); + pf.addAnnotations(al); return al.getAlignmentAnnotation(); } + + @BeforeMethod(alwaysRun = true) + public void setUp() + { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("ADD_TEMPFACT_ANN", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("ADD_SS_ANN", + Boolean.TRUE.toString()); + StructureImportSettings.setDefaultStructureFileFormat("PDB"); } +}