JAL-629 loaded props from arg in failing build server tests
[jalview.git] / test / jalview / bin / CommandsTest2.java
1 package jalview.bin;
2
3 import java.util.Date;
4 import java.util.List;
5
6 import org.testng.Assert;
7 import org.testng.annotations.AfterClass;
8 import org.testng.annotations.AfterMethod;
9 import org.testng.annotations.BeforeClass;
10 import org.testng.annotations.DataProvider;
11 import org.testng.annotations.Test;
12
13 import jalview.api.AlignViewportI;
14 import jalview.datamodel.AlignmentAnnotation;
15 import jalview.datamodel.AlignmentI;
16 import jalview.datamodel.SequenceI;
17 import jalview.gui.AlignFrame;
18 import jalview.gui.AlignmentPanel;
19 import jalview.gui.Desktop;
20 import jalview.gui.JvOptionPane;
21 import jalview.gui.StructureViewerBase;
22
23 @Test
24 public class CommandsTest2
25 {
26   @BeforeClass(alwaysRun = true)
27   public static void setUpBeforeClass() throws Exception
28   {
29     Cache.loadProperties("test/jalview/bin/commandsTest2.jvprops");
30     Date oneHourFromNow = new Date(
31             System.currentTimeMillis() + 3600 * 1000);
32     Cache.setDateProperty("JALVIEW_NEWS_RSS_LASTMODIFIED", oneHourFromNow);
33     if (Desktop.instance != null)
34       Desktop.instance.closeAll_actionPerformed(null);
35
36   }
37
38   @AfterClass(alwaysRun = true)
39   public static void resetProps()
40   {
41     Cache.loadProperties("test/jalview/testProps.jvprops");
42   }
43
44   @BeforeClass(alwaysRun = true)
45   public void setUpJvOptionPane()
46   {
47     JvOptionPane.setInteractiveMode(false);
48     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
49   }
50
51   @AfterMethod(alwaysRun = true)
52   public void tearDown()
53   {
54     if (Desktop.instance != null)
55       Desktop.instance.closeAll_actionPerformed(null);
56   }
57
58   @Test(
59     groups =
60     { "Functional" },
61     dataProvider = "structureOpeningArgsParams",
62     singleThreaded = true)
63   public void structureOpeningArgsTest(String cmdLine, int seqNum,
64           int annNum, int viewerNum)
65   {
66     String[] args = cmdLine.split("\\s+");
67
68     Jalview.main(args);
69     try
70     {
71       // sleep for slow build server to open annotations and viewer windows
72       Thread.sleep(seqNum * 100 + annNum * 200 + viewerNum * 1500);
73     } catch (InterruptedException e)
74     {
75       e.printStackTrace();
76     }
77
78     AlignFrame[] afs = Desktop.getAlignFrames();
79     Assert.assertNotNull(afs);
80     Assert.assertTrue(afs.length > 0);
81
82     AlignFrame af = afs[0];
83     Assert.assertNotNull(af);
84
85     AlignmentPanel ap = af.alignPanel;
86     Assert.assertNotNull(ap);
87
88     AlignmentI al = ap.getAlignment();
89     Assert.assertNotNull(al);
90
91     List<SequenceI> seqs = al.getSequences();
92     Assert.assertNotNull(seqs);
93
94     Assert.assertEquals(seqs.size(), seqNum, "Wrong number of sequences");
95
96     AlignViewportI av = ap.getAlignViewport();
97     Assert.assertNotNull(av);
98
99     AlignmentAnnotation[] aas = al.getAlignmentAnnotation();
100     int visibleAnn = 0;
101     int dcount = 0;
102     for (AlignmentAnnotation aa : aas)
103     {
104       System.err.println("##### DIAGNOSIS: annotation " + ++dcount
105               + " is labelled '" + aa.label + "'");
106       System.err.println("# " + aa.annotationId + ": " + aa.toString());
107       if (aa.visible)
108         visibleAnn++;
109     }
110
111     Assert.assertEquals(visibleAnn, annNum,
112             "Wrong number of visible annotations");
113
114     if (viewerNum > -1)
115     {
116       List<StructureViewerBase> openViewers = Desktop.instance
117               .getStructureViewers(ap, null);
118       Assert.assertNotNull(openViewers);
119       int count = 0;
120       for (StructureViewerBase svb : openViewers)
121       {
122         if (svb.isVisible())
123           count++;
124       }
125       Assert.assertEquals(count, viewerNum,
126               "Wrong number of structure viewers opened");
127     }
128   }
129
130   @DataProvider(name = "structureOpeningArgsParams")
131   public Object[][] structureOpeningArgsParams()
132   {
133     /*
134       String cmdLine,
135       int seqNum,
136       int annNum,
137       int viewerNum,
138       String propsFile
139      */
140     return new Object[][] {
141         //
142         /*
143          */
144         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
145                 + "--colour=gecos:flower "
146                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
147                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
148                 + "--props=test/jalview/bin/commandsTest2.jvprops1 ",
149             15, 7, 1 },
150         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
151                 + "--colour=gecos:flower "
152                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
153                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
154                 + "--props=test/jalview/bin/commandsTest2.jvprops2 ",
155             15, 4, 1 },
156         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
157                 + "--colour=gecos:flower "
158                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
159                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
160                 + "--nossannotations "
161                 + "--props=test/jalview/bin/commandsTest2.jvprops1 ",
162             15, 4, 1 },
163         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
164                 + "--colour=gecos:flower "
165                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
166                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
167                 + "--noannotations "
168                 + "--props=test/jalview/bin/commandsTest2.jvprops1 ",
169             15, 3, 1 },
170         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
171                 + "--colour=gecos:flower "
172                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
173                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
174                 + "--noannotations " + "--nossannotations "
175                 + "--props=test/jalview/bin/commandsTest2.jvprops1 ",
176             15, 0, 1 },
177         { "--nonews --nosplash --debug " + "--append=examples/uniref50.fa "
178                 + "--colour=gecos:flower "
179                 + "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
180                 + "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
181                 + "--noannotations " + "--nossannotations "
182                 + "--props=test/jalview/bin/commandsTest2.jvprops1 ",
183             15, 0, 1 },
184         { "--props=test/jalview/bin/commandsTest2.jvprops --argfile=test/jalview/bin/commandsTest2.argfile1 ",
185             16, 19, 3 },
186         { "--props=test/jalview/bin/commandsTest2.jvprops --argfile=test/jalview/bin/commandsTest2.argfile2 ",
187             16, 0, 2 },
188         //
189     };
190   }
191 }