/* * 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.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( jalview.renderer.OverviewResColourFinder.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( jalview.renderer.OverviewResColourFinder.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); } }