JAL-1742 suppress 'add chain' option for Jmol, pull up shared code for
[jalview.git] / test / jalview / ext / rbvi / chimera / JalviewChimeraView.java
index 59a0fdb..b9cab9c 100644 (file)
@@ -1,10 +1,13 @@
 package jalview.ext.rbvi.chimera;
 
+import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.api.structures.JalviewStructureDisplayI;
+import jalview.bin.Cache;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
+import jalview.gui.Preferences;
 import jalview.gui.StructureViewer;
 import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.FormatAdapter;
@@ -19,7 +22,7 @@ public class JalviewChimeraView
   /**
    * @throws java.lang.Exception
    */
-  @BeforeClass
+  @BeforeClass(alwaysRun = true)
   public static void setUpBeforeClass() throws Exception
   {
     jalview.bin.Jalview.main(new String[]
@@ -32,19 +35,13 @@ public class JalviewChimeraView
   @AfterClass
   public static void tearDownAfterClass() throws Exception
   {
-    try
-    {
     jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
-    } catch (Exception e)
-    {
-      // ignore NullPointerException thrown by JMol
-    }
-
   }
 
-  @Test
+  @Test(groups ={ "Functional" })
   public void testSingleSeqViewJMol()
   {
+    Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
     String inFile = "examples/1gaq.txt";
     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
             inFile, FormatAdapter.FILE);
@@ -56,23 +53,26 @@ public class JalviewChimeraView
       {
         dsq = dsq.getDatasetSequence();
       }
-      if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
+      if (dsq.getAllPDBEntries() != null && dsq.getAllPDBEntries().size() > 0)
       {
-        for (int q = 0; q < dsq.getPDBId().size(); q++)
+        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.getPDBId().elementAt(q),
+                  .viewStructures(dsq.getAllPDBEntries().elementAt(q),
                           new SequenceI[]
                   { sq }, af.getCurrentView().getAlignPanel());
           /*
-           * Wait for viewer thread to start
+           * Wait for viewer load thread to complete
            */
           try
           {
-            Thread.sleep(1000);
+            while (!jmolViewer.getBinding().isFinishedInit())
+            {
+              Thread.sleep(500);
+            }
           } catch (InterruptedException e)
           {
           }
@@ -86,40 +86,47 @@ public class JalviewChimeraView
     }
   }
 
-  @Test
+  @Test(groups ={ "Functional" })
   public void testSingleSeqViewChimera()
   {
+    Cache.setProperty(Preferences.STRUCTURE_DISPLAY,
+            ViewerType.CHIMERA.name());
     String inFile = "examples/1gaq.txt";
     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
             inFile, FormatAdapter.FILE);
     assertTrue("Didn't read input file " + inFile, af != null);
     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
     {
+      System.out.println("** sq=" + sq.getName());
       SequenceI dsq = sq.getDatasetSequence();
       while (dsq.getDatasetSequence() != null)
       {
         dsq = dsq.getDatasetSequence();
       }
-      if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
+      if (dsq.getAllPDBEntries() != null && dsq.getAllPDBEntries().size() > 0)
       {
-        for (int q = 0; q < dsq.getPDBId().size(); q++)
+        for (int q = 0; q < dsq.getAllPDBEntries().size(); q++)
         {
           final StructureViewer structureViewer = new StructureViewer(af
                   .getViewport().getStructureSelectionManager());
           structureViewer.setViewerType(ViewerType.CHIMERA);
           JalviewStructureDisplayI chimeraViewer = structureViewer
-                  .viewStructures(dsq.getPDBId().elementAt(q),
+                  .viewStructures(dsq.getAllPDBEntries().elementAt(q),
                           new SequenceI[]
                           { sq }, af.getCurrentView().getAlignPanel());
           /*
-           * Wait for viewer thread to start
+           * Wait for viewer load thread to complete
            */
-          try
-          {
-            Thread.sleep(1000);
-          } catch (InterruptedException e)
+          while (!chimeraViewer.getBinding().isFinishedInit())
           {
+            try
+            {
+              Thread.sleep(500);
+            } catch (InterruptedException e)
+            {
+            }
           }
+          assertEquals(1, chimeraViewer.getBinding().getPdbCount());
           chimeraViewer.closeViewer(true);
           // todo: break here means only once through this loop?
           break;