aa127cfe68fe81cc6741c6fe66df764fb34af30b
[jalview.git] / test / jalview / ext / jmol / JmolViewerTest.java
1 package jalview.ext.jmol;
2
3 import static org.testng.AssertJUnit.assertTrue;
4
5 import jalview.api.structures.JalviewStructureDisplayI;
6 import jalview.bin.Cache;
7 import jalview.datamodel.SequenceI;
8 import jalview.gui.AlignFrame;
9 import jalview.gui.Preferences;
10 import jalview.gui.StructureViewer;
11 import jalview.gui.StructureViewer.ViewerType;
12 import jalview.io.FormatAdapter;
13
14 import org.testng.annotations.AfterClass;
15 import org.testng.annotations.BeforeClass;
16 import org.testng.annotations.Test;
17
18 @Test(singleThreaded = true)
19 public class JmolViewerTest
20 {
21
22   /**
23    * @throws java.lang.Exception
24    */
25   @BeforeClass(alwaysRun = true)
26   public static void setUpBeforeClass() throws Exception
27   {
28     jalview.bin.Jalview.main(new String[]
29  {
30         "-noquestionnaire -nonews -props",
31         "test/jalview/ext/rbvi/chimera/testProps.jvprops" });
32   }
33
34   /**
35    * @throws java.lang.Exception
36    */
37   @AfterClass
38   public static void tearDownAfterClass() throws Exception
39   {
40     jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
41   }
42
43   @Test(groups ={ "Functional" })
44   public void testSingleSeqViewJMol()
45   {
46     Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
47     String inFile = "examples/1gaq.txt";
48     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
49             inFile, FormatAdapter.FILE);
50     assertTrue("Didn't read input file " + inFile, af != null);
51     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
52     {
53       SequenceI dsq = sq.getDatasetSequence();
54       while (dsq.getDatasetSequence() != null)
55       {
56         dsq = dsq.getDatasetSequence();
57       }
58       if (dsq.getAllPDBEntries() != null && dsq.getAllPDBEntries().size() > 0)
59       {
60         for (int q = 0; q < dsq.getAllPDBEntries().size(); q++)
61         {
62           final StructureViewer structureViewer = new StructureViewer(af
63                   .getViewport().getStructureSelectionManager());
64           structureViewer.setViewerType(ViewerType.JMOL);
65           JalviewStructureDisplayI jmolViewer = structureViewer
66                   .viewStructures(dsq.getAllPDBEntries().elementAt(q),
67                           new SequenceI[]
68                   { sq }, af.getCurrentView().getAlignPanel());
69           /*
70            * Wait for viewer load thread to complete
71            */
72           try
73           {
74             while (!jmolViewer.getBinding().isFinishedInit())
75             {
76               Thread.sleep(500);
77             }
78           } catch (InterruptedException e)
79           {
80           }
81
82           jmolViewer.closeViewer(true);
83           // todo: break here means only once through this loop?
84           break;
85         }
86         break;
87       }
88     }
89   }
90 }