X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FJalview2xmlTests.java;h=52cee59d463e7e921638801065b0e211b98cdbc7;hb=df817465af924ee456d3fd7508cde5acd3512f34;hp=42370190108d06ed64a047a59f9b66fd1e590e74;hpb=c504884a4af81cd736d6650155e176e49a76f7eb;p=jalview.git diff --git a/test/jalview/io/Jalview2xmlTests.java b/test/jalview/io/Jalview2xmlTests.java index 4237019..52cee59 100644 --- a/test/jalview/io/Jalview2xmlTests.java +++ b/test/jalview/io/Jalview2xmlTests.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-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,34 +20,43 @@ */ package jalview.io; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertTrue; + import jalview.api.AlignmentViewPanel; +import jalview.api.ViewStyleI; +import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.Desktop; +import jalview.gui.Jalview2XML; import jalview.schemes.AnnotationColourGradient; import jalview.schemes.ColourSchemeI; import java.io.File; +import java.util.HashMap; +import java.util.Map; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.testng.Assert; +import org.testng.AssertJUnit; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +@Test(singleThreaded = true) public class Jalview2xmlTests { /** * @throws java.lang.Exception */ - @BeforeClass + @BeforeClass(alwaysRun = true) public static void setUpBeforeClass() throws Exception { - jalview.bin.Jalview.main(new String[] - { "-props", "test/jalview/io/testProps.jvprops" }); + jalview.bin.Jalview.main(new String[] { "-props", + "test/jalview/io/testProps.jvprops" }); } /** @@ -79,7 +88,7 @@ public class Jalview2xmlTests return numdsann; } - @Test + @Test(groups = { "Functional" }) public void testRNAStructureRecovery() throws Exception { String inFile = "examples/RF00031_folded.stk"; @@ -114,7 +123,7 @@ public class Jalview2xmlTests af.getViewport().getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); } - @Test + @Test(groups = { "Functional" }) public void testTCoffeeScores() throws Exception { String inFile = "examples/uniref50.fa", inAnnot = "examples/uniref50.score_ascii"; @@ -150,7 +159,7 @@ public class Jalview2xmlTests .println("T-Coffee score shading successfully recovered from project."); } - @Test + @Test(groups = { "Functional" }) public void testColourByAnnotScores() throws Exception { String inFile = "examples/uniref50.fa", inAnnot = "examples/testdata/uniref50_iupred.jva"; @@ -236,22 +245,26 @@ public class Jalview2xmlTests .println("Per sequence (Group) colourscheme successfully applied and recovered."); } - @Test + @Test(groups = { "Functional" }) public void gatherViewsHere() throws Exception { - int origCount = Desktop.getAlignframes() == null ? 0 : Desktop - .getAlignframes().length; + int origCount = Desktop.getAlignFrames() == null ? 0 : Desktop + .getAlignFrames().length; AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( "examples/exampleFile_2_7.jar", FormatAdapter.FILE); assertTrue("Didn't read in the example file correctly.", af != null); assertTrue("Didn't gather the views in the example file.", - Desktop.getAlignframes().length == 1 + origCount); + Desktop.getAlignFrames().length == 1 + origCount); } - @Test + @Test(groups = { "Functional" }) public void viewRefPdbAnnotation() throws Exception { + Cache.applicationProperties.setProperty("STRUCT_FROM_PDB", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("ADD_SS_ANN", + Boolean.TRUE.toString()); AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( "examples/exampleFile_2_7.jar", FormatAdapter.FILE); assertTrue("Didn't read in the example file correctly.", af != null); @@ -267,7 +280,8 @@ public class Jalview2xmlTests assertTrue("Couldn't find the structure view", sps != null); SequenceI sq = sps.getAlignment().findName("1A70|"); AlignmentAnnotation refan = null; - for (AlignmentAnnotation ra:sps.getAlignment().getAlignmentAnnotation()) + for (AlignmentAnnotation ra : sps.getAlignment() + .getAlignmentAnnotation()) { if (ra.graph != 0) { @@ -275,7 +289,7 @@ public class Jalview2xmlTests break; } } - assertTrue("Annotation secondary structure not found.",refan!=null); + assertTrue("Annotation secondary structure not found.", refan != null); assertTrue("Couldn't find 1a70 null chain", sq != null); // compare the manually added temperature factor annotation // to the track automatically transferred from the pdb structure on load @@ -289,21 +303,241 @@ public class Jalview2xmlTests for (int p = 0; p < ala.annotations.length; p++) { sq.findPosition(p); - try { + try + { assertTrue( "Mismatch at alignment position " + p, - (alaa.annotations[p] == null && refan.annotations[p] == null) - || ala.annotations[p].value == refan.annotations[p].value); - } - catch (NullPointerException q) + (alaa.annotations[p] == null && refan.annotations[p] == null) + || alaa.annotations[p].value == refan.annotations[p].value); + } catch (NullPointerException q) { - fail("Mismatch of alignment annotations at position " + p - + " Ref seq ann: " + refan.annotations[p] + Assert.fail("Mismatch of alignment annotations at position " + + p + " Ref seq ann: " + refan.annotations[p] + " alignment " + alaa.annotations[p]); } - } + } } } - + + } + + @Test(groups = { "Functional" }) + public void testCopyViewSettings() throws Exception + { + AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( + "examples/exampleFile_2_7.jar", FormatAdapter.FILE); + assertTrue("Didn't read in the example file correctly.", af != null); + AlignmentViewPanel sps = null, groups = null; + for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels()) + { + if ("Spinach Feredoxin Structure".equals(ap.getViewName())) + { + sps = ap; + } + if (ap.getViewName().contains("MAFFT")) + { + groups = ap; + } + } + assertTrue("Couldn't find the structure view", sps != null); + assertTrue("Couldn't find the MAFFT view", groups != null); + + ViewStyleI structureStyle = sps.getAlignViewport().getViewStyle(); + ViewStyleI groupStyle = groups.getAlignViewport().getViewStyle(); + AssertJUnit.assertFalse(structureStyle.sameStyle(groupStyle)); + + groups.getAlignViewport().setViewStyle(structureStyle); + AssertJUnit.assertFalse(groupStyle.sameStyle(groups.getAlignViewport() + .getViewStyle())); + Assert.assertTrue(structureStyle.sameStyle(groups.getAlignViewport() + .getViewStyle())); + + } + + /** + * test store and recovery of expanded views - currently this is disabled + * since the Desktop.explodeViews method doesn't seem to result in the views + * being expanded to distinct align frames when executed programmatically. + * + * @throws Exception + */ + @Test(groups = { "Functional" }, enabled = false) + public void testStoreAndRecoverExpandedviews() throws Exception + { + AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( + "examples/exampleFile_2_7.jar", FormatAdapter.FILE); + assertTrue("Didn't read in the example file correctly.", af != null); + String afid = af.getViewport().getSequenceSetId(); + { + final AlignFrame xaf = af; + af = null; + new Thread(new Runnable() + { + @Override + public void run() + { + Desktop.instance.explodeViews(xaf); + } + }).start(); + Thread.sleep(1000); + } + // int times = 0; + // while (++times < 5 && Desktop.getAlignFrames().length < ) + // { + // Thread.sleep(300); + // } + int oldviews = Desktop.getAlignFrames().length; + Assert.assertEquals(Desktop.getAlignFrames().length, + Desktop.getAlignmentPanels(afid).length); + File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp"); + try + { + new Jalview2XML(false).saveState(tfile); + } catch (Error e) + { + Assert.fail("Didn't save the expanded view state", e); + } catch (Exception e) + { + Assert.fail("Didn't save the expanded view state", e); + } + Desktop.instance.closeAll_actionPerformed(null); + if (Desktop.getAlignFrames() != null) + { + Assert.assertEquals(Desktop.getAlignFrames().length, 0); + } + af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( + tfile.getAbsolutePath(), FormatAdapter.FILE); + Assert.assertNotNull(af); + Assert.assertEquals( + Desktop.getAlignFrames().length, + Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); + Assert.assertEquals( + oldviews, + Desktop.getAlignmentPanels(af.getViewport().getSequenceSetId()).length); + } + + /** + * based on above test store and recovery of expanded views. + * + * @throws Exception + */ + @Test(groups = { "Functional" }, enabled = true) + public void testStoreAndRecoverReferenceSeqSettings() throws Exception + { + String afid = ""; + { + AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( + "examples/exampleFile_2_7.jar", FormatAdapter.FILE); + assertTrue("Didn't read in the example file correctly.", af != null); + afid = af.getViewport().getSequenceSetId(); + } + Map refs = new HashMap(); + int n = 1; + for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) + { + // mark representative + SequenceI rep = ap.getAlignment().getSequenceAt( + n++ % ap.getAlignment().getHeight()); + refs.put(ap.getViewName(), rep); + // code from mark/unmark sequence as reference in jalview.gui.PopupMenu + // todo refactor the to an alignment view controller + ap.getAlignViewport().setDisplayReferenceSeq(true); + ap.getAlignViewport().setColourByReferenceSeq(true); + ap.getAlignViewport().getAlignment().setSeqrep(rep); + } + File tfile = File.createTempFile("testStoreAndRecoverReferenceSeq", + ".jvp"); + try + { + new Jalview2XML(false).saveState(tfile); + } catch (Error e) + { + Assert.fail("Didn't save the expanded view state", e); + } catch (Exception e) + { + Assert.fail("Didn't save the expanded view state", e); + } + Desktop.instance.closeAll_actionPerformed(null); + if (Desktop.getAlignFrames() != null) + { + Assert.assertEquals(Desktop.getAlignFrames().length, 0); + } + { + AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded( + tfile.getAbsolutePath(), FormatAdapter.FILE); + afid = af.getViewport().getSequenceSetId(); + } + for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(afid)) + { + // check representative + SequenceI rep = ap.getAlignment().getSeqrep(); + Assert.assertNotNull(rep, + "Couldn't restore sequence representative from project"); + // can't use a strong equals here, because by definition, the sequence IDs + // will be different. + // could set vamsas session save/restore flag to preserve IDs across + // load/saves. + Assert.assertEquals(refs.get(ap.getViewName()).toString(), + rep.toString(), + "Representative wasn't the same when recovered."); + Assert.assertTrue(ap.getAlignViewport().isDisplayReferenceSeq(), + "Display reference sequence view setting not set."); + Assert.assertTrue(ap.getAlignViewport().isColourByReferenceSeq(), + "Colour By Reference Seq view setting not set."); + } + } + + @Test(groups = { "Functional" }) + public void testIsVersionStringLaterThan() + { + /* + * No version / development / test / autobuild is leniently assumed to be + * compatible + */ + assertTrue(Jalview2XML.isVersionStringLaterThan(null, null)); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", null)); + assertTrue(Jalview2XML.isVersionStringLaterThan(null, "2.8.3")); + assertTrue(Jalview2XML.isVersionStringLaterThan(null, + "Development Build")); + assertTrue(Jalview2XML.isVersionStringLaterThan(null, + "DEVELOPMENT BUILD")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", + "Development Build")); + assertTrue(Jalview2XML.isVersionStringLaterThan(null, "Test")); + assertTrue(Jalview2XML.isVersionStringLaterThan(null, "TEST")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "Test")); + assertTrue(Jalview2XML + .isVersionStringLaterThan(null, "Automated Build")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", + "Automated Build")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", + "AUTOMATED BUILD")); + + /* + * same version returns true i.e. compatible + */ + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3b1")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3B1", "2.8.3b1")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3B1")); + + /* + * later version returns true + */ + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.4")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.9.2")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8", "2.8.3")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.3b1")); + + /* + * earlier version returns false + */ + assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.4", "2.8.3")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.2b1")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.0b2", "2.8.0b1")); } }