Merge branch 'develop' into spike/JAL-4047/JAL-4048_columns_in_sequenceID
[jalview.git] / test / jalview / io / JSONFileTest.java
index bfb714d..0fe721a 100644 (file)
@@ -22,7 +22,8 @@ package jalview.io;
 
 import static org.testng.AssertJUnit.assertNotNull;
 
-import jalview.api.AlignExportSettingI;
+import jalview.api.AlignExportSettingsI;
+import jalview.datamodel.AlignExportSettingsAdapter;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
@@ -42,6 +43,7 @@ import jalview.schemes.ResidueColourScheme;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -93,7 +95,7 @@ public class JSONFileTest
 
   private JSONFile jf;
 
-  private AlignExportSettingI exportSettings;
+  private AlignExportSettingsI exportSettings;
 
   @BeforeTest(alwaysRun = true)
   public void setup() throws Exception
@@ -146,11 +148,10 @@ public class JSONFileTest
     grpSeqs.add(seqs[2]);
     grpSeqs.add(seqs[3]);
     grpSeqs.add(seqs[4]);
-    SequenceGroup seqGrp = new SequenceGroup(grpSeqs,
-            "JGroup:1883305585",
+    SequenceGroup seqGrp = new SequenceGroup(grpSeqs, "JGroup:1883305585",
             null, true, true, false, 21, 29);
-    ColourSchemeI scheme = ColourSchemeMapper.getJalviewColourScheme(
-            "zappo", seqGrp);
+    ColourSchemeI scheme = ColourSchemeMapper
+            .getJalviewColourScheme("zappo", seqGrp);
     seqGrp.cs.setColourScheme(scheme);
     seqGrp.setShowNonconserved(false);
     seqGrp.setDescription(null);
@@ -205,46 +206,9 @@ public class JSONFileTest
     TEST_SEQ_HEIGHT = expectedSeqs.size();
     TEST_GRP_HEIGHT = expectedGrps.size();
     TEST_ANOT_HEIGHT = expectedAnnots.size();
-    TEST_CS_HEIGHT = expectedColSel.getSize();
+    TEST_CS_HEIGHT = expectedColSel.getNumberOfRegions();
 
-    exportSettings = new AlignExportSettingI()
-    {
-      @Override
-      public boolean isExportHiddenSequences()
-      {
-        return true;
-      }
-
-      @Override
-      public boolean isExportHiddenColumns()
-      {
-        return true;
-      }
-
-      @Override
-      public boolean isExportGroups()
-      {
-        return true;
-      }
-
-      @Override
-      public boolean isExportFeatures()
-      {
-        return true;
-      }
-
-      @Override
-      public boolean isExportAnnotations()
-      {
-        return true;
-      }
-
-      @Override
-      public boolean isCancelled()
-      {
-        return false;
-      }
-    };
+    exportSettings = new AlignExportSettingsAdapter(true);
 
     AppletFormatAdapter formatAdapter = new AppletFormatAdapter();
     try
@@ -258,12 +222,13 @@ public class JSONFileTest
               AlignFrame.DEFAULT_HEIGHT);
       af.getViewport().setShowSequenceFeatures(jf.isShowSeqFeatures());
       String colourSchemeName = jf.getGlobalColourScheme();
-      ColourSchemeI cs = ColourSchemeMapper.getJalviewColourScheme(
-              colourSchemeName, alignment);
+      ColourSchemeI cs = ColourSchemeMapper
+              .getJalviewColourScheme(colourSchemeName, alignment);
       af.changeColour(cs);
       af.getViewport().setFeaturesDisplayed(jf.getDisplayedFeatures());
 
-      formatAdapter = new AppletFormatAdapter(af.alignPanel, exportSettings);
+      formatAdapter = new AppletFormatAdapter(af.alignPanel,
+              exportSettings);
       String jsonOutput = formatAdapter.formatSequences(FileFormat.Json,
               af.alignPanel.getAlignment(), false);
 
