X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fext%2Fjmol%2FPDBFileWithJmolTest.java;h=fa3922b3c78c7d7be3bddc37a3a9dabd0d95e90b;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=900e47cf2e4bc66fa224061f1a3d64c76c910593;hpb=7ab5d6b0ba5fec1ea4a4239e79c476d841622485;p=jalview.git diff --git a/test/jalview/ext/jmol/PDBFileWithJmolTest.java b/test/jalview/ext/jmol/PDBFileWithJmolTest.java index 900e47c..fa3922b 100644 --- a/test/jalview/ext/jmol/PDBFileWithJmolTest.java +++ b/test/jalview/ext/jmol/PDBFileWithJmolTest.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -20,15 +20,23 @@ */ package jalview.ext.jmol; -import static org.junit.Assert.*; - -import java.util.Vector; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceI; +import jalview.gui.AlignFrame; +import jalview.io.AppletFormatAdapter; +import jalview.io.FileLoader; + +import java.util.Vector; -import org.junit.Test; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import MCview.PDBfile; /** * @author jimp @@ -36,32 +44,93 @@ import org.junit.Test; */ public class PDBFileWithJmolTest { + String[] testFile = new String[] { "./examples/1GAQ.txt", + "./test/jalview/ext/jmol/1QCF.pdb" }; // , + + // "./examples/DNMT1_MOUSE.pdb" + // }; - @Test - public void test() throws Exception + @BeforeMethod(alwaysRun = true) + public void setUp() { - PDBFileWithJmol jtest = new PDBFileWithJmol("./examples/1GAQ.txt", - jalview.io.AppletFormatAdapter.FILE); - Vector seqs = jtest.getSeqs(); + Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("ADD_SS_ANN", + Boolean.TRUE.toString()); + } - assertTrue( - "No sequences extracted from testfile\n" - + (jtest.hasWarningMessage() ? jtest.getWarningMessage() - : "(No warnings raised)"), - seqs != null && seqs.size() > 0); - for (SequenceI sq : seqs) + @Test(groups = { "Functional" }) + public void testAlignmentLoader() throws Exception + { + for (String f : testFile) { - AlignmentI al = new Alignment(new SequenceI[] - { sq }); - if (!al.isNucleotide()) + FileLoader fl = new jalview.io.FileLoader(false); + AlignFrame af = fl + .LoadFileWaitTillLoaded(f, AppletFormatAdapter.FILE); + validateSecStrRows(af.getViewport().getAlignment()); + } + } + + @Test(groups = { "Functional" }) + public void testFileParser() throws Exception + { + for (String pdbStr : testFile) + { + PDBfile mctest = new PDBfile(false, false, false, pdbStr, + AppletFormatAdapter.FILE); + PDBFileWithJmol jtest = new PDBFileWithJmol(pdbStr, + jalview.io.AppletFormatAdapter.FILE); + Vector seqs = jtest.getSeqs(), mcseqs = mctest.getSeqs(); + + assertTrue( + "No sequences extracted from testfile\n" + + (jtest.hasWarningMessage() ? jtest.getWarningMessage() + : "(No warnings raised)"), seqs != null + && seqs.size() > 0); + for (SequenceI sq : seqs) + { + assertEquals("JMol didn't process " + pdbStr + + " to the same sequence as MCView", + sq.getSequenceAsString(), mcseqs.remove(0) + .getSequenceAsString()); + AlignmentI al = new Alignment(new SequenceI[] { sq }); + validateSecStrRows(al); + } + } + } + + private void validateSecStrRows(AlignmentI al) + { + if (!al.isNucleotide()) + { + for (SequenceI asq : al.getSequences()) { - assertTrue( - "No secondary structure assigned for protein sequence.", - sq.getAnnotation() != null - && sq.getAnnotation().length >= 1 - && sq.getAnnotation()[0].hasIcons); + SequenceI sq = asq; + boolean hasDs = false; + while (sq.getDatasetSequence() != null + && sq.getAnnotation() == null) + { + sq = sq.getDatasetSequence(); + hasDs = true; + } + checkFirstAAIsAssoc(sq); + if (hasDs) + { + // also verify if alignment sequence has annotation on it + // that is correctly mapped + checkFirstAAIsAssoc(asq); + } } } } + private void checkFirstAAIsAssoc(SequenceI sq) + { + assertTrue("No secondary structure assigned for protein sequence.", + sq.getAnnotation() != null && sq.getAnnotation().length >= 1 + && sq.getAnnotation()[0].hasIcons); + assertTrue( + "Secondary structure not associated for sequence " + + sq.getName(), sq.getAnnotation()[0].sequenceRef == sq); + } }