Clover icon

Coverage Report

  1. Project Clover database Thu Aug 13 2020 12:04:21 BST
  2. Package jalview.schemes

File ColourSchemesTest.java

 

Code metrics

20
95
16
3
300
225
27
0.28
5.94
5.33
1.69

Classes

Class Line # Actions
ColourSchemesTest 29 64 8
1.0100%
ColourSchemesTest.Stripy 35 9 6
1.0100%
ColourSchemesTest.MyClustal 93 22 13
0.6046511560.5%
 

Contributing tests

This file is covered by 27 tests. .

Source view

1    package jalview.schemes;
2   
3    import static org.testng.Assert.assertEquals;
4    import static org.testng.Assert.assertFalse;
5    import static org.testng.Assert.assertSame;
6    import static org.testng.Assert.assertTrue;
7   
8    import jalview.api.AlignViewportI;
9    import jalview.bin.Cache;
10    import jalview.bin.Jalview;
11    import jalview.datamodel.AnnotatedCollectionI;
12    import jalview.datamodel.SequenceCollectionI;
13    import jalview.datamodel.SequenceI;
14    import jalview.gui.AlignFrame;
15    import jalview.gui.Desktop;
16    import jalview.gui.SequenceRenderer;
17    import jalview.io.DataSourceType;
18    import jalview.io.FileLoader;
19    import jalview.schemes.ClustalxColourScheme.ClustalColour;
20   
21    import java.awt.Color;
22    import java.util.Iterator;
23    import java.util.Map;
24   
25    import org.testng.annotations.AfterClass;
26    import org.testng.annotations.BeforeClass;
27    import org.testng.annotations.Test;
28   
 
