/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.bin;
import java.util.Date;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import jalview.api.AlignViewportI;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.AlignmentPanel;
import jalview.gui.Desktop;
import jalview.gui.JvOptionPane;
import jalview.gui.StructureViewerBase;
@Test
public class CommandsTest2
{
@BeforeClass(alwaysRun = true)
public static void setUpBeforeClass() throws Exception
{
Cache.loadProperties("test/jalview/bin/commandsTest.jvprops");
Date oneHourFromNow = new Date(
System.currentTimeMillis() + 3600 * 1000);
Cache.setDateProperty("JALVIEW_NEWS_RSS_LASTMODIFIED", oneHourFromNow);
if (Desktop.instance != null)
Desktop.instance.closeAll_actionPerformed(null);
}
@AfterClass(alwaysRun = true)
public static void resetProps()
{
Cache.loadProperties("test/jalview/testProps.jvprops");
}
@BeforeClass(alwaysRun = true)
public void setUpJvOptionPane()
{
JvOptionPane.setInteractiveMode(false);
JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
}
@AfterMethod(alwaysRun = true)
public void tearDown()
{
Desktop.closeDesktop();
}
@Test(
groups =
{ "Functional", "testTask1" },
dataProvider = "structureOpeningArgsParams",
singleThreaded = true)
public void structureOpeningArgsTest(String cmdLine, int seqNum,
int annNum, int viewerNum)
{
String[] args = cmdLine.split("\\s+");
CommandsTest.callJalviewMain(args);
while (Desktop.instance != null
&& Desktop.instance.operationsAreInProgress())
{
try
{
// sleep for slow build server to open annotations and viewer windows
Thread.sleep(viewerNum * 50);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
;
AlignFrame[] afs = Desktop.getDesktopAlignFrames();
Assert.assertNotNull(afs);
Assert.assertTrue(afs.length > 0);
AlignFrame af = afs[0];
Assert.assertNotNull(af);
AlignmentPanel ap = af.alignPanel;
Assert.assertNotNull(ap);
AlignmentI al = ap.getAlignment();
Assert.assertNotNull(al);
List seqs = al.getSequences();
Assert.assertNotNull(seqs);
Assert.assertEquals(seqs.size(), seqNum, "Wrong number of sequences");
AlignViewportI av = ap.getAlignViewport();
Assert.assertNotNull(av);
AlignmentAnnotation[] aas = al.getAlignmentAnnotation();
int visibleAnn = 0;
int dcount = 0;
for (AlignmentAnnotation aa : aas)
{
if (aa.visible)
visibleAnn++;
}
Assert.assertEquals(visibleAnn, annNum,
"Wrong number of visible annotations");
if (viewerNum > -1)
{
List openViewers = Desktop.instance
.getStructureViewers(ap, null);
Assert.assertNotNull(openViewers);
int count = 0;
for (StructureViewerBase svb : openViewers)
{
if (svb.isVisible())
count++;
}
Assert.assertEquals(count, viewerNum,
"Wrong number of structure viewers opened");
}
}
@DataProvider(name = "structureOpeningArgsParams")
public Object[][] structureOpeningArgsParams()
{
/*
String cmdLine,
int seqNum,
int annNum,
int structureViewerNum,
*/
return new Object[][] {
//
/*
*/
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--props=test/jalview/bin/commandsTest2.jvprops1 ",
15, 7, 1 },
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--props=test/jalview/bin/commandsTest2.jvprops2 ",
15, 4, 1 },
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--noshowssannotations "
+ "--props=test/jalview/bin/commandsTest2.jvprops1 ",
15, 4, 1 },
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--noshowannotations "
+ "--props=test/jalview/bin/commandsTest2.jvprops1 ",
15, 3, 1 },
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--noshowannotations " + "--noshowssannotations "
+ "--props=test/jalview/bin/commandsTest2.jvprops1 ",
15, 0, 1 },
{ "--gui --nonews --nosplash --debug "
+ "--append=examples/uniref50.fa "
+ "--colour=gecos-flower "
+ "--structure=[seqid=FER1_SPIOL]examples/AlphaFold/AF-P00221-F1-model_v4.cif "
+ "--paematrix=examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json "
+ "--noshowannotations " + "--noshowssannotations "
+ "--props=test/jalview/bin/commandsTest2.jvprops1 ",
15, 0, 1 },
{ "--gui --nonews --nosplash --debug --nowebservicediscovery --props=test/jalview/bin/commandsTest.jvprops --argfile=test/jalview/bin/commandsTest2.argfile1 ",
16, 19, 3 },
{ "--gui --nonews --nosplash --debug --nowebservicediscovery --props=test/jalview/bin/commandsTest.jvprops --argfile=test/jalview/bin/commandsTest2.argfile2 ",
16, 0, 2 },
{ "--gui --nonews --nosplash --debug --nowebservicediscovery --props=test/jalview/bin/commandsTest.jvprops --open=./examples/test_fab41.result/sample.a2m "
+ "--allstructures "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_1_model_3.pdb "
+ "--structureviewer=none "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_2_model_4.pdb "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_3_model_2.pdb",
16, 10, 0 },
{ "--gui --nonews --nosplash --debug --nowebservicediscovery --props=test/jalview/bin/commandsTest.jvprops --open=./examples/test_fab41.result/sample.a2m "
+ "--allstructures "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_1_model_3.pdb "
+ "--noallstructures " + "--structureviewer=none "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_2_model_4.pdb "
+ "--structure=./examples/test_fab41.result/test_fab41_unrelaxed_rank_3_model_2.pdb",
16, 10, 2 },
/*
*/
//
};
}
}