X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FAlignViewportTest.java;h=06df70ab6c7aa972572f6b1f214d1e24e69bd478;hb=14985603cea28569e295ddabb219da8034f1c7b2;hp=aab67f68b5980ae7eb03feb8e68a1577a911f30b;hpb=ee198b3ca3687f18a2ee186f4e7c7330f4ea30f0;p=jalview.git diff --git a/test/jalview/gui/AlignViewportTest.java b/test/jalview/gui/AlignViewportTest.java index aab67f6..06df70a 100644 --- a/test/jalview/gui/AlignViewportTest.java +++ b/test/jalview/gui/AlignViewportTest.java @@ -26,16 +26,26 @@ import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; +import jalview.bin.Cache; +import jalview.bin.Jalview; import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; import jalview.datamodel.PDBEntry; import jalview.datamodel.PDBEntry.Type; +import jalview.datamodel.SearchResults; +import jalview.datamodel.SearchResultsI; import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.FileLoader; +import jalview.schemes.ColourSchemeI; +import jalview.schemes.PIDColourScheme; import jalview.structure.StructureSelectionManager; +import jalview.util.MapList; import java.util.ArrayList; import java.util.List; @@ -47,6 +57,13 @@ import org.testng.annotations.Test; public class AlignViewportTest { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + AlignmentI al; AlignViewport testee; @@ -54,7 +71,7 @@ public class AlignViewportTest @BeforeClass(alwaysRun = true) public static void setUpBeforeClass() throws Exception { - jalview.bin.Jalview.main(new String[] { "-props", + Jalview.main(new String[] { "-nonews", "-props", "test/jalview/testProps.jvprops" }); } @@ -73,6 +90,7 @@ public class AlignViewportTest @Test(groups = { "Functional" }) public void testCollateForPdb() { + // JBP: What behaviour is this supposed to test ? /* * Set up sequence pdb ids */ @@ -133,8 +151,13 @@ public class AlignViewportTest AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded( ">Seq1\nCAGT\n", DataSourceType.PASTE); + SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0); AlignedCodonFrame acf1 = new AlignedCodonFrame(); + acf1.addMap(s1, s1, new MapList(new int[] { 1, 4 }, new int[] { 1, 4 }, + 1, 1)); AlignedCodonFrame acf2 = new AlignedCodonFrame(); + acf2.addMap(s1, s1, new MapList(new int[] { 1, 4 }, new int[] { 4, 1 }, + 1, 1)); List mappings = new ArrayList(); mappings.add(acf1); @@ -178,10 +201,20 @@ public class AlignViewportTest ">Seq1\nRSVQ\n", DataSourceType.PASTE); AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded( ">Seq2\nDGEL\n", DataSourceType.PASTE); - + SequenceI cs1 = new Sequence("cseq1", "CCCGGGTTTAAA"); + SequenceI cs2 = new Sequence("cseq2", "CTTGAGTCTAGA"); + SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0); + SequenceI s2 = af2.getViewport().getAlignment().getSequenceAt(0); + // need to be distinct AlignedCodonFrame acf1 = new AlignedCodonFrame(); + acf1.addMap(cs1, s1, new MapList(new int[] { 1, 4 }, + new int[] { 1, 12 }, 1, 3)); AlignedCodonFrame acf2 = new AlignedCodonFrame(); + acf2.addMap(cs2, s2, new MapList(new int[] { 1, 4 }, + new int[] { 1, 12 }, 1, 3)); AlignedCodonFrame acf3 = new AlignedCodonFrame(); + acf3.addMap(cs2, cs2, new MapList(new int[] { 1, 12 }, new int[] { 1, + 12 }, 1, 1)); List mappings1 = new ArrayList(); mappings1.add(acf1); @@ -231,10 +264,20 @@ public class AlignViewportTest ">Seq1\nRSVQ\n", DataSourceType.PASTE); AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded( ">Seq2\nDGEL\n", DataSourceType.PASTE); - + SequenceI cs1 = new Sequence("cseq1", "CCCGGGTTTAAA"); + SequenceI cs2 = new Sequence("cseq2", "CTTGAGTCTAGA"); + SequenceI s1 = af1.getViewport().getAlignment().getSequenceAt(0); + SequenceI s2 = af2.getViewport().getAlignment().getSequenceAt(0); + // need to be distinct AlignedCodonFrame acf1 = new AlignedCodonFrame(); + acf1.addMap(cs1, s1, new MapList(new int[] { 1, 4 }, + new int[] { 1, 12 }, 1, 3)); AlignedCodonFrame acf2 = new AlignedCodonFrame(); + acf2.addMap(cs2, s2, new MapList(new int[] { 1, 4 }, + new int[] { 1, 12 }, 1, 3)); AlignedCodonFrame acf3 = new AlignedCodonFrame(); + acf3.addMap(cs2, cs2, new MapList(new int[] { 1, 12 }, new int[] { 1, + 12 }, 1, 1)); List mappings1 = new ArrayList(); mappings1.add(acf1); @@ -270,4 +313,95 @@ public class AlignViewportTest assertTrue(ssmMappings.contains(acf2)); assertFalse(ssmMappings.contains(acf3)); } + + /** + * Test for JAL-1306 - conservation thread should run even when only Quality + * (and not Conservation) is enabled in Preferences + */ + @Test(groups = { "Functional" }) + public void testUpdateConservation_qualityOnly() + { + Cache.applicationProperties.setProperty("SHOW_ANNOTATIONS", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("SHOW_QUALITY", + Boolean.TRUE.toString()); + Cache.applicationProperties.setProperty("SHOW_CONSERVATION", + Boolean.FALSE.toString()); + Cache.applicationProperties.setProperty("SHOW_IDENTITY", + Boolean.FALSE.toString()); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.fa", DataSourceType.FILE); + AlignmentAnnotation[] anns = af.viewport.getAlignment() + .getAlignmentAnnotation(); + assertNotNull("No annotations found", anns); + assertEquals("More than one annotation found", 1, anns.length); + assertTrue("Annotation is not Quality", + anns[0].description.startsWith("Alignment Quality")); + Annotation[] annotations = anns[0].annotations; + assertNotNull("Quality annotations are null", annotations); + assertNotNull("Quality in column 1 is null", annotations[0]); + assertTrue("No quality value in column 1", annotations[0].value > 10f); + } + + @Test(groups = { "Functional" }) + public void testSetGlobalColourScheme() + { + /* + * test for JAL-2283: don't inadvertently turn on colour by conservation + */ + Cache.applicationProperties.setProperty("DEFAULT_COLOUR_PROT", "None"); + Cache.applicationProperties.setProperty("SHOW_CONSERVATION", + Boolean.TRUE.toString()); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.fa", DataSourceType.FILE); + ColourSchemeI cs = new PIDColourScheme(); + af.getViewport().setGlobalColourScheme(cs); + assertFalse(af.getViewport().getResidueShading() + .conservationApplied()); + } + + @Test(groups = { "Functional" }) + public void testSetGetHasSearchResults() + { + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.fa", DataSourceType.FILE); + SearchResultsI sr = new SearchResults(); + SequenceI s1 = af.getViewport().getAlignment().getSequenceAt(0); + + // create arbitrary range on first sequence + sr.addResult(s1, s1.getStart() + 10, s1.getStart() + 15); + + // test set + af.getViewport().setSearchResults(sr); + // has -> true + assertTrue(af.getViewport().hasSearchResults()); + // get == original + assertEquals(sr, af.getViewport().getSearchResults()); + + // set(null) results in has -> false + + af.getViewport().setSearchResults(null); + assertFalse(af.getViewport().hasSearchResults()); + } + + /** + * Verify that setting the selection group has the side-effect of setting the + * context on the group, unless it already has one + */ + @Test(groups = { "Functional" }) + public void testSetSelectionGroup() + { + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + "examples/uniref50.fa", DataSourceType.FILE); + AlignViewport av = af.getViewport(); + SequenceGroup sg1 = new SequenceGroup(); + SequenceGroup sg2 = new SequenceGroup(); + + av.setSelectionGroup(sg1); + assertSame(sg1.getContext(), av.getAlignment()); // context set + + sg2.setContext(sg1); + av.setSelectionGroup(sg2); + assertSame(sg2.getContext(), sg1); // unchanged + } }