JAL-2465 unit test for bugfix
[jalview.git] / test / jalview / ext / jmol / JmolViewerTest.java
index 3a4e9bf..8f616de 100644 (file)
@@ -27,11 +27,13 @@ import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
 import jalview.gui.Preferences;
 import jalview.gui.StructureViewer;
 import jalview.gui.StructureViewer.ViewerType;
-import jalview.io.FormatAdapter;
+import jalview.io.DataSourceType;
 
+import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -40,6 +42,13 @@ import org.testng.annotations.Test;
 public class JmolViewerTest
 {
 
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   /**
    * @throws java.lang.Exception
    */
@@ -65,7 +74,7 @@ public class JmolViewerTest
     Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
     String inFile = "examples/1gaq.txt";
     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
-            inFile, FormatAdapter.FILE);
+            inFile, DataSourceType.FILE);
     assertTrue("Didn't read input file " + inFile, af != null);
     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
     {
@@ -107,4 +116,57 @@ public class JmolViewerTest
       }
     }
   }
+
+  @Test(groups = { "Functional, Network" })
+  public void testStructureLoadingViaURL()
+  {
+    Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
+    String inFile = "http://www.jalview.org/builds/develop/examples/3W5V.pdb";
+    AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
+            inFile, DataSourceType.URL);
+    assertTrue("Didn't read input file " + inFile, af != null);
+    for (SequenceI sq : af.getViewport().getAlignment().getSequences())
+    {
+      SequenceI dsq = sq.getDatasetSequence();
+      while (dsq.getDatasetSequence() != null)
+      {
+        dsq = dsq.getDatasetSequence();
+      }
+      if (dsq.getAllPDBEntries() != null
+              && dsq.getAllPDBEntries().size() > 0)
+      {
+        for (int q = 0; q < dsq.getAllPDBEntries().size(); q++)
+        {
+          final StructureViewer structureViewer = new StructureViewer(af
+                  .getViewport().getStructureSelectionManager());
+          structureViewer.setViewerType(ViewerType.JMOL);
+          JalviewStructureDisplayI jmolViewer = structureViewer
+                  .viewStructures(dsq.getAllPDBEntries().elementAt(q),
+                          new SequenceI[] { sq }, af.getCurrentView()
+                                  .getAlignPanel());
+          /*
+          * Wait for viewer load thread to complete
+          */
+          try
+          {
+            while (!jmolViewer.getBinding().isFinishedInit())
+            {
+              Thread.sleep(500);
+            }
+          } catch (InterruptedException e)
+          {
+          }
+          // System.out.println(">>>>>>>>>>>>>>>>> "
+          // + jmolViewer.getBinding().getPdbFile());
+          String[] expectedModelFiles = new String[] { "http://www.jalview.org/builds/develop/examples/3W5V.pdb" };
+          String[] actualModelFiles = jmolViewer.getBinding().getStructureFiles();
+          Assert.assertEqualsNoOrder(actualModelFiles, expectedModelFiles);
+          jmolViewer.closeViewer(true);
+          // todo: break here means only once through this loop?
+          break;
+        }
+        break;
+      }
+    }
+  }
 }