3df2da97cd20f6676afe74a33b30da4da7793278
[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         "-noquestionnaire -nonews -props",
30         "test/jalview/ext/rbvi/chimera/testProps.jvprops" });
31   }
32
33   /**
34    * @throws java.lang.Exception
35    */
36   @AfterClass
37   public static void tearDownAfterClass() throws Exception
38   {
39     jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
40   }
41
42   @Test(groups = { "Functional" })
43   public void testSingleSeqViewJMol()
44   {
45     Cache.setProperty(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name());
46     String inFile = "examples/1gaq.txt";
47     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
48             inFile, FormatAdapter.FILE);
49     assertTrue("Didn't read input file " + inFile, af != null);
50     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
51     {
52       SequenceI dsq = sq.getDatasetSequence();
53       while (dsq.getDatasetSequence() != null)
54       {
55         dsq = dsq.getDatasetSequence();
56       }
57       if (dsq.getAllPDBEntries() != null
58               && 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[] { sq }, af.getCurrentView()
68                                   .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 }