JAL-3484 tests for load project with changed autocalc Preferences
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 19 Nov 2019 14:26:47 +0000 (14:26 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 19 Nov 2019 14:26:47 +0000 (14:26 +0000)
test/jalview/project/Jalview2xmlTests.java

index d902fa2..57cade5 100644 (file)
@@ -32,8 +32,10 @@ import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.FeatureColourI;
 import jalview.api.ViewStyleI;
+import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
 import jalview.datamodel.HiddenSequences;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.PDBEntry.Type;
@@ -99,7 +101,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   }
 
   @Test(groups = { "Functional" })
-  public void testRNAStructureRecovery() throws Exception
+  public void testRestoreRNAStructure() throws Exception
   {
     String inFile = "examples/RF00031_folded.stk";
     String tfile = File.createTempFile("JalviewTest", ".jvp")
@@ -137,7 +139,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   }
 
   @Test(groups = { "Functional" })
-  public void testTCoffeeScores() throws Exception
+  public void testRestoreTCoffeeColouring() throws Exception
   {
     String inFile = "examples/uniref50.fa",
             inAnnot = "examples/uniref50.score_ascii";
@@ -172,7 +174,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   }
 
   @Test(groups = { "Functional" })
-  public void testColourByAnnotScores() throws Exception
+  public void testRestoreColourByAnnotion() throws Exception
   {
     String inFile = "examples/uniref50.fa",
             inAnnot = "examples/testdata/uniref50_iupred.jva";
@@ -400,7 +402,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws Exception
    */
   @Test(groups = { "Functional" }, enabled = true)
-  public void testStoreAndRecoverExpandedviews() throws Exception
+  public void testRestoreExpandedviews() throws Exception
   {
     Desktop.instance.closeAll_actionPerformed(null);
 
@@ -419,7 +421,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     int oldviews = Desktop.getAlignFrames().length;
     Assert.assertEquals(Desktop.getAlignFrames().length,
             Desktop.getAlignmentPanels(afid).length);
-    File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp");
+    File tfile = File.createTempFile("testRestoreExpandedviews", ".jvp");
     try
     {
       new Jalview2XML(false).saveState(tfile);
@@ -454,7 +456,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws Exception
    */
   @Test(groups = { "Functional" })
-  public void testStoreAndRecoverReferenceSeqSettings() throws Exception
+  public void testRestoreReferenceSeqSettings() throws Exception
   {
     Desktop.instance.closeAll_actionPerformed(null);
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
@@ -486,7 +488,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
       n++;
     }
-    File tfile = File.createTempFile("testStoreAndRecoverReferenceSeq",
+    File tfile = File.createTempFile("testRestoreReferenceSeqSettings",
             ".jvp");
     try
     {
@@ -587,7 +589,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws Exception
    */
   @Test(groups = { "Functional" })
-  public void testStoreAndRecoverGroupRepSeqs() throws Exception
+  public void testRestoreGroupRepSeqs() throws Exception
   {
     Desktop.instance.closeAll_actionPerformed(null);
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
@@ -655,8 +657,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
       n++;
     }
-    File tfile = File.createTempFile("testStoreAndRecoverGroupReps",
-            ".jvp");
+    File tfile = File.createTempFile("testRestoreGroupRepSeqs", ".jvp");
     try
     {
       new Jalview2XML(false).saveState(tfile);
@@ -707,7 +708,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws Exception
    */
   @Test(groups = { "Functional" })
-  public void testStoreAndRecoverPDBEntry() throws Exception
+  public void testRestorePDBEntry() throws Exception
   {
     Desktop.instance.closeAll_actionPerformed(null);
     String exampleFile = "examples/3W5V.pdb";
@@ -750,7 +751,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
             seqs[3].getDatasetSequence().getAllPDBEntries().get(0),
             pdbEntries[3]);
 
-    File tfile = File.createTempFile("testStoreAndRecoverPDBEntry", ".jvp");
+    File tfile = File.createTempFile("testRestorePDBEntry", ".jvp");
     try
     {
       new Jalview2XML(false).saveState(tfile);
@@ -807,7 +808,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws IOException
    */
   @Test(groups = { "Functional" })
-  public void testStoreAndRecoverColourThresholds() throws IOException
+  public void testRestoreColourThresholds() throws IOException
   {
     Desktop.instance.closeAll_actionPerformed(null);
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
@@ -865,7 +866,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     /*
      * save project, close windows, reload project, verify
      */
-    File tfile = File.createTempFile("testStoreAndRecoverColourThresholds",
+    File tfile = File.createTempFile("testRestoreColourThresholds",
             ".jvp");
     tfile.deleteOnExit();
     new Jalview2XML(false).saveState(tfile);
@@ -901,7 +902,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws IOException
    */
   @Test(groups = { "Functional" })
-  public void testSaveLoadFeatureColoursAndFilters() throws IOException
+  public void testRestoreFeatureColoursAndFilters() throws IOException
   {
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             ">Seq1\nACDEFGHIKLM", DataSourceType.PASTE);
@@ -1119,12 +1120,13 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   }
 
   @Test(groups = "Functional")
-  public void testPcaViewAssociation() throws IOException
+  public void testRestorePCAViewAssociation() throws IOException
   {
     Desktop.instance.closeAll_actionPerformed(null);
     final String PCAVIEWNAME = "With PCA";
     // create a new tempfile
-    File tempfile = File.createTempFile("jvPCAviewAssoc", "jvp");
+    File tempfile = File.createTempFile("testRestorePCAViewAssociation",
+            "jvp");
 
     {
       String exampleFile = "examples/uniref50.fa";
@@ -1179,4 +1181,120 @@ public class Jalview2xmlTests extends Jalview2xmlBase
                     .getAlignViewport(),
             "Didn't restore correct view association for the PCA view");
   }
+
+  /**
+   * Test that annotation ordering is faithfully restored
+   * 
+   * @throws Exception
+   */
+  @Test(groups = { "Functional" })
+  public void testRestoreAnnotationOrdering() throws Exception
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    Cache.setProperty("SHOW_ANNOTATION", "true");
+    Cache.setProperty("SHOW_CONSERVATION", "true");
+    Cache.setProperty("SHOW_QUALITY", "false");
+    Cache.setProperty("SHOW_IDENTITY", "false");
+    Cache.setProperty("SHOW_OCCUPANCY", "true");
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+    assertNotNull(af, "Didn't read in the example file correctly.");
+
+    AlignFrame[] afs = Desktop.getAlignFrames();
+    assertEquals(afs.length, 1);
+    AlignmentI alignment = afs[0].getViewport().getAlignment();
+    AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+    assertEquals(anns.length, 2);
+
+    /*
+     * this order is hard wired in AlignmentViewport.initAutoAnnotation()
+     */
+    assertEquals(anns[0].label, "Conservation");
+    assertEquals(anns[1].label, "Occupancy");
+
+    /*
+     * add two user annotations, adjust order, height and visibility
+     */
+    AlignmentAnnotation tmp = anns[0];
+    anns[0] = anns[1];
+    anns[1] = tmp;
+    Annotation[] an1 = new Annotation[] { new Annotation(2f) };
+    Annotation[] an2 = new Annotation[] { new Annotation(3f) };
+    alignment.addAnnotation(new AlignmentAnnotation("hello", "desc1", an1),
+            1);
+    alignment.addAnnotation(new AlignmentAnnotation("world", "desc2", an2),
+            3);
+    anns = alignment.getAlignmentAnnotation();
+    assertEquals(anns[0].label, "Occupancy");
+    assertEquals(anns[1].label, "hello");
+    assertEquals(anns[2].label, "Conservation");
+    assertEquals(anns[3].label, "world");
+    anns[0].graphHeight = 60;
+    anns[0].visible = false;
+    anns[1].graphHeight = 70;
+    anns[2].graphHeight = 80;
+    anns[3].graphHeight = 90;
+    anns[3].visible = false;
+
+    /*
+     * save project to temporary file and reload on to an empty desktop,
+     * verify annotation order, height and visibility is restored
+     */
+    File projectFile = File.createTempFile("jvTest", ".jvp");
+    new Jalview2XML(false).saveState(projectFile);
+    Desktop.instance.closeAll_actionPerformed(null);
+    if (Desktop.getAlignFrames() != null)
+    {
+      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+    }
+  
+    af = new FileLoader().LoadFileWaitTillLoaded(
+            projectFile.getAbsolutePath(),
+            DataSourceType.FILE);
+    anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+    assertEquals(anns.length, 4);
+    assertEquals(anns[0].label, "Occupancy");
+    assertEquals(anns[1].label, "hello");
+    assertEquals(anns[2].label, "Conservation");
+    assertEquals(anns[3].label, "world");
+    assertEquals(anns[0].graphHeight, 60);
+    assertEquals(anns[1].graphHeight, 70);
+    assertEquals(anns[2].graphHeight, 80);
+    assertEquals(anns[3].graphHeight, 90);
+    assertFalse(anns[0].visible);
+    assertTrue(anns[1].visible);
+    assertTrue(anns[2].visible);
+    assertFalse(anns[3].visible);
+
+    /*
+     * reload the project with Preferences set to not create Occupancy;
+     * this should still appear, as it is in the saved project
+     */
+    Desktop.instance.closeAll_actionPerformed(null);
+    Cache.setProperty("SHOW_OCCUPANCY", "false");
+    af = new FileLoader().LoadFileWaitTillLoaded(
+            projectFile.getAbsolutePath(), DataSourceType.FILE);
+    anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+    assertEquals(anns.length, 4);
+    assertEquals(anns[0].label, "Occupancy");
+    assertEquals(anns[1].label, "hello");
+    assertEquals(anns[2].label, "Conservation");
+    assertEquals(anns[3].label, "world");
+
+    /*
+     * reload the project with Preferences set to create Quality annotation;
+     * this should not appear, as it is not in the saved project
+     */
+    Desktop.instance.closeAll_actionPerformed(null);
+    Cache.setProperty("SHOW_OCCUPANCY", "false");
+    Cache.setProperty("SHOW_QUALITY", "true");
+    af = new FileLoader().LoadFileWaitTillLoaded(
+            projectFile.getAbsolutePath(), DataSourceType.FILE);
+    anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+    assertEquals(anns.length, 4);
+    assertEquals(anns[0].label, "Occupancy");
+    assertEquals(anns[1].label, "hello");
+    assertEquals(anns[2].label, "Conservation");
+    assertEquals(anns[3].label, "world");
+  }
 }