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.datamodel.Alignment;
26 import jalview.datamodel.AlignmentI;
27 import jalview.datamodel.Sequence;
28 import jalview.datamodel.SequenceI;
29 import jalview.gui.AlignViewport;
30 import jalview.gui.JvOptionPane;
31 import jalview.schemes.UserColourScheme;
32 import jalview.schemes.ZappoColourScheme;
34 import java.awt.Color;
36 import org.testng.annotations.BeforeClass;
37 import org.testng.annotations.Test;
39 public class ResidueColourFinderTest
42 @BeforeClass(alwaysRun = true)
43 public void setUpJvOptionPane()
45 JvOptionPane.setInteractiveMode(false);
46 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
49 @Test(groups = { "Functional" })
50 public void testGetResidueColour_zappo()
52 SequenceI seq = new Sequence("name", "MATVLGSPRAPAFF"); // FER1_MAIZE...
53 AlignmentI al = new Alignment(new SequenceI[] { seq });
54 final AlignViewport av = new AlignViewport(al);
55 ResidueColourFinder rcf = new ResidueColourFinder();
56 av.setGlobalColourScheme(new ZappoColourScheme());
58 // @see ResidueProperties.zappo
59 assertEquals(Color.pink, rcf.getResidueColour(true,
60 av.getResidueShading(), null, seq, 0, null)); // M
61 assertEquals(Color.green, rcf.getResidueColour(true,
62 av.getResidueShading(), null, seq, 2, null)); // T
63 assertEquals(Color.magenta, rcf.getResidueColour(true,
64 av.getResidueShading(), null, seq, 5, null)); // G
65 assertEquals(Color.orange, rcf.getResidueColour(true,
66 av.getResidueShading(), null, seq, 12, null)); // F
68 // everything is white if showBoxes is false
69 assertEquals(Color.white, rcf.getResidueColour(false,
70 av.getResidueShading(), null, seq, 0, null)); // M
71 assertEquals(Color.white, rcf.getResidueColour(false,
72 av.getResidueShading(), null, seq, 2, null)); // T
73 assertEquals(Color.white, rcf.getResidueColour(false,
74 av.getResidueShading(), null, seq, 5, null)); // G
75 assertEquals(Color.white, rcf.getResidueColour(false,
76 av.getResidueShading(), null, seq, 12, null)); // F
79 @Test(groups = { "Functional" })
80 public void testGetResidueColour_none()
82 SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF");
83 AlignmentI al = new Alignment(new SequenceI[] { seq });
84 final AlignViewport av = new AlignViewport(al);
85 ResidueColourFinder rcf = new ResidueColourFinder();
87 assertEquals(Color.white, rcf.getResidueColour(true,
88 av.getResidueShading(), null, seq, 0, null));
89 assertEquals(Color.white, rcf.getResidueColour(true,
90 av.getResidueShading(), null, seq, 2, null));
92 // no change if showBoxes is false
93 assertEquals(Color.white, rcf.getResidueColour(false,
94 av.getResidueShading(), null, seq, 0, null));
95 assertEquals(Color.white, rcf.getResidueColour(false,
96 av.getResidueShading(), null, seq, 2, null));
99 @Test(groups = { "Functional" })
100 public void testGetResidueColour_userdef()
102 SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
104 AlignmentI al = new Alignment(new SequenceI[] { seq });
105 final AlignViewport av = new AlignViewport(al);
106 ResidueColourFinder rcf = new ResidueColourFinder();
108 Color[] newColours = new Color[24];
109 for (int i = 0; i < 24; i++)
111 newColours[i] = null;
114 av.setGlobalColourScheme(new UserColourScheme(newColours));
116 // gap colour not specified so gap colour is null
117 // this is consistent with previous behaviour, but may not be correct?
118 assertEquals(null, rcf.getResidueColour(true, av.getResidueShading(),
119 null, seq, 3, null));
121 newColours[23] = Color.pink;
122 av.setGlobalColourScheme(new UserColourScheme(newColours));
124 // gap colour specified as pink
125 assertEquals(Color.pink, rcf.getResidueColour(true,
126 av.getResidueShading(), null, seq, 3, null));
128 // everything is white if showBoxes is false
129 newColours[23] = null;
130 assertEquals(Color.white, rcf.getResidueColour(false,
131 av.getResidueShading(), null, seq, 3, null));
133 newColours[23] = Color.pink;
134 av.setGlobalColourScheme(new UserColourScheme(newColours));
136 // gap colour specified as pink
137 assertEquals(Color.white, rcf.getResidueColour(false,
138 av.getResidueShading(), null, seq, 3, null));
141 // TODO more tests for getResidueColour covering groups, feature rendering...