JAL-1713 unit test for save/restore Overview in project
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Sun, 13 Dec 2020 12:32:07 +0000 (12:32 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Sun, 13 Dec 2020 12:32:07 +0000 (12:32 +0000)
test/jalview/project/Jalview2xmlTests.java

index eb66416..2ef0d11 100644 (file)
@@ -23,11 +23,13 @@ package jalview.project;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNotSame;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertSame;
 import static org.testng.Assert.assertTrue;
 
 import java.awt.Color;
+import java.awt.Rectangle;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -47,6 +49,7 @@ 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.DBRefEntry;
@@ -68,8 +71,10 @@ import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
+import jalview.gui.OverviewPanel;
 import jalview.gui.PCAPanel;
 import jalview.gui.PopupMenu;
+import jalview.gui.Preferences;
 import jalview.gui.SliderPanel;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
@@ -1270,4 +1275,91 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertTrue(dbRef instanceof GeneLocus);
     assertEquals(dbRef, dbref3);
   }
+
+  /**
+   * test store and recovery of Overview windows
+   * 
+   * @throws Exception
+   */
+  @Test(groups = { "Functional" }, enabled = true)
+  public void testStoreAndRecoverOverview() throws Exception
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    
+    Cache.setProperty("SHOW_OVERVIEW",  "false");
+    Cache.setProperty(Preferences.USE_LEGACY_GAP, "false");
+    Cache.setColourProperty(Preferences.GAP_COLOUR, Color.green);
+    Cache.setColourProperty(Preferences.HIDDEN_COLOUR, Color.yellow);
+    Cache.setProperty(Preferences.SHOW_OV_HIDDEN_AT_START, "true");
+    
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+    
+    /*
+     * open and resize / reposition overview 
+     */
+    af.overviewMenuItem_actionPerformed(null);
+    OverviewPanel ov1 = af.alignPanel.getOverviewPanel();
+    assertNotNull(ov1);
+    ov1.setFrameBounds(20,  30,  200,  400);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa");
+    
+    /*
+     * open a New View and its Overview and reposition it
+     */
+    af.newView_actionPerformed(null);
+    af.overviewMenuItem_actionPerformed(null);
+    OverviewPanel ov2 = af.alignPanel.getOverviewPanel();
+    assertNotNull(ov2);
+    assertNotSame(ov1, ov2);
+    ov2.setFrameBounds(25,  35,  205,  405);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa Original");
+    assertEquals(ov2.getTitle(), "Overview examples/uniref50.fa View 1");
+    
+    
+    File tfile = File.createTempFile("testStoreAndRecoverOverview", ".jvp");
+    new Jalview2XML(false).saveState(tfile);
+    Desktop.instance.closeAll_actionPerformed(null);
+    
+    /*
+     * change preferences (should _not_ affect reloaded Overviews)
+     */
+    Cache.setProperty("SHOW_OVERVIEW",  "true");
+    Cache.setProperty(Preferences.USE_LEGACY_GAP, "true");
+    Cache.setColourProperty(Preferences.GAP_COLOUR, Color.blue);
+    Cache.setColourProperty(Preferences.HIDDEN_COLOUR, Color.orange);
+    Cache.setProperty(Preferences.SHOW_OV_HIDDEN_AT_START, "false");
+    
+    af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+            DataSourceType.FILE);
+    
+    /*
+     * workaround: explicitly select View 1 (not in focus after restore)
+     */
+    af.tabSelectionChanged(1);
+    
+    /*
+     * verify restored overview for View 1
+     */
+    ov2 = af.alignPanel.getOverviewPanel();
+    assertEquals(ov2.getCanvas().getGapColour(), Color.green);
+    // 'non-legacy' colouring uses white for non-gapped residues
+    assertEquals(ov2.getCanvas().getResidueColour(), Color.white);
+    assertEquals(ov2.getCanvas().getHiddenColour(), Color.yellow);
+    assertEquals(ov2.getTitle(), "Overview examples/uniref50.fa View 1");
+    assertEquals(ov2.getFrameBounds(), new Rectangle(25,  35,  205,  405));
+    
+    
+    /*
+     * verify restored overview for Original view
+     */
+    af.tabSelectionChanged(0);
+    ov1 = af.alignPanel.getOverviewPanel();
+    assertEquals(ov1.getCanvas().getGapColour(), Color.green);
+    // 'non-legacy' colouring uses white for non-gapped residues
+    assertEquals(ov1.getCanvas().getResidueColour(), Color.white);
+    assertEquals(ov1.getCanvas().getHiddenColour(), Color.yellow);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa Original");
+    assertEquals(ov1.getFrameBounds(), new Rectangle(20,  30,  200,  400));
+  }
 }