2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.renderer;
23 import static org.testng.AssertJUnit.assertEquals;
25 import jalview.api.AlignViewportI;
26 import jalview.datamodel.Alignment;
27 import jalview.datamodel.AlignmentI;
28 import jalview.datamodel.Sequence;
29 import jalview.datamodel.SequenceI;
30 import jalview.gui.AlignViewport;
31 import jalview.gui.JvOptionPane;
32 import jalview.schemes.UserColourScheme;
33 import jalview.schemes.ZappoColourScheme;
34 import jalview.viewmodel.AlignmentViewport;
36 import java.awt.Color;
38 import org.testng.annotations.BeforeClass;
39 import org.testng.annotations.Test;
41 public class ResidueColourFinderTest
44 @BeforeClass(alwaysRun = true)
45 public void setUpJvOptionPane()
47 JvOptionPane.setInteractiveMode(false);
48 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
51 @Test(groups = { "Functional" })
52 public void testGetResidueColour_zappo()
54 SequenceI seq = new Sequence("name", "MATVLGSPRAPAFF"); // FER1_MAIZE...
55 AlignmentI al = new Alignment(new SequenceI[] { seq });
56 final AlignViewportI av = new AlignViewport(al);
57 ResidueColourFinder rcf = new ResidueColourFinder();
58 av.setGlobalColourScheme(new ZappoColourScheme());
60 // @see ResidueProperties.zappo
61 assertEquals(Color.pink,
62 rcf.getResidueColour(true, av.getResidueShading(), null, seq, 0,
64 assertEquals(Color.green,
65 rcf.getResidueColour(true, av.getResidueShading(), null, seq, 2,
67 assertEquals(Color.magenta,
68 rcf.getResidueColour(true, av.getResidueShading(), null, seq, 5,
70 assertEquals(Color.orange,
71 rcf.getResidueColour(true, av.getResidueShading(), null, seq,
75 // everything is white if showBoxes is false
76 assertEquals(Color.white, rcf.getResidueColour(false,
77 av.getResidueShading(), null, seq, 0, null)); // M
78 assertEquals(Color.white, rcf.getResidueColour(false,
79 av.getResidueShading(), null, seq, 2, null)); // T
80 assertEquals(Color.white, rcf.getResidueColour(false,
81 av.getResidueShading(), null, seq, 5, null)); // G
82 assertEquals(Color.white, rcf.getResidueColour(false,
83 av.getResidueShading(), null, seq, 12, null)); // F
86 @Test(groups = { "Functional" })
87 public void testGetResidueColour_none()
89 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
90 AlignmentI al = new Alignment(new SequenceI[] { seq });
91 final AlignViewportI av = new AlignViewport(al);
92 ResidueColourFinder rcf = new ResidueColourFinder();
94 assertEquals(Color.white,
95 rcf.getResidueColour(true, av.getResidueShading(),
97 assertEquals(Color.white,
98 rcf.getResidueColour(true, av.getResidueShading(),
101 // no change if showBoxes is false
102 assertEquals(Color.white, rcf.getResidueColour(false,
103 av.getResidueShading(), null, seq, 0, null));
104 assertEquals(Color.white, rcf.getResidueColour(false,
105 av.getResidueShading(), null, seq, 2, null));
108 @Test(groups = { "Functional" })
109 public void testGetResidueColour_userdef()
111 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
113 AlignmentI al = new Alignment(new SequenceI[] { seq });
114 final AlignViewportI av = new AlignViewport(al);
115 ResidueColourFinder rcf = new ResidueColourFinder();
117 Color[] newColours = new Color[24];
118 for (int i = 0; i < 24; i++)
120 newColours[i] = null;
123 av.setGlobalColourScheme(new UserColourScheme(newColours));
125 // gap colour not specified so gap colour is null
126 // this is consistent with previous behaviour, but may not be correct?
127 assertEquals(null, rcf.getResidueColour(true, av.getResidueShading(),
128 null, seq, 3, null));
130 newColours[23] = Color.pink;
131 av.setGlobalColourScheme(new UserColourScheme(newColours));
133 // gap colour specified as pink
134 assertEquals(Color.pink, rcf.getResidueColour(true,
135 av.getResidueShading(),
136 null, seq, 3, null));
138 // everything is white if showBoxes is false
139 newColours[23] = null;
140 assertEquals(Color.white, rcf.getResidueColour(false,
141 av.getResidueShading(),
142 null, seq, 3, null));
144 newColours[23] = Color.pink;
145 av.setGlobalColourScheme(new UserColourScheme(newColours));
147 // gap colour specified as pink
148 assertEquals(Color.white, rcf.getResidueColour(false,
149 av.getResidueShading(), null, seq, 3, null));
152 // TODO more tests for getResidueColour covering groups, feature rendering...