X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Frenderer%2FOverviewResColourFinderTest.java;fp=test%2Fjalview%2Frenderer%2FOverviewResColourFinderTest.java;h=2016087303d940420165d86d1203384b9b019c97;hb=72cf0003490f887c3bc8fe0dfea8ac9d48c53eed;hp=0000000000000000000000000000000000000000;hpb=78747ed6d00faabd0dddb8562bdefaf31c4bea4f;p=jalview.git diff --git a/test/jalview/renderer/OverviewResColourFinderTest.java b/test/jalview/renderer/OverviewResColourFinderTest.java new file mode 100644 index 0000000..2016087 --- /dev/null +++ b/test/jalview/renderer/OverviewResColourFinderTest.java @@ -0,0 +1,296 @@ +/* + * 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.renderer; + +import static org.testng.AssertJUnit.assertEquals; + +import jalview.bin.Cache; +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignViewport; +import jalview.gui.JvOptionPane; +import jalview.gui.Preferences; +import jalview.schemes.ColourSchemeI; +import jalview.schemes.UserColourScheme; +import jalview.schemes.ZappoColourScheme; + +import java.awt.Color; +import java.util.ArrayList; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class OverviewResColourFinderTest +{ + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_none() + { + SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF"); + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + + // gaps are grey, residues white + assertEquals(Color.white, rcf.getResidueColour(true, + av.getResidueShading(), + null, seq, 0, null)); + assertEquals(Color.lightGray, rcf + .getResidueColour(true, av.getResidueShading(), null, seq, 2, + null)); + + // unaffected by showBoxes setting + assertEquals(Color.white, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 0, null)); + assertEquals(Color.lightGray, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 2, null)); + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_zappo() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + av.setGlobalColourScheme(new ZappoColourScheme()); + + // @see ResidueProperties.zappo + assertEquals(Color.pink, + rcf.getResidueColour(true, av.getResidueShading(), + null, seq, 0, null)); // M + assertEquals(Color.green, + rcf.getResidueColour(true, av.getResidueShading(), + null, seq, 2, null)); // T + assertEquals(Color.magenta, + rcf.getResidueColour(true, av.getResidueShading(), + null, seq, 5, null)); // G + assertEquals(Color.orange, + rcf.getResidueColour(true, av.getResidueShading(), + null, seq, 12, null)); // F + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(true, av.getResidueShading(), null, seq, 3, + null)); + + // unaffected by showBoxes setting + assertEquals(Color.pink, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 0, null)); // M + assertEquals(Color.green, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 2, null)); // T + assertEquals(Color.magenta, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 5, null)); // G + assertEquals(Color.orange, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 12, null)); // F + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(false, av.getResidueShading(), null, seq, 3, + null)); + + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_userdef() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + + Color[] newColours = new Color[24]; + for (int i = 0; i < 24; i++) + { + newColours[i] = null; + } + + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(true, av.getResidueShading(), null, seq, 3, + null)); + + newColours[23] = Color.pink; + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour specified as pink + assertEquals(Color.pink, rcf.getResidueColour(true, + av.getResidueShading(), + null, seq, 3, null)); + + // unaffected by showBoxes setting + // gap colour not specified so gaps are lightGray + newColours[23] = null; + assertEquals(Color.lightGray, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 3, null)); + + newColours[23] = Color.pink; + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour specified as pink + assertEquals(Color.pink, rcf.getResidueColour(false, + av.getResidueShading(), null, seq, 3, null)); + } + + @Test + public void testGetResidueBoxColour_group() + { + SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF"); + AlignmentI al = new Alignment(new SequenceI[] { seq }); + + ColourSchemeI cs = new ZappoColourScheme(); + ArrayList seqlist = new ArrayList<>(); + seqlist.add(seq); + SequenceGroup sg = new SequenceGroup(seqlist, "testgroup", cs, true, + true, true, 5, 9); + al.addGroup(sg); + SequenceGroup[] groups = new SequenceGroup[1]; + groups[0] = sg; + + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + + // G in group specified as magenta in Zappo + assertEquals(Color.magenta, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 7, null)); + + // Residue outside group coloured white + assertEquals(Color.white, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 0, null)); + + // Gap outside group coloured lightgray + assertEquals(Color.lightGray, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 2, null)); + + // use legacy colouring + rcf = new OverviewResColourFinder(true, Color.blue, Color.red); + + // G in group specified as magenta in Zappo + assertEquals(Color.magenta, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 7, null)); + + // Residue outside group coloured lightgray + assertEquals(Color.lightGray, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 0, null)); + + // Gap outside group coloured white + assertEquals(Color.white, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 2, null)); + + // use new colouring + rcf = new OverviewResColourFinder(false, Color.blue, Color.red); + + // G in group specified as magenta in Zappo + assertEquals(Color.magenta, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 7, null)); + + // Residue outside group coloured white + assertEquals(Color.white, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 0, null)); + + // Gap outside group coloured blue + assertEquals(Color.blue, rcf.getResidueColour(false, + av.getResidueShading(), groups, seq, 2, null)); + } + + @Test + public void testGetBoxColour() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + + // non-legacy colouring + ResidueColourFinder rcf = new OverviewResColourFinder(); + ResidueShaderI shader = new ResidueShader(); + + // residues white + Color c = rcf.getBoxColour(shader, seq, 0); + assertEquals(Color.white, c); + + // gaps gap colour + c = rcf.getBoxColour(shader, seq, 3); + assertEquals(Preferences.OVERVIEW_DEFAULT_GAP, c); + + // legacy colouring set explicitly via constructor + rcf = new OverviewResColourFinder(true, Color.blue, Color.red); + shader = new ResidueShader(); + + // residues light gray + c = rcf.getBoxColour(shader, seq, 0); + assertEquals(Color.lightGray, c); + + // gaps white + c = rcf.getBoxColour(shader, seq, 3); + assertEquals(Color.white, c); + + // legacy colouring off + rcf = new OverviewResColourFinder(); + shader = new ResidueShader(); + + // residues white + c = rcf.getBoxColour(shader, seq, 0); + assertEquals(Color.white, c); + + // gaps gap colour + c = rcf.getBoxColour(shader, seq, 3); + assertEquals(Preferences.OVERVIEW_DEFAULT_GAP, c); + + // non legacy colouring with colour scheme + rcf = new OverviewResColourFinder(false, Color.blue, Color.red); + shader = new ResidueShader(new ZappoColourScheme()); + + // M residue pink + c = rcf.getBoxColour(shader, seq, 0); + assertEquals(Color.pink, c); + + // gaps blue + c = rcf.getBoxColour(shader, seq, 3); + assertEquals(Color.blue, c); + + // legacy colouring with colour scheme + rcf = new OverviewResColourFinder(true, Color.blue, Color.red); + + // M residue pink + c = rcf.getBoxColour(shader, seq, 0); + assertEquals(Color.pink, c); + + // gaps white + c = rcf.getBoxColour(shader, seq, 3); + assertEquals(Color.white, c); + } +}