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.bin.Cache;
27 import jalview.datamodel.Alignment;
28 import jalview.datamodel.AlignmentI;
29 import jalview.datamodel.Sequence;
30 import jalview.datamodel.SequenceGroup;
31 import jalview.datamodel.SequenceI;
32 import jalview.gui.AlignViewport;
33 import jalview.gui.JvOptionPane;
34 import jalview.schemes.ColourSchemeI;
35 import jalview.schemes.UserColourScheme;
36 import jalview.schemes.ZappoColourScheme;
37 import jalview.viewmodel.AlignmentViewport;
39 import java.awt.Color;
40 import java.util.ArrayList;
42 import org.testng.annotations.BeforeClass;
43 import org.testng.annotations.Test;
45 public class OverviewResColourFinderTest
48 @BeforeClass(alwaysRun = true)
49 public void setUpJvOptionPane()
51 JvOptionPane.setInteractiveMode(false);
52 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
53 Cache.loadProperties("test/jalview/io/testProps.jvprops");
56 @Test(groups = { "Functional" })
57 public void testGetResidueBoxColour_none()
59 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
60 AlignmentI al = new Alignment(new SequenceI[] { seq });
61 final AlignViewportI av = new AlignViewport(al);
62 ResidueColourFinder rcf = new OverviewResColourFinder();
64 // gaps are grey, residues white
65 assertEquals(Color.white, rcf.getResidueColour(true,
66 av.getResidueShading(),
68 assertEquals(Color.lightGray, rcf
69 .getResidueColour(true, av.getResidueShading(), null, seq, 2,
72 // unaffected by showBoxes setting
73 assertEquals(Color.white, rcf.getResidueColour(false,
74 av.getResidueShading(), null, seq, 0, null));
75 assertEquals(Color.lightGray, rcf.getResidueColour(false,
76 av.getResidueShading(), null, seq, 2, null));
79 @Test(groups = { "Functional" })
80 public void testGetResidueBoxColour_zappo()
82 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
84 AlignmentI al = new Alignment(new SequenceI[] { seq });
85 final AlignViewportI av = new AlignViewport(al);
86 ResidueColourFinder rcf = new OverviewResColourFinder();
87 av.setGlobalColourScheme(new ZappoColourScheme());
89 // @see ResidueProperties.zappo
90 assertEquals(Color.pink,
91 rcf.getResidueColour(true, av.getResidueShading(),
92 null, seq, 0, null)); // M
93 assertEquals(Color.green,
94 rcf.getResidueColour(true, av.getResidueShading(),
95 null, seq, 2, null)); // T
96 assertEquals(Color.magenta,
97 rcf.getResidueColour(true, av.getResidueShading(),
98 null, seq, 5, null)); // G
99 assertEquals(Color.orange,
100 rcf.getResidueColour(true, av.getResidueShading(),
101 null, seq, 12, null)); // F
103 // gap colour not specified so gaps are lightGray
104 assertEquals(Color.lightGray, rcf
105 .getResidueColour(true, av.getResidueShading(), null, seq, 3,
108 // unaffected by showBoxes setting
109 assertEquals(Color.pink, rcf.getResidueColour(false,
110 av.getResidueShading(), null, seq, 0, null)); // M
111 assertEquals(Color.green, rcf.getResidueColour(false,
112 av.getResidueShading(), null, seq, 2, null)); // T
113 assertEquals(Color.magenta, rcf.getResidueColour(false,
114 av.getResidueShading(), null, seq, 5, null)); // G
115 assertEquals(Color.orange, rcf.getResidueColour(false,
116 av.getResidueShading(), null, seq, 12, null)); // F
118 // gap colour not specified so gaps are lightGray
119 assertEquals(Color.lightGray, rcf
120 .getResidueColour(false, av.getResidueShading(), null, seq, 3,
125 @Test(groups = { "Functional" })
126 public void testGetResidueBoxColour_userdef()
128 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
130 AlignmentI al = new Alignment(new SequenceI[] { seq });
131 final AlignViewportI av = new AlignViewport(al);
132 ResidueColourFinder rcf = new OverviewResColourFinder();
134 Color[] newColours = new Color[24];
135 for (int i = 0; i < 24; i++)
137 newColours[i] = null;
140 av.setGlobalColourScheme(new UserColourScheme(newColours));
142 // gap colour not specified so gaps are lightGray
143 assertEquals(Color.lightGray, rcf
144 .getResidueColour(true, av.getResidueShading(), null, seq, 3,
147 newColours[23] = Color.pink;
148 av.setGlobalColourScheme(new UserColourScheme(newColours));
150 // gap colour specified as pink
151 assertEquals(Color.pink, rcf.getResidueColour(true,
152 av.getResidueShading(),
153 null, seq, 3, null));
155 // unaffected by showBoxes setting
156 // gap colour not specified so gaps are lightGray
157 newColours[23] = null;
158 assertEquals(Color.lightGray, rcf.getResidueColour(false,
159 av.getResidueShading(), null, seq, 3, null));
161 newColours[23] = Color.pink;
162 av.setGlobalColourScheme(new UserColourScheme(newColours));
164 // gap colour specified as pink
165 assertEquals(Color.pink, rcf.getResidueColour(false,
166 av.getResidueShading(), null, seq, 3, null));
170 public void testGetResidueBoxColour_group()
172 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
173 AlignmentI al = new Alignment(new SequenceI[] { seq });
175 ColourSchemeI cs = new ZappoColourScheme();
176 ArrayList<SequenceI> seqlist = new ArrayList<>();
178 SequenceGroup sg = new SequenceGroup(seqlist, "testgroup", cs, true,
181 SequenceGroup[] groups = new SequenceGroup[1];
184 final AlignViewportI av = new AlignViewport(al);
185 ResidueColourFinder rcf = new OverviewResColourFinder();
187 // G in group specified as magenta in Zappo
188 assertEquals(Color.magenta, rcf.getResidueColour(false,
189 av.getResidueShading(), groups, seq, 7, null));
191 // Residue outside group coloured white
192 assertEquals(Color.white, rcf.getResidueColour(false,
193 av.getResidueShading(), groups, seq, 0, null));
195 // Gap outside group coloured lightgray
196 assertEquals(Color.lightGray, rcf.getResidueColour(false,
197 av.getResidueShading(), groups, seq, 2, null));
199 // use legacy colouring
200 rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
202 // G in group specified as magenta in Zappo
203 assertEquals(Color.magenta, rcf.getResidueColour(false,
204 av.getResidueShading(), groups, seq, 7, null));
206 // Residue outside group coloured lightgray
207 assertEquals(Color.lightGray, rcf.getResidueColour(false,
208 av.getResidueShading(), groups, seq, 0, null));
210 // Gap outside group coloured white
211 assertEquals(Color.white, rcf.getResidueColour(false,
212 av.getResidueShading(), groups, seq, 2, null));
215 rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
217 // G in group specified as magenta in Zappo
218 assertEquals(Color.magenta, rcf.getResidueColour(false,
219 av.getResidueShading(), groups, seq, 7, null));
221 // Residue outside group coloured white
222 assertEquals(Color.white, rcf.getResidueColour(false,
223 av.getResidueShading(), groups, seq, 0, null));
225 // Gap outside group coloured blue
226 assertEquals(Color.blue, rcf.getResidueColour(false,
227 av.getResidueShading(), groups, seq, 2, null));
231 public void testGetBoxColour()
233 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
236 // non-legacy colouring
237 ResidueColourFinder rcf = new OverviewResColourFinder();
238 ResidueShaderI shader = new ResidueShader();
241 Color c = rcf.getBoxColour(shader, seq, 0);
242 assertEquals(Color.white, c);
245 c = rcf.getBoxColour(shader, seq, 3);
247 jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
250 // legacy colouring set explicitly via constructor
251 rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
252 shader = new ResidueShader();
254 // residues light gray
255 c = rcf.getBoxColour(shader, seq, 0);
256 assertEquals(Color.lightGray, c);
259 c = rcf.getBoxColour(shader, seq, 3);
260 assertEquals(Color.white, c);
262 // legacy colouring off
263 rcf = new OverviewResColourFinder();
264 shader = new ResidueShader();
267 c = rcf.getBoxColour(shader, seq, 0);
268 assertEquals(Color.white, c);
271 c = rcf.getBoxColour(shader, seq, 3);
272 assertEquals(OverviewResColourFinder.OVERVIEW_DEFAULT_GAP, c);
274 // non legacy colouring with colour scheme
275 rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
276 shader = new ResidueShader(new ZappoColourScheme());
279 c = rcf.getBoxColour(shader, seq, 0);
280 assertEquals(Color.pink, c);
283 c = rcf.getBoxColour(shader, seq, 3);
284 assertEquals(Color.blue, c);
286 // legacy colouring with colour scheme
287 rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
290 c = rcf.getBoxColour(shader, seq, 0);
291 assertEquals(Color.pink, c);
294 c = rcf.getBoxColour(shader, seq, 3);
295 assertEquals(Color.white, c);