Updated with latest from mchmmer branch
[jalview.git] / test / jalview / renderer / ResidueColourFinderTest.java
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 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;
35
36 import java.awt.Color;
37
38 import org.testng.annotations.BeforeClass;
39 import org.testng.annotations.Test;
40
41 public class ResidueColourFinderTest
42 {
43
44   @BeforeClass(alwaysRun = true)
45   public void setUpJvOptionPane()
46   {
47     JvOptionPane.setInteractiveMode(false);
48     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
49   }
50
51   @Test(groups = { "Functional" })
52   public void testGetResidueColour_zappo()
53   {
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());
59
60     // @see ResidueProperties.zappo
61     assertEquals(Color.pink,
62             rcf.getResidueColour(true, av.getResidueShading(), null, seq, 0,
63                     null)); // M
64     assertEquals(Color.green,
65             rcf.getResidueColour(true, av.getResidueShading(), null, seq, 2,
66                     null)); // T
67     assertEquals(Color.magenta,
68             rcf.getResidueColour(true, av.getResidueShading(), null, seq, 5,
69                     null)); // G
70     assertEquals(Color.orange,
71             rcf.getResidueColour(true, av.getResidueShading(), null, seq,
72                     12,
73                     null)); // F
74
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
84   }
85
86   @Test(groups = { "Functional" })
87   public void testGetResidueColour_none()
88   {
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();
93
94     assertEquals(Color.white,
95             rcf.getResidueColour(true, av.getResidueShading(),
96             null, seq, 0, null));
97     assertEquals(Color.white,
98             rcf.getResidueColour(true, av.getResidueShading(),
99             null, seq, 2, null));
100
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));
106   }
107
108   @Test(groups = { "Functional" })
109   public void testGetResidueColour_userdef()
110   {
111     SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a
112                                                             // gap
113     AlignmentI al = new Alignment(new SequenceI[] { seq });
114     final AlignViewportI av = new AlignViewport(al);
115     ResidueColourFinder rcf = new ResidueColourFinder();
116
117     Color[] newColours = new Color[24];
118     for (int i = 0; i < 24; i++)
119     {
120       newColours[i] = null;
121     }
122
123     av.setGlobalColourScheme(new UserColourScheme(newColours));
124
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));
129
130     newColours[23] = Color.pink;
131     av.setGlobalColourScheme(new UserColourScheme(newColours));
132
133     // gap colour specified as pink
134     assertEquals(Color.pink, rcf.getResidueColour(true,
135             av.getResidueShading(),
136             null, seq, 3, null));
137
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));
143
144     newColours[23] = Color.pink;
145     av.setGlobalColourScheme(new UserColourScheme(newColours));
146
147     // gap colour specified as pink
148     assertEquals(Color.white, rcf.getResidueColour(false,
149             av.getResidueShading(), null, seq, 3, null));
150   }
151
152   // TODO more tests for getResidueColour covering groups, feature rendering...
153 }