X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fproject%2FJalview2xmlTests.java;h=c070edb3fda271339dfd4e817bc01e04d8cac82d;hb=a327fd39320e482fad4b57f256f3e3c8ebcf015b;hp=783dd1cb90587a133b14488ea73bc03e3ea988dc;hpb=5d49f772d8dd53aba8907f37a244b00ed8f86a87;p=jalview.git diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 783dd1c..c070edb 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -53,6 +53,7 @@ import jalview.api.ViewStyleI; import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; import jalview.datamodel.DBRefEntry; import jalview.datamodel.GeneLocus; import jalview.datamodel.HiddenSequences; @@ -238,8 +239,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase boolean diffseqcols = false, diffgseqcols = false; SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray(); - for (int p = 0, pSize = af.getViewport().getAlignment() - .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++) + for (int p = 0, + pSize = af.getViewport().getAlignment().getWidth(); p < pSize + && (!diffseqcols || !diffgseqcols); p++) { if (_rcs.findColour(sqs[0].getCharAt(p), p, sqs[0], null, 0f) != _rcs .findColour(sqs[5].getCharAt(p), p, sqs[5], null, 0f)) @@ -258,8 +260,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase assertTrue(__rcs.isSeqAssociated(), "Group Annotation colourscheme wasn't sequence associated"); - for (int p = 0, pSize = af.getViewport().getAlignment() - .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++) + for (int p = 0, + pSize = af.getViewport().getAlignment().getWidth(); p < pSize + && (!diffseqcols || !diffgseqcols); p++) { if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1], null, 0f) != _rgcs.findColour(sqs[2].getCharAt(p), p, sqs[2], null, @@ -590,6 +593,14 @@ public class Jalview2xmlTests extends Jalview2xmlBase 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")); + /* + * test for patch release versions + */ + assertFalse(Jalview2XML.isVersionStringLaterThan("2.11.3.0", "2.11.2")); + assertTrue(Jalview2XML.isVersionStringLaterThan("2.11.3.0","2.11.4")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.0b1","2.12.2.0")); + assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.3","2.12.2.2")); + } /** @@ -808,8 +819,94 @@ public class Jalview2xmlTests extends Jalview2xmlBase "Mismatch PDBEntry 'Type'"); Assert.assertNotNull(recov.getFile(), "Recovered PDBEntry should have a non-null file entry"); - Assert.assertEquals(recov.getFile().toLowerCase(Locale.ENGLISH).lastIndexOf("pdb"),recov.getFile().length()-3, "Recovered PDBEntry file should have PDB suffix"); + Assert.assertEquals( + recov.getFile().toLowerCase(Locale.ENGLISH) + .lastIndexOf("pdb"), + recov.getFile().length() - 3, + "Recovered PDBEntry file should have PDB suffix"); + } + } + + /** + * Configure an alignment and a sub-group each with distinct colour schemes, + * Conservation and PID thresholds, and confirm these are restored from the + * saved project. + * + * @throws IOException + */ + @Test(groups = { "Functional" }) + public void testStoreAndRecoverAnnotationRowElementColours() + throws IOException + { + Desktop.instance.closeAll_actionPerformed(null); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded("SEQ\tMNQ", + DataSourceType.PASTE); + + AlignViewport av = af.getViewport(); + AlignmentI al = av.getAlignment(); + SequenceI fsq; + fsq = al.getSequenceAt(0); + Annotation annots[] = new Annotation[fsq.getLength()]; + AlignmentAnnotation ala = new AlignmentAnnotation("Colour", "Annots", + annots); + annots[0] = new Annotation(1.0f); + annots[1] = new Annotation(2.0f); + annots[2] = new Annotation(3.0f); + annots[0].colour = Color.RED; + annots[1].colour = Color.GREEN; + annots[2].colour = Color.BLUE; + ala.validateRangeAndDisplay(); + al.getSequenceAt(0).addAlignmentAnnotation(ala); + al.addAnnotation(ala); + /* + * and colour by annotation + */ + AnnotationColourGradient acg = new AnnotationColourGradient(ala, + af.alignPanel.av.getGlobalColourScheme(), 0); + acg.setSeqAssociated(true); + acg.setPredefinedColours(true); + af.changeColour(acg); + Color seqcol[] = new Color[3]; + for (int iStart=fsq.findIndex(fsq.getStart()),i=0;i<3;i++) { + seqcol[i] = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null); + } + /* + * save project, close windows, reload project, verify + */ + File tfile = File.createTempFile( + "testStoreAndRecoverAnnotRowElemColors", ".jvp"); + tfile.deleteOnExit(); + new Jalview2XML(false).saveState(tfile); + //Desktop.instance.closeAll_actionPerformed(null); + af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(), + DataSourceType.FILE); + Assert.assertNotNull(af, "Failed to reload project"); + /* + * verify alignment annotation has colors + */ + av = af.getViewport(); + + ColourSchemeI loadedCscheme = av.getGlobalColourScheme(); + Assert.assertTrue(loadedCscheme instanceof AnnotationColourGradient,"Didn't apply Annotation colour gradient"); + acg = (AnnotationColourGradient) loadedCscheme; + assertTrue(acg.isSeqAssociated()); + assertTrue(acg.isPredefinedColours()); + + al = av.getAlignment(); + fsq = al.getSequenceAt(0); + ala = fsq.getAnnotation()[0]; + Assert.assertNotNull(ala, "No annotation row recovered"); + Assert.assertNotNull(ala.annotations); + for (int iStart = al.getSequenceAt(0) + .findIndex(al.getSequenceAt(0).getStart()), i = 0; i < 3; i++) + { + Assert.assertTrue(ala.annotations[i].colour!=null); + Assert.assertTrue(ala.annotations[i].colour.equals(annots[i].colour)); + Color newseqcol = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null); + Assert.assertTrue(seqcol[i].equals(newseqcol),"Sequence shading is different"); + } + } /** @@ -1388,4 +1485,45 @@ public class Jalview2xmlTests extends Jalview2xmlBase assertNull(af.alignPanel.getOverviewPanel()); } + + /** + * Test that a view from an older version of Jalview is restored with Overview automatically shown when the preference is set + * + * @throws Exception + */ + @Test(groups = { "Functional" }, enabled = true) + public void testAutoShowOverviewForLegacyProjects() throws Exception + { + Desktop.instance.closeAll_actionPerformed(null); + Cache.setProperty("SHOW_OVERVIEW", "true"); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/exampleFile.jvp", DataSourceType.FILE); + + Cache.setProperty("SHOW_OVERVIEW", "false"); + assertNotNull(af.alignPanel.getOverviewPanel()); + } + + /** + * Test that loading example.jvp, doing some stuff, then hitting reload + * doesn't leave the modified window still open + * + * See JAL-4127 - interactively performing the same actions and reloading + * works fine, but programmatically they do not + * + * @throws Exception + */ + @Test(groups = {"Functional"}, enabled=false) + public void testReloadActuallyReloads() throws Exception + { + Desktop.instance.closeAll_actionPerformed(null); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/exampleFile.jvp", DataSourceType.FILE); + af.getViewport().getColumnSelection().addElement(3); + af.hideSelColumns_actionPerformed(null); + af.newView("new", true); + af.reload_actionPerformed(null); + Thread.sleep(30); + // af exists still but isn't shown + assertTrue(af.isClosed()); + } }