JAL-1596 refactoring to allow unit tests to start and shut down Chimera
[jalview.git] / test / jalview / ext / rbvi / chimera / JalviewChimeraView.java
1 package jalview.ext.rbvi.chimera;
2
3 import static org.junit.Assert.assertTrue;
4
5 import org.junit.AfterClass;
6 import org.junit.BeforeClass;
7 import org.junit.Test;
8
9 import jalview.api.structures.JalviewStructureDisplayI;
10 import jalview.datamodel.PDBEntry;
11 import jalview.datamodel.SequenceI;
12 import jalview.gui.AlignFrame;
13 import jalview.gui.StructureViewer;
14 import jalview.gui.StructureViewer.ViewerType;
15 import jalview.io.FormatAdapter;
16
17 public class JalviewChimeraView
18 {
19
20   /**
21    * @throws java.lang.Exception
22    */
23   @BeforeClass
24   public static void setUpBeforeClass() throws Exception
25   {
26     jalview.bin.Jalview.main(new String[]
27     { "-noquestionnaire -nonews -props", "test/src/jalview/ext/rbvi/chimera/testProps.jvprops" });
28   }
29
30   /**
31    * @throws java.lang.Exception
32    */
33   @AfterClass
34   public static void tearDownAfterClass() throws Exception
35   {
36     try
37     {
38     jalview.gui.Desktop.instance.closeAll_actionPerformed(null);
39     } catch (Exception e)
40     {
41       // ignore NullPointerException thrown by JMol
42     }
43
44   }
45
46   @Test
47   public void testSingleSeqViewJMol()
48   {
49     String inFile = "examples/1gaq.txt";
50     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
51             inFile, FormatAdapter.FILE);
52     assertTrue("Didn't read input file " + inFile, af != null);
53     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
54     {
55       SequenceI dsq = sq.getDatasetSequence();
56       while (dsq.getDatasetSequence() != null)
57       {
58         dsq = dsq.getDatasetSequence();
59       }
60       if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
61       {
62         for (int q = 0; q < dsq.getPDBId().size(); q++)
63         {
64           final StructureViewer structureViewer = new StructureViewer(af
65                   .getViewport().getStructureSelectionManager());
66
67           JalviewStructureDisplayI jmolViewer = structureViewer
68                   .viewStructures(ViewerType.JMOL, af.getCurrentView()
69                           .getAlignPanel(), new PDBEntry[]
70                   { (PDBEntry) dsq.getPDBId().elementAt(q) },
71                           new SequenceI[][]
72                           { new SequenceI[]
73                           { sq } });
74           /*
75            * Wait for viewer thread to start
76            */
77           try
78           {
79             Thread.sleep(1000);
80           } catch (InterruptedException e)
81           {
82           }
83
84           jmolViewer.closeViewer(true);
85           // todo: break here means only once through this loop?
86           break;
87         }
88         break;
89       }
90     }
91   }
92
93   @Test
94   public void testSingleSeqViewChimera()
95   {
96     String inFile = "examples/1gaq.txt";
97     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
98             inFile, FormatAdapter.FILE);
99     assertTrue("Didn't read input file " + inFile, af != null);
100     for (SequenceI sq : af.getViewport().getAlignment().getSequences())
101     {
102       SequenceI dsq = sq.getDatasetSequence();
103       while (dsq.getDatasetSequence() != null)
104       {
105         dsq = dsq.getDatasetSequence();
106       }
107       if (dsq.getPDBId() != null && dsq.getPDBId().size() > 0)
108       {
109         for (int q = 0; q < dsq.getPDBId().size(); q++)
110         {
111           final StructureViewer structureViewer = new StructureViewer(af
112                   .getViewport().getStructureSelectionManager());
113
114           JalviewStructureDisplayI chimeraViewer = structureViewer
115                   .viewStructures(ViewerType.CHIMERA, af.getCurrentView()
116                           .getAlignPanel(), new PDBEntry[]
117                   { (PDBEntry) dsq.getPDBId().elementAt(q) },
118                           new SequenceI[][]
119                           { new SequenceI[]
120                           { sq } });
121           /*
122            * Wait for viewer thread to start
123            */
124           try
125           {
126             Thread.sleep(1000);
127           } catch (InterruptedException e)
128           {
129           }
130           chimeraViewer.closeViewer(true);
131           // todo: break here means only once through this loop?
132           break;
133         }
134         break;
135       }
136     }
137   }
138 }