JAL-4305 Isolate and unify the Jalview object from all the gubbins in jalview.bin...
[jalview.git] / test / jalview / project / Jalview2xmlTests.java
index d74cd31..aa4be3d 100644 (file)
@@ -32,7 +32,9 @@ import java.awt.Color;
 import java.awt.Rectangle;
 import java.io.File;
 import java.io.IOException;
+import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.BitSet;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -59,6 +61,7 @@ import jalview.datamodel.ContactMatrix;
 import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.GeneLocus;
+import jalview.datamodel.GroupSet;
 import jalview.datamodel.HiddenSequences;
 import jalview.datamodel.Mapping;
 import jalview.datamodel.PDBEntry;
@@ -100,6 +103,7 @@ import jalview.util.MapList;
 import jalview.util.matcher.Condition;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.seqfeatures.FeatureRendererModel;
+import jalview.ws.datamodel.MappableContactMatrixI;
 import jalview.ws.datamodel.alphafold.PAEContactMatrix;
 
 @Test(singleThreaded = true)
@@ -283,12 +287,12 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   @Test(groups = { "Functional" })
   public void gatherViewsHere() throws Exception
   {
-    int origCount = Desktop.getAlignFrames() == null ? 0
-            : Desktop.getAlignFrames().length;
+    int origCount = Desktop.getDesktopAlignFrames() == null ? 0
+            : Desktop.getDesktopAlignFrames().length;
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/exampleFile_2_7.jar", DataSourceType.FILE);
     assertNotNull(af, "Didn't read in the example file correctly.");
-    assertTrue(Desktop.getAlignFrames().length == 1 + origCount,
+    assertTrue(Desktop.getDesktopAlignFrames().length == 1 + origCount,
             "Didn't gather the views in the example file.");
 
   }
@@ -426,7 +430,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/exampleFile_2_7.jar", DataSourceType.FILE);
-    Assert.assertEquals(Desktop.getAlignFrames().length, 1);
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 1);
     String afid = af.getViewport().getSequenceSetId();
 
     // check FileLoader returned a reference to the one alignFrame that is
@@ -436,8 +440,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
     Desktop.explodeViews(af);
 
-    int oldviews = Desktop.getAlignFrames().length;
-    Assert.assertEquals(Desktop.getAlignFrames().length,
+    int oldviews = Desktop.getDesktopAlignFrames().length;
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
             Desktop.getAlignmentPanels(afid).length);
     File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp");
     try
@@ -451,14 +455,14 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
             DataSourceType.FILE);
     Assert.assertNotNull(af);
-    Assert.assertEquals(Desktop.getAlignFrames().length,
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
             Desktop.getAlignmentPanels(
                     af.getViewport().getSequenceSetId()).length);
     Assert.assertEquals(Desktop
@@ -515,9 +519,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
@@ -694,9 +698,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
@@ -788,9 +792,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded(
@@ -1213,7 +1217,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertNotNull(af);
 
     AlignmentI ds = null;
-    for (AlignFrame alignFrame : Desktop.getAlignFrames())
+    for (AlignFrame alignFrame : Desktop.getDesktopAlignFrames())
     {
       if (ds == null)
       {
@@ -1559,7 +1563,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       {
         paevals[i][j] = ((i - j < 2)
                 || ((i > 1 && i < 5) && (j > 1 && i < 5))) ? 1 : 0f;
-        paevals[j][i] = paevals[i][j];
+        paevals[j][i] = -paevals[i][j];
       }
     }
     PAEContactMatrix dummyMat = new PAEContactMatrix(sq, paevals);
@@ -1569,10 +1573,38 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     float[][] vals = ContactMatrix.fromFloatStringToContacts(content,
             sq.getLength(), sq.getLength());
     assertEquals(vals[3][4], paevals[3][4]);
-    dummyMat.makeGroups(0.5f, false);
+    assertEquals(vals[4][3], paevals[4][3]);
+    dummyMat.setGroupSet(GroupSet.makeGroups(dummyMat, false,0.5f, false));
     Assert.assertNotSame(dummyMat.getNewick(), "");
     AlignmentAnnotation paeCm = sq.addContactList(dummyMat);
     al.addAnnotation(paeCm);
+    // verify store/restore of group bitsets
+    for (BitSet gp : dummyMat.getGroups())
+    {
+      StringBuilder sb = new StringBuilder();
+      for (long val : gp.toLongArray())
+      {
+        if (sb.length() > 0)
+        {
+          sb.append(",");
+        }
+        sb.append(val);
+      }
+      String[] longvals = sb.toString().split(",");
+      long[] newlongvals = new long[longvals.length];
+      for (int lv = 0; lv < longvals.length; lv++)
+      {
+        try
+        {
+          newlongvals[lv] = Long.valueOf(longvals[lv]);
+        } catch (Exception x)
+        {
+          Assert.fail("failed to deserialise bitset element ");
+        }
+      }
+      BitSet newGp = BitSet.valueOf(newlongvals);
+      assertTrue(gp.equals(newGp));
+    }
     File tfile = File.createTempFile("testStoreAndRecoverPAEmatrix",
             ".jvp");
     new Jalview2XML(false).saveState(tfile);
@@ -1592,20 +1624,28 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     ContactMatrixI restoredMat = newSeq
             .getContactMatrixFor(newSeq.getAnnotation()[0]);
     Assert.assertNotNull(restoredMat);
+    MapList oldMap = ((MappableContactMatrixI) dummyMat).getMapFor(sq);
+    MapList newMap = ((MappableContactMatrixI) restoredMat)
+            .getMapFor(newSeq);
+    Assert.assertEquals(oldMap.getFromRanges(), newMap.getFromRanges());
+    Assert.assertEquals(oldMap.getToRanges(), newMap.getToRanges());
+    Assert.assertEquals(oldMap.getFromRatio(), newMap.getFromRatio());
+    Assert.assertEquals(oldMap.getToRatio(), newMap.getToRatio());
     for (i = sq.getLength() - 1; i >= 0; i--)
     {
       ContactListI oldCM = dummyMat.getContactList(i),
               newCM = restoredMat.getContactList(i);
       for (int j = oldCM.getContactHeight(); j >= 0; j--)
       {
-        Assert.assertEquals(oldCM.getContactAt(j), newCM.getContactAt(j));
+        double old_j = oldCM.getContactAt(j);
+        double new_j = newCM.getContactAt(j);
+        Assert.assertEquals(old_j, new_j);
       }
     }
     Assert.assertEquals(restoredMat.hasGroups(), dummyMat.hasGroups());
     Assert.assertEquals(restoredMat.getGroups(), dummyMat.getGroups());
     Assert.assertEquals(restoredMat.hasTree(), dummyMat.hasTree());
     Assert.assertEquals(restoredMat.getNewick(), dummyMat.getNewick());
-
   }
 
 }