Clover icon

Coverage Report

  1. Project Clover database Thu Dec 4 2025 14:43:25 GMT
  2. Package jalview.renderer

File OverviewResColourFinderTest.java

 

Code metrics

2
95
6
1
298
184
7
0.07
15.83
6
1.17

Classes

Class Line # Actions
OverviewResColourFinderTest 45 95 7
0.4757281547.6%
 

Contributing tests

This file is covered by 3 tests. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
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.
11    *
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.
16    *
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.
20    */
21    package jalview.renderer;
22   
23    import static org.testng.AssertJUnit.assertEquals;
24   
25    import java.awt.Color;
26    import java.util.ArrayList;
27   
28    import org.testng.annotations.BeforeClass;
29    import org.testng.annotations.Test;
30   
31    import jalview.api.AlignViewportI;
32    import jalview.bin.Cache;
33    import jalview.datamodel.Alignment;
34    import jalview.datamodel.AlignmentI;
35    import jalview.datamodel.Sequence;
36    import jalview.datamodel.SequenceGroup;
37    import jalview.datamodel.SequenceI;
38    import jalview.gui.AlignViewport;
39    import jalview.gui.JvOptionPane;
40    import jalview.gui.OverviewCanvas;
41    import jalview.schemes.ColourSchemeI;
42    import jalview.schemes.UserColourScheme;
43    import jalview.schemes.ZappoColourScheme;
44   
 
