Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.schemes

File ColourSchemesTest.java

 

Code metrics

20
95
16
3
299
224
27
0.28
5.94
5.33
1.69

Classes

Class Line # Actions
ColourSchemesTest 28 64 8 0
1.0100%
ColourSchemesTest.Stripy 34 9 6 0
1.0100%
ColourSchemesTest.MyClustal 92 22 13 17
0.6046511560.5%
 

Contributing tests

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