Merge branch 'develop' into features/JAL-2446NCList
[jalview.git] / test / jalview / io / CrossRef2xmlTests.java
index 080bda8..ec5855f 100644 (file)
@@ -30,6 +30,7 @@ import jalview.gui.AlignFrame;
 import jalview.gui.CrossRefAction;
 import jalview.gui.Desktop;
 import jalview.gui.Jalview2XML;
+import jalview.gui.JvOptionPane;
 
 import java.io.File;
 import java.io.IOException;
@@ -38,14 +39,25 @@ import java.util.HashMap;
 import java.util.List;
 
 import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 @Test(singleThreaded = true)
 public class CrossRef2xmlTests extends Jalview2xmlBase
 {
 
+  @Override
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   /**
-   * test store and recovery of expanded views
+   * test store and recovery of all reachable cross refs from all reachable
+   * crossrefs for one or more fetched db refs. Currently, this test has a known
+   * failure case.
    * 
    * @throws Exception
    */
@@ -114,7 +126,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
           AlignmentTest.assertAlignmentDatasetRefs(af.getViewport()
                   .getAlignment(), "Pass (" + pass1 + "," + pass2 + ","
                   + pass3 + "): Fetch " + first + ":");
-          AlignmentTest.assertDatasetIsNormalised(af.getViewport()
+          assertDatasetIsNormalisedKnownDefect(af.getViewport()
                   .getAlignment(), "Pass (" + pass1 + "," + pass2 + ","
                   + pass3 + "): Fetch " + first + ":");
           dna = af.getViewport().getAlignment().isNucleotide();
@@ -128,7 +140,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
           Desktop.instance.closeAll_actionPerformed(null);
           // recover stored project
           af = new FileLoader(false).LoadFileWaitTillLoaded(savedProjects
-                  .get(first).toString(), FormatAdapter.FILE);
+                  .get(first).toString(), DataSourceType.FILE);
           System.out.println("Recovered view for '" + first + "' from '"
                   + savedProjects.get(first).toString() + "'");
           dna = af.getViewport().getAlignment().isNucleotide();
@@ -140,7 +152,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
           AlignmentTest.assertAlignmentDatasetRefs(af.getViewport()
                   .getAlignment(), "Pass (" + pass1 + "," + pass2 + ","
                   + pass3 + "): Recover " + first + ":");
-          AlignmentTest.assertDatasetIsNormalised(af.getViewport()
+          assertDatasetIsNormalisedKnownDefect(af.getViewport()
                   .getAlignment(), "Pass (" + pass1 + "," + pass2 + ","
                   + pass3 + "): Recover " + first + ":");
 
@@ -166,7 +178,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
             // perform crossref action, or retrieve stored project
             List<AlignmentViewPanel> cra_views = new ArrayList<AlignmentViewPanel>();
             CrossRefAction cra = null;
-            
+
             if (pass2 == 0)
             { // retrieve and show cross-refs in this thread
               cra = new CrossRefAction(af, seqs, dna, db);
@@ -201,7 +213,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
               // recover stored project
               AlignFrame af2 = new FileLoader(false)
                       .LoadFileWaitTillLoaded(savedProjects.get(nextxref)
-                              .toString(), FormatAdapter.FILE);
+                              .toString(), DataSourceType.FILE);
               System.out.println("Recovered view for '" + nextxref
                       + "' from '" + savedProjects.get(nextxref).toString()
                       + "'");
@@ -235,7 +247,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
                       "Pass (" + pass1 + "," + pass2 + "," + pass3
                               + "): before start of pass3: " + nextxref
                               + ":");
-              AlignmentTest.assertDatasetIsNormalised(avp.getAlignment(),
+              assertDatasetIsNormalisedKnownDefect(avp.getAlignment(),
                       "Pass (" + pass1 + "," + pass2 + "," + pass3
                               + "): before start of pass3: " + nextxref
                               + ":");
@@ -246,7 +258,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
                       : new CrossRef(xrseqs, dataset)
                               .findXrefSourcesForSequences(avp
                                       .getAlignViewport().isNucleotide());
-              
+
               stringify(dbtoviewBit, savedProjects, nextxref, avp);
               xrptypes.put(nextxref, _xrptypes);
 
@@ -264,8 +276,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
                 {
                   List<AlignmentViewPanel> cra_views2 = new ArrayList<AlignmentViewPanel>();
                   int q = 0;
-                  String nextnextxref = nextxref
-                          + " -> " + xrefdb + "{" + q + "}";
+                  String nextnextxref = nextxref + " -> " + xrefdb + "{"
+                          + q + "}";
 
                   if (pass3 == 0)
                   {
@@ -282,8 +294,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
                     {
                       failedXrefMenuItems
                               .add("No crossrefs retrieved for '"
-                              + nextxref + "' to " + xrefdb + " via '"
-                              + nextaf.getTitle() + "'");
+                                      + nextxref + "' to " + xrefdb
+                                      + " via '" + nextaf.getTitle() + "'");
                       continue;
                     }
                     cra_views2 = cra.getXrefViews();
@@ -312,7 +324,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
                     AlignFrame af2 = new FileLoader(false)
                             .LoadFileWaitTillLoaded(
                                     savedProjects.get(nextnextxref)
-                                            .toString(), FormatAdapter.FILE);
+                                            .toString(),
+                                    DataSourceType.FILE);
                     System.out.println("Recovered view for '"
                             + nextnextxref + "' from '"
                             + savedProjects.get(nextnextxref).toString()
@@ -343,15 +356,15 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
 
                   for (AlignmentViewPanel nextavp : cra_views2)
                   {
-                    nextnextxref = nextxref
-                            + " -> " + xrefdb + "{" + q++ + "}";
+                    nextnextxref = nextxref + " -> " + xrefdb + "{" + q++
+                            + "}";
 
                     // verify references for this panel
                     AlignmentTest.assertAlignmentDatasetRefs(
                             nextavp.getAlignment(), "" + "Pass (" + pass1
                                     + "," + pass2 + "): For "
                                     + nextnextxref + ":");
-                    AlignmentTest.assertDatasetIsNormalised(
+                    assertDatasetIsNormalisedKnownDefect(
                             nextavp.getAlignment(), "" + "Pass (" + pass1
                                     + "," + pass2 + "): For "
                                     + nextnextxref + ":");
@@ -391,15 +404,8 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
         else
         {
           pass1++;
-          if (pass1 < 2)
-          {
-            // verify stored projects for second set of cross references
-            pass2 = 1;
-          // and verify cross-references retrievable from those stored projects.
-            pass3 = 0;
-          }
         }
-      } while (pass3 < 2);
+      } while (pass1 < 3);
     }
     if (failedXrefMenuItems.size() > 0)
     {
@@ -431,6 +437,34 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
     }
   }
 
+  /**
+   * wrapper to trap known defect for AH002001 testcase
+   * 
+   * @param alignment
+   * @param string
+   */
+  private void assertDatasetIsNormalisedKnownDefect(AlignmentI al,
+          String message)
+  {
+    try
+    {
+      AlignmentTest.assertDatasetIsNormalised(al, message);
+    } catch (AssertionError ae)
+    {
+      if (!ae.getMessage().endsWith("EMBL|AH002001"))
+      {
+        throw ae;
+      }
+      else
+      {
+        System.out
+                .println("Ignored exception for known defect: JAL-2179 : "
+                        + message);
+      }
+
+    }
+  }
+
   private void assertProtein(AlignmentViewPanel alignmentViewPanel,
           String message)
   {
@@ -448,8 +482,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
   {
     List<SequenceI> nonType = new ArrayList<SequenceI>();
     for (SequenceI sq : alignmentViewPanel.getAlignViewport()
-            .getAlignment()
-            .getSequences())
+            .getAlignment().getSequences())
     {
       if (sq.isProtein() != expectProtein)
       {
@@ -460,8 +493,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
     {
       Assert.fail(message + " [ "
               + (expectProtein ? "nucleotides were " : "proteins were ")
-              + nonType.toString()
-              + " ]");
+              + nonType.toString() + " ]");
     }
   }