JAL-1369 failing test
[jalview.git] / test / jalview / io / Jalview2xmlTests.java
index 3c634fd..21bf846 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.io;
 
+import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.api.AlignmentViewPanel;
@@ -35,6 +36,8 @@ import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.ColourSchemeI;
 
 import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.testng.Assert;
 import org.testng.AssertJUnit;
@@ -412,4 +415,123 @@ public class Jalview2xmlTests
             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<String, SequenceI> refs = new HashMap<String, SequenceI>();
+    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);
+    }
+    for (AlignmentViewPanel ap : Desktop.getAlignmentPanels(Desktop
+            .getAlignFrames()[0].getViewport().getSequenceSetId()))
+    {
+      // check representative
+      SequenceI rep = ap.getAlignment().getSeqrep();
+      Assert.assertNotNull(rep,
+              "Couldn't restore sequence representative from project");
+      Assert.assertEquals(refs.get(ap.getViewName()), rep,
+              "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"));
+  }
 }