29    public class ColourSchemesTest
30    {
31    /*
32    * a colour scheme that alternates Taylor and Zappo
33    * colouring by column
34    */
 
35    class Stripy extends ResidueColourScheme
36    {
37    private ResidueColourScheme odd;
38   
39    private ResidueColourScheme even;
40   
 
41  1 toggle private Stripy()
42    {
43    }
44   
45    /**
46    * constructor given colours for odd and even columns
47    *
48    * @param odd
49    * @param even
50    */
 
51  1 toggle private Stripy(ColourSchemeI cs1, ColourSchemeI cs2)
52    {
53  1 odd = (ResidueColourScheme) cs1;
54  1 even = (ResidueColourScheme) cs2;
55    }
56   
 
57  1 toggle @Override
58    public ColourSchemeI getInstance(AlignViewportI view,
59    AnnotatedCollectionI sg)
60    {
61  1 final ColourSchemeI cs1 = ColourSchemes.getInstance()
62    .getColourScheme(JalviewColourScheme.Taylor.toString(),
63    (AnnotatedCollectionI) null);
64  1 final ColourSchemeI cs2 = ColourSchemes.getInstance()
65    .getColourScheme(JalviewColourScheme.Zappo.toString(),
66    (AnnotatedCollectionI) null);
67  1 return new Stripy(cs1, cs2);
68    }
69   
 
70  3 toggle @Override
71    public Color findColour(char c, int j, SequenceI seq)
72    {
73  3 if (j % 2 == 1)
74    {
75  1 return odd.findColour(c, j, seq);
76    }
77    else
78    {
79  2 return even.findColour(c, j, seq);
80    }
81    }
82   
 
83  37 toggle @Override
84    public String getSchemeName()
85    {
86  37 return "stripy";
87    }
88    };
89   
90    /*
91    * a colour scheme that is Clustal but using AWT colour equivalents
92    */
 
93    class MyClustal extends ResidueColourScheme
94    {
95    ClustalxColourScheme delegate;
96   
 
97  1 toggle private MyClustal()
98    {
99    }
100   
 
101  1 toggle private MyClustal(AnnotatedCollectionI sg,
102    Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
103    {
104  1 delegate = new ClustalxColourScheme(sg, hiddenRepSequences);
105    }
106   
 
107  3 toggle @Override
108    public Color findColour(char c, int j, SequenceI seq)
109    {
110  3 Color col = delegate.findColour(c, j, seq);
111  3 Color result = col;
112  3 if (col.equals(ClustalColour.BLUE.colour))
113    {
114  1 result = Color.blue;
115    }
116  2 else if (col.equals(ClustalColour.CYAN.colour))
117    {
118  0 result = Color.cyan;
119    }
120  2 else if (col.equals(ClustalColour.GREEN.colour))
121    {
122  0 result = Color.green;
123    }
124  2 else if (col.equals(ClustalColour.MAGENTA.colour))
125    {
126  1 result = Color.magenta;
127    }
128  1 else if (col.equals(ClustalColour.ORANGE.colour))
129    {
130  1 result = Color.orange;
131    }
132  0 else if (col.equals(ClustalColour.PINK.colour))
133    {
134  0 result = Color.pink;
135    }
136  0 else if (col.equals(ClustalColour.RED.colour))
137    {
138  0 result = Color.red;
139    }
140  0 else if (col.equals(ClustalColour.YELLOW.colour))
141    {
142  0 result = Color.yellow;
143    }
144  3 return result;
145    }
146   
 
147  1 toggle @Override
148    public ColourSchemeI getInstance(AlignViewportI view,
149    AnnotatedCollectionI sg)
150    {
151  1 return new MyClustal(sg, view.getHiddenRepSequences());
152    }
153   
 
154  37 toggle @Override
155    public String getSchemeName()
156    {
157  37 return "MyClustal";
158    }
159   
160    }
161   
 
162  1 toggle @BeforeClass(alwaysRun = true)
163    public static void setUpBeforeClass() throws Exception
164    {
165    /*
166    * use read-only test properties file
167    */
168  1 Cache.loadProperties("test/jalview/io/testProps.jvprops");
169  1 Jalview.main(new String[] { "-nonews" });
170    }
171   
 
172  1 toggle @AfterClass(alwaysRun = true)
173    public static void tearDownAfterClass() throws Exception
174    {
175  1 Desktop.instance.closeAll_actionPerformed(null);
176    }
177   
 
178  1 toggle @Test(groups = "Functional")
179    public void testGetColourSchemes()
180    {
181    /*
182    * this just verifies that built-in colour schemes are loaded into ColourSchemes
183    * in the order in which they are declared in the JalviewColourScheme enum
184    * (this also determines their order in Colour menus)
185    */
186  1 Iterator<ColourSchemeI> schemes = ColourSchemes.getInstance().getColourSchemes().iterator();
187  1 JalviewColourScheme[] jalviewSchemes = JalviewColourScheme.values();
188  1 int i = 0;
189  16 while (schemes.hasNext() && i < jalviewSchemes.length)
190    {
191  15 assertTrue(schemes.next().getSchemeName()
192    .equals(jalviewSchemes[i].toString()));
193  15 i++;
194    }
195    }
196   
 
197  1 toggle @Test(groups = "Functional")
198    public void testGetColourScheme()
199    {
200  1 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
201    ">seq1\nAGLRTWQU", DataSourceType.PASTE);
202  1 ColourSchemes schemes = ColourSchemes.getInstance();
203   
204  1 AnnotatedCollectionI al = af.getViewport().getAlignment();
205   
206  1 for (JalviewColourScheme cs : JalviewColourScheme.values())
207    {
208  15 ColourSchemeI registered = schemes.getColourScheme(cs.toString(), al);
209  15 assertSame(registered.getClass(), cs.getSchemeClass());
210    }
211  1 af.closeMenuItem_actionPerformed(true);
212    }
213   
 
214  1 toggle @Test(groups = "Functional")
215    public void testRegisterColourScheme()
216    {
217  1 ColourSchemes.getInstance().registerColourScheme(new Stripy());
218  1 ColourSchemes.getInstance().registerColourScheme(new MyClustal());
219  1 AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
220    "examples/uniref50.fa", DataSourceType.FILE);
221    /*
222    * set a breakpoint here to see and play with the newly registered
223    * colour schemes in the AlignFrame colour menu
224    */
225  1 SequenceRenderer sr = new SequenceRenderer(af.getViewport());
226  1 SequenceI seq = af.getViewport().getAlignment().findName("FER_CAPAA");
227   
228    /*
229    * set and check Taylor colours
230    */
231  1 af.changeColour_actionPerformed(JalviewColourScheme.Taylor.toString());
232  1 Color taylor1 = sr.getResidueColour(seq, 88, null); // E 255,0,102
233  1 Color taylor2 = sr.getResidueColour(seq, 89, null); // A 204,255,0
234  1 Color taylor3 = sr.getResidueColour(seq, 90, null); // G 255,153,0
235  1 assertEquals(taylor1, new Color(255, 0, 102));
236  1 assertEquals(taylor2, new Color(204, 255, 0));
237  1 assertEquals(taylor3, new Color(255, 153, 0));
238   
239    /*
240    * set and check Zappo colours
241    */
242  1 af.changeColour_actionPerformed(JalviewColourScheme.Zappo.toString());
243  1 Color zappo1 = sr.getResidueColour(seq, 88, null); // E red
244  1 Color zappo2 = sr.getResidueColour(seq, 89, null); // A pink
245  1 Color zappo3 = sr.getResidueColour(seq, 90, null); // G magenta
246  1 assertEquals(zappo1, Color.red);
247  1 assertEquals(zappo2, Color.pink);
248  1 assertEquals(zappo3, Color.magenta);
249   
250    /*
251    * set 'stripy' colours - odd columns are Taylor and even are Zappo
252    */
253  1 af.changeColour_actionPerformed("stripy");
254  1 Color stripy1 = sr.getResidueColour(seq, 88, null);
255  1 Color stripy2 = sr.getResidueColour(seq, 89, null);
256  1 Color stripy3 = sr.getResidueColour(seq, 90, null);
257  1 assertEquals(stripy1, zappo1);
258  1 assertEquals(stripy2, taylor2);
259  1 assertEquals(stripy3, zappo3);
260   
261    /*
262    * set and check Clustal colours
263    */
264  1 af.changeColour_actionPerformed(JalviewColourScheme.Clustal.toString());
265  1 Color clustal1 = sr.getResidueColour(seq, 88, null);
266  1 Color clustal2 = sr.getResidueColour(seq, 89, null);
267  1 Color clustal3 = sr.getResidueColour(seq, 90, null);
268  1 assertEquals(clustal1, ClustalColour.MAGENTA.colour);
269  1 assertEquals(clustal2, ClustalColour.BLUE.colour);
270  1 assertEquals(clustal3, ClustalColour.ORANGE.colour);
271   
272    /*
273    * set 'MyClustal' colours - uses AWT colour equivalents
274    */
275  1 af.changeColour_actionPerformed("MyClustal");
276  1 Color myclustal1 = sr.getResidueColour(seq, 88, null);
277  1 Color myclustal2 = sr.getResidueColour(seq, 89, null);
278  1 Color myclustal3 = sr.getResidueColour(seq, 90, null);
279  1 assertEquals(myclustal1, Color.MAGENTA);
280  1 assertEquals(myclustal2, Color.BLUE);
281  1 assertEquals(myclustal3, Color.ORANGE);
282    }
283   
284    /**
285    * Tests for check if scheme name exists. Built-in scheme names are the
286    * toString() values of enum JalviewColourScheme.
287    */
 
288  1 toggle @Test(groups = "Functional")
289    public void testNameExists()
290    {
291  1 ColourSchemes cs = ColourSchemes.getInstance();
292  1 assertFalse(cs.nameExists(null));
293  1 assertFalse(cs.nameExists(""));
294  1 assertTrue(cs.nameExists("Clustal"));
295  1 assertTrue(cs.nameExists("CLUSTAL"));
296  1 assertFalse(cs.nameExists("CLUSTAL "));
297  1 assertTrue(cs.nameExists("% Identity"));
298  1 assertFalse(cs.nameExists("PID"));
299    }
300    }