@@ -271,7 +236,7 @@ public class JSONFileTest
       testAlignment = formatAdapter.readFile(jsonOutput,
               DataSourceType.PASTE, FileFormat.Json);
       testJsonFile = (JSONFile) formatAdapter.getAlignFile();
-      // System.out.println(jsonOutput);
+      System.out.println(jsonOutput);
     } catch (IOException e)
     {
       e.printStackTrace();
@@ -325,11 +290,12 @@ public class JSONFileTest
   {
     HiddenColumns cs = testJsonFile.getHiddenColumns();
     Assert.assertNotNull(cs);
-    Assert.assertNotNull(cs.getHiddenColumnsCopy());
-    List<int[]> hiddenCols = cs.getHiddenColumnsCopy();
-    Assert.assertEquals(hiddenCols.size(), TEST_CS_HEIGHT);
-    Assert.assertEquals(hiddenCols.get(0), expectedColSel
-            .getHiddenColumnsCopy().get(0),
+
+    Iterator<int[]> it = cs.iterator();
+    Iterator<int[]> colselit = expectedColSel.iterator();
+    Assert.assertTrue(it.hasNext());
+    Assert.assertEquals(cs.getNumberOfRegions(), TEST_CS_HEIGHT);
+    Assert.assertEquals(it.next(), colselit.next(),
             "Mismatched hidden columns!");
   }
 
@@ -379,11 +345,11 @@ public class JSONFileTest
       SequenceGroup sg = new SequenceGroup();
       sg.addSequence(_alignment.getSequenceAt(0), false);
       sg.setColourScheme(null);
-      ColourSchemeI cs = ColourSchemeMapper.getJalviewColourScheme(
-              ResidueColourScheme.NONE, _alignment);
+      ColourSchemeI cs = ColourSchemeMapper
+              .getJalviewColourScheme(ResidueColourScheme.NONE, _alignment);
       alignFrame.changeColour(cs);
-      alignFrame.getViewport().setFeaturesDisplayed(
-              bioJsonFile.getDisplayedFeatures());
+      alignFrame.getViewport()
+              .setFeaturesDisplayed(bioJsonFile.getDisplayedFeatures());
       formatAdapter = new AppletFormatAdapter(alignFrame.alignPanel,
               exportSettings);
       // export BioJSON string
@@ -433,8 +399,9 @@ public class JSONFileTest
     for (AlignmentAnnotation annot : testAlignment.getAlignmentAnnotation())
     {
       AlignmentAnnotation expectedAnnot = expectedAnnots.get(annot.label);
-      AssertJUnit.assertTrue("Failed AlignmentAnnotation Test for >>> "
-              + annot.label, isAnnotationMatched(expectedAnnot, annot));
+      AssertJUnit.assertTrue(
+              "Failed AlignmentAnnotation Test for >>> " + annot.label,
+              isAnnotationMatched(expectedAnnot, annot));
       passedCount++;
     }
     AssertJUnit.assertEquals("Some Sequences did not pass the test",
@@ -471,8 +438,8 @@ public class JSONFileTest
     System.out.println("Testing >>> " + actualSeq.getName());
 
     if (expectedSeq.getName().equals(actualSeq.getName())
-            && expectedSeq.getSequenceAsString().equals(
-                    actualSeq.getSequenceAsString())
+            && expectedSeq.getSequenceAsString()
+                    .equals(actualSeq.getSequenceAsString())
             && expectedSeq.getStart() == actualSeq.getStart()
             && expectedSeq.getEnd() == actualSeq.getEnd()
             && featuresMatched(expectedSeq, actualSeq))
@@ -496,15 +463,15 @@ public class JSONFileTest
             + actualGrp.getIgnoreGapsConsensus());
     System.out.println(expectedGrp.getSequences().size() + " | "
             + actualGrp.getSequences().size());
-    System.out.println(expectedGrp.getStartRes() + " | "
-            + actualGrp.getStartRes());
-    System.out.println(expectedGrp.getEndRes() + " | "
-            + actualGrp.getEndRes());
+    System.out.println(
+            expectedGrp.getStartRes() + " | " + actualGrp.getStartRes());
+    System.out.println(
+            expectedGrp.getEndRes() + " | " + actualGrp.getEndRes());
     System.out.println(expectedGrp.cs.getColourScheme() + " | "
             + actualGrp.cs.getColourScheme());
 
-    boolean colourSchemeMatches = (expectedGrp.cs.getColourScheme() == null && actualGrp.cs
-            .getColourScheme() == null)
+    boolean colourSchemeMatches = (expectedGrp.cs.getColourScheme() == null
+            && actualGrp.cs.getColourScheme() == null)
             || expectedGrp.cs.getColourScheme().getClass()
                     .equals(actualGrp.cs.getColourScheme().getClass());
     if (expectedGrp.getName().equals(actualGrp.getName())
@@ -513,8 +480,8 @@ public class JSONFileTest
             && expectedGrp.getIgnoreGapsConsensus() == actualGrp
                     .getIgnoreGapsConsensus()
             && colourSchemeMatches
-            && expectedGrp.getSequences().size() == actualGrp
-                    .getSequences().size()
+            && expectedGrp.getSequences().size() == actualGrp.getSequences()
+                    .size()
             && expectedGrp.getStartRes() == actualGrp.getStartRes()
             && expectedGrp.getEndRes() == actualGrp.getEndRes())
     {
@@ -556,8 +523,8 @@ public class JSONFileTest
         */
         if (!in.equals(out))
         {
-          System.err.println("Mismatch of " + in.toString() + " "
-                  + out.toString());
+          System.err.println(
+                  "Mismatch of " + in.toString() + " " + out.toString());
           return false;
         }
         /*
@@ -592,8 +559,8 @@ public class JSONFileTest
     {
       if (m1 != null || m2 != null)
       {
-        System.err
-                .println("only one SequenceFeature.otherDetails is not null");
+        System.err.println(
+                "only one SequenceFeature.otherDetails is not null");
         return false;
       }
       else
@@ -613,8 +580,9 @@ public class JSONFileTest
         System.err.println(key + " in only one otherDetails");
         return false;
       }
-      if (m1.get(key) == null && m2.get(key) != null || m1.get(key) != null
-              && m2.get(key) == null || !m1.get(key).equals(m2.get(key)))
+      if (m1.get(key) == null && m2.get(key) != null
+              || m1.get(key) != null && m2.get(key) == null
+              || !m1.get(key).equals(m2.get(key)))
       {
         System.err.println(key + " values in otherDetails don't match");
         return false;
@@ -634,8 +602,7 @@ public class JSONFileTest
     AlignmentI copy = new Alignment(testAlignment);
     SequenceGroup sg = testAlignment.getGroups().get(0);
     SequenceGroup copySg = new SequenceGroup(new ArrayList<SequenceI>(),
-            sg.getName(),
-            null, sg.getDisplayBoxes(), sg.getDisplayText(),
+            sg.getName(), null, sg.getDisplayBoxes(), sg.getDisplayText(),
             sg.getColourText(), sg.getStartRes(), sg.getEndRes());
     for (SequenceI seq : sg.getSequences())
     {
@@ -647,8 +614,8 @@ public class JSONFileTest
     AlignFrame af = new AlignFrame(copy, copy.getWidth(), copy.getHeight());
     AppletFormatAdapter formatAdapter = new AppletFormatAdapter(
             af.alignPanel);
-    String jsonOutput = formatAdapter.formatSequences(FileFormat.Json,
-            copy, false);
+    String jsonOutput = formatAdapter.formatSequences(FileFormat.Json, copy,
+            false);
     formatAdapter = new AppletFormatAdapter();
     AlignmentI newAlignment = formatAdapter.readFile(jsonOutput,
             DataSourceType.PASTE, FileFormat.Json);