45    public class OverviewResColourFinderTest
46    {
47   
 
48  1 toggle @BeforeClass(alwaysRun = true)
49    public void setUpJvOptionPane()
50    {
51  1 JvOptionPane.setInteractiveMode(false);
52  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
53  1 Cache.loadProperties("test/jalview/io/testProps.jvprops");
54    }
55   
 
56  1 toggle @Test(groups = { "Functional" })
57    public void testGetResidueBoxColour_none()
58    {
59  1 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
60  1 AlignmentI al = new Alignment(new SequenceI[] { seq });
61  1 final AlignViewportI av = new AlignViewport(al);
62  1 ResidueColourFinder rcf = new OverviewResColourFinder();
63   
64    // gaps are grey, residues white
65  1 assertEquals(Color.white, rcf.getResidueColour(true,
66    av.getResidueShading(),
67    null, seq, 0, null));
68  1 assertEquals(Color.lightGray, rcf
69    .getResidueColour(true, av.getResidueShading(), null, seq, 2,
70    null));
71   
72    // unaffected by showBoxes setting
73  1 assertEquals(Color.white, rcf.getResidueColour(false,
74    av.getResidueShading(), null, seq, 0, null));
75  1 assertEquals(Color.lightGray, rcf.getResidueColour(false,
76    av.getResidueShading(), null, seq, 2, null));
77    }
78   
 
79  1 toggle @Test(groups = { "Functional" })
80    public void testGetResidueBoxColour_zappo()
81    {
82  1 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
83    // gap
84  1 AlignmentI al = new Alignment(new SequenceI[] { seq });
85  1 final AlignViewportI av = new AlignViewport(al);
86  1 ResidueColourFinder rcf = new OverviewResColourFinder();
87  1 av.setGlobalColourScheme(new ZappoColourScheme());
88   
89    // @see ResidueProperties.zappo
90  1 assertEquals(Color.pink,
91    rcf.getResidueColour(true, av.getResidueShading(),
92    null, seq, 0, null)); // M
93  1 assertEquals(Color.green,
94    rcf.getResidueColour(true, av.getResidueShading(),
95    null, seq, 2, null)); // T
96  1 assertEquals(Color.magenta,
97    rcf.getResidueColour(true, av.getResidueShading(),
98    null, seq, 5, null)); // G
99  1 assertEquals(Color.orange,
100    rcf.getResidueColour(true, av.getResidueShading(),
101    null, seq, 12, null)); // F
102   
103    // gap colour not specified so gaps are lightGray
104  1 assertEquals(Color.lightGray, rcf
105    .getResidueColour(true, av.getResidueShading(), null, seq, 3,
106    null));
107   
108    // unaffected by showBoxes setting
109  1 assertEquals(Color.pink, rcf.getResidueColour(false,
110    av.getResidueShading(), null, seq, 0, null)); // M
111  1 assertEquals(Color.green, rcf.getResidueColour(false,
112    av.getResidueShading(), null, seq, 2, null)); // T
113  1 assertEquals(Color.magenta, rcf.getResidueColour(false,
114    av.getResidueShading(), null, seq, 5, null)); // G
115  1 assertEquals(Color.orange, rcf.getResidueColour(false,
116    av.getResidueShading(), null, seq, 12, null)); // F
117   
118    // gap colour not specified so gaps are lightGray
119  1 assertEquals(Color.lightGray, rcf
120    .getResidueColour(false, av.getResidueShading(), null, seq, 3,
121    null));
122   
123    }
124   
 
125  1 toggle @Test(groups = { "Functional" })
126    public void testGetResidueBoxColour_userdef()
127    {
128  1 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
129    // gap
130  1 AlignmentI al = new Alignment(new SequenceI[] { seq });
131  1 final AlignViewportI av = new AlignViewport(al);
132  1 ResidueColourFinder rcf = new OverviewResColourFinder();
133   
134  1 Color[] newColours = new Color[24];
135  25 for (int i = 0; i < 24; i++)
136    {
137  24 newColours[i] = null;
138    }
139   
140  1 av.setGlobalColourScheme(new UserColourScheme(newColours));
141   
142    // gap colour not specified so gaps are lightGray
143  1 assertEquals(Color.lightGray, rcf
144    .getResidueColour(true, av.getResidueShading(), null, seq, 3,
145    null));
146   
147  1 newColours[23] = Color.pink;
148  1 av.setGlobalColourScheme(new UserColourScheme(newColours));
149   
150    // gap colour specified as pink
151  1 assertEquals(Color.pink, rcf.getResidueColour(true,
152    av.getResidueShading(),
153    null, seq, 3, null));
154   
155    // unaffected by showBoxes setting
156    // gap colour not specified so gaps are lightGray
157  1 newColours[23] = null;
158  1 assertEquals(Color.lightGray, rcf.getResidueColour(false,
159    av.getResidueShading(), null, seq, 3, null));
160   
161  1 newColours[23] = Color.pink;
162  1 av.setGlobalColourScheme(new UserColourScheme(newColours));
163   
164    // gap colour specified as pink
165  1 assertEquals(Color.pink, rcf.getResidueColour(false,
166    av.getResidueShading(), null, seq, 3, null));
167    }
168   
 
169  0 toggle @Test
170    public void testGetResidueBoxColour_group()
171    {
172  0 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
173  0 AlignmentI al = new Alignment(new SequenceI[] { seq });
174   
175  0 ColourSchemeI cs = new ZappoColourScheme();
176  0 ArrayList<SequenceI> seqlist = new ArrayList<>();
177  0 seqlist.add(seq);
178  0 SequenceGroup sg = new SequenceGroup(seqlist, "testgroup", cs, true,
179    true, true, 5, 9);
180  0 al.addGroup(sg);
181  0 SequenceGroup[] groups = new SequenceGroup[1];
182  0 groups[0] = sg;
183   
184  0 final AlignViewportI av = new AlignViewport(al);
185  0 ResidueColourFinder rcf = new OverviewResColourFinder();
186   
187    // G in group specified as magenta in Zappo
188  0 assertEquals(Color.magenta, rcf.getResidueColour(false,
189    av.getResidueShading(), groups, seq, 7, null));
190   
191    // Residue outside group coloured white
192  0 assertEquals(Color.white, rcf.getResidueColour(false,
193    av.getResidueShading(), groups, seq, 0, null));
194   
195    // Gap outside group coloured lightgray
196  0 assertEquals(Color.lightGray, rcf.getResidueColour(false,
197    av.getResidueShading(), groups, seq, 2, null));
198   
199    // use legacy colouring
200  0 rcf = new OverviewResColourFinder(Color.white, Color.lightGray,
201    Color.red);
202   
203    // G in group specified as magenta in Zappo
204  0 assertEquals(Color.magenta, rcf.getResidueColour(false,
205    av.getResidueShading(), groups, seq, 7, null));
206   
207    // Residue outside group coloured lightgray
208  0 assertEquals(Color.lightGray, rcf.getResidueColour(false,
209    av.getResidueShading(), groups, seq, 0, null));
210   
211    // Gap outside group coloured white
212  0 assertEquals(Color.white, rcf.getResidueColour(false,
213    av.getResidueShading(), groups, seq, 2, null));
214   
215    // use new colouring
216  0 rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
217   
218    // G in group specified as magenta in Zappo
219  0 assertEquals(Color.magenta, rcf.getResidueColour(false,
220    av.getResidueShading(), groups, seq, 7, null));
221   
222    // Residue outside group coloured white
223  0 assertEquals(Color.white, rcf.getResidueColour(false,
224    av.getResidueShading(), groups, seq, 0, null));
225   
226    // Gap outside group coloured blue
227  0 assertEquals(Color.blue, rcf.getResidueColour(false,
228    av.getResidueShading(), groups, seq, 2, null));
229    }
230   
 
231  0 toggle @Test
232    public void testGetBoxColour()
233    {
234  0 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
235    // gap
236   
237    // non-legacy colouring
238  0 ResidueColourFinder rcf = new OverviewResColourFinder();
239  0 ResidueShaderI shader = new ResidueShader();
240   
241    // residues white
242  0 Color c = rcf.getBoxColour(shader, seq, 0);
243  0 assertEquals(Color.white, c);
244   
245    // gaps gap colour
246  0 c = rcf.getBoxColour(shader, seq, 3);
247  0 assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
248   
249    // legacy colouring set explicitly via constructor
250  0 rcf = new OverviewResColourFinder(Color.white, Color.lightGray,
251    Color.red);
252  0 shader = new ResidueShader();
253   
254    // residues light gray
255  0 c = rcf.getBoxColour(shader, seq, 0);
256  0 assertEquals(Color.lightGray, c);
257   
258    // gaps white
259  0 c = rcf.getBoxColour(shader, seq, 3);
260  0 assertEquals(Color.white, c);
261   
262    // legacy colouring off
263  0 rcf = new OverviewResColourFinder();
264  0 shader = new ResidueShader();
265   
266    // residues white
267  0 c = rcf.getBoxColour(shader, seq, 0);
268  0 assertEquals(Color.white, c);
269   
270    // gaps gap colour
271  0 c = rcf.getBoxColour(shader, seq, 3);
272  0 assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
273   
274    // non legacy colouring with colour scheme
275  0 rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
276  0 shader = new ResidueShader(new ZappoColourScheme());
277   
278    // M residue pink
279  0 c = rcf.getBoxColour(shader, seq, 0);
280  0 assertEquals(Color.pink, c);
281   
282    // gaps blue
283  0 c = rcf.getBoxColour(shader, seq, 3);
284  0 assertEquals(Color.blue, c);
285   
286    // legacy colouring with colour scheme
287  0 rcf = new OverviewResColourFinder(Color.white, Color.lightGray,
288    Color.red);
289   
290    // M residue pink
291  0 c = rcf.getBoxColour(shader, seq, 0);
292  0 assertEquals(Color.pink, c);
293   
294    // gaps white
295  0 c = rcf.getBoxColour(shader, seq, 3);
296  0 assertEquals(Color.white, c);
297    }
298    }