/* * 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 }, /* */ // }; } }