Clover icon

Coverage Report

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

File SequenceGroupTest.java

 

Code metrics

0
180
7
1
338
246
10
0.06
25.71
7
1.43

Classes

Class Line # Actions
SequenceGroupTest 25 180 10
0.9839572398.4%
 

Contributing tests

This file is covered by 7 tests. .

Source view

1    package jalview.datamodel;
2   
3    import static org.testng.Assert.assertEquals;
4    import static org.testng.Assert.assertFalse;
5    import static org.testng.Assert.assertNotNull;
6    import static org.testng.Assert.assertNotSame;
7    import static org.testng.Assert.assertNull;
8    import static org.testng.Assert.assertSame;
9    import static org.testng.Assert.assertTrue;
10    import static org.testng.Assert.fail;
11   
12    import jalview.analysis.Conservation;
13    import jalview.schemes.NucleotideColourScheme;
14    import jalview.schemes.PIDColourScheme;
15   
16    import java.awt.Color;
17    import java.util.ArrayList;
18    import java.util.Collections;
19    import java.util.List;
20   
21    import org.testng.annotations.Test;
22   
23    import junit.extensions.PA;
24   
 
25    public class SequenceGroupTest
26    {
 
27  1 toggle @Test(groups={"Functional"})
28    public void testAddSequence()
29    {
30  1 SequenceGroup sg = new SequenceGroup();
31  1 assertTrue(sg.getSequences().isEmpty());
32   
33  1 SequenceI seq1 = new Sequence("seq1", "abc");
34  1 SequenceI seq2 = new Sequence("seq2", "abc");
35  1 SequenceI seq3 = new Sequence(seq1);
36   
37  1 sg.addSequence(null, false);
38  1 assertTrue(sg.getSequences().isEmpty());
39  1 sg.addSequence(seq1, false);
40  1 assertEquals(sg.getSequences().size(), 1);
41  1 assertTrue(sg.getSequences().contains(seq1));
42    // adding the same sequence again does nothing
43  1 sg.addSequence(seq1, false);
44  1 assertEquals(sg.getSequences().size(), 1);
45  1 assertTrue(sg.getSequences().contains(seq1));
46  1 sg.addSequence(seq2, false);
47  1 sg.addSequence(seq2, false);
48  1 sg.addSequence(seq3, false);
49  1 assertEquals(sg.getSequences().size(), 3);
50  1 assertTrue(sg.getSequences().contains(seq1));
51  1 assertTrue(sg.getSequences().contains(seq2));
52  1 assertTrue(sg.getSequences().contains(seq3));
53    }
54   
 
55  1 toggle @Test(groups={"Functional"})
56    public void testAddOrRemove()
57    {
58  1 SequenceGroup sg = new SequenceGroup();
59  1 assertTrue(sg.getSequences().isEmpty());
60   
61  1 SequenceI seq1 = new Sequence("seq1", "abc");
62  1 SequenceI seq2 = new Sequence("seq2", "abc");
63  1 SequenceI seq3 = new Sequence(seq1);
64   
65  1 sg.addOrRemove(seq1, false);
66  1 assertEquals(sg.getSequences().size(), 1);
67  1 sg.addOrRemove(seq2, false);
68  1 assertEquals(sg.getSequences().size(), 2);
69  1 sg.addOrRemove(seq3, false);
70  1 assertEquals(sg.getSequences().size(), 3);
71  1 assertTrue(sg.getSequences().contains(seq1));
72  1 assertTrue(sg.getSequences().contains(seq2));
73  1 assertTrue(sg.getSequences().contains(seq3));
74  1 sg.addOrRemove(seq1, false);
75  1 assertEquals(sg.getSequences().size(), 2);
76  1 assertFalse(sg.getSequences().contains(seq1));
77    }
78   
 
79  1 toggle @Test(groups={"Functional"})
80    public void testGetColourScheme()
81    {
82  1 SequenceGroup sg = new SequenceGroup();
83  1 assertNotNull(sg.getGroupColourScheme());
84  1 assertNull(sg.getColourScheme());
85   
86  1 sg.setGroupColourScheme(null);
87  1 assertNull(sg.getColourScheme());
88   
89  1 NucleotideColourScheme scheme = new NucleotideColourScheme();
90  1 sg.setColourScheme(scheme);
91  1 assertSame(scheme, sg.getColourScheme());
92    }
93   
 
94  1 toggle @Test(groups={"Functional"})
95    public void testSetContext()
96    {
97  1 SequenceGroup sg1 = new SequenceGroup();
98  1 SequenceGroup sg2 = new SequenceGroup();
99  1 SequenceGroup sg3 = new SequenceGroup();
100  1 assertNull(sg1.getContext());
101  1 sg1.setContext(null);
102  1 assertNull(sg1.getContext());
103  1 try
104    {
105  1 sg1.setContext(sg1); // self-reference :-O
106  0 fail("Expected exception");
107    } catch (IllegalArgumentException e)
108    {
109    // expected
110  1 assertNull(sg1.getContext());
111    }
112  1 sg1.setContext(sg2);
113  1 assertSame(sg2, sg1.getContext());
114  1 sg2.setContext(sg3);
115  1 try
116    {
117  1 sg3.setContext(sg1); // circular reference :-O
118  0 fail("Expected exception");
119    } catch (IllegalArgumentException e)
120    {
121    // expected
122  1 assertNull(sg3.getContext());
123    }
124   
125    /*
126    * use PrivilegedAccessor to 'force' a SequenceGroup with
127    * a circular context reference
128    */
129  1 PA.setValue(sg2, "context", sg2);
130  1 try
131    {
132  1 sg3.setContext(sg2, false); // circular reference in sg2
133  0 fail("Expected exception");
134    } catch (IllegalArgumentException e)
135    {
136    // expected
137  1 assertNull(sg3.getContext());
138    }
139   
140    // test isDefined setting behaviour
141  1 sg2 = new SequenceGroup();
142  1 sg1.setContext(null, false);
143  1 assertFalse(sg1.isDefined());
144   
145  1 sg1.setContext(sg2, false);
146  1 assertFalse(sg1.isDefined());
147   
148  1 sg1.setContext(sg2, true);
149  1 assertTrue(sg1.isDefined());
150   
151    // setContext without defined parameter does not change isDefined
152  1 sg1.setContext(null);
153  1 assertTrue(sg1.isDefined());
154   
155  1 sg1.setContext(null, false);
156  1 sg1.setContext(sg2);
157  1 assertFalse(sg1.isDefined());
158    }
159   
 
160  1 toggle @Test(groups = { "Functional" })
161    public void testContains()
162    {
163    /*
164    * essentially the same tests as AlignmentI.findGroup
165    * but from a particular group's perspective
166    */
167   
168  1 SequenceI seq1 = new Sequence("seq1", "ABCDEF---GHI");
169  1 SequenceI seq2 = new Sequence("seq2", "---JKLMNO---");
170  1 AlignmentI a = new Alignment(new SequenceI[] { seq1, seq2 });
171    /*
172    * add a group consisting of just "DEF"
173    */
174  1 SequenceGroup sg1 = new SequenceGroup();
175  1 sg1.addSequence(seq1, false);
176  1 sg1.setStartRes(3);
177  1 sg1.setEndRes(5);
178   
179    /*
180    * test sequence membership
181    */
182  1 assertTrue(sg1.contains(seq1));
183  1 assertFalse(sg1.contains(seq2));
184   
185    /*
186    * test sequence+position
187    */
188   
189  1 assertFalse(sg1.contains(seq1, 2)); // position not in group
190  1 assertFalse(sg1.contains(seq1, 6)); // position not in group
191  1 assertFalse(sg1.contains(seq2, 5)); // sequence not in group
192  1 assertTrue(sg1.contains(seq1, 3)); // yes
193  1 assertTrue(sg1.contains(seq1, 4));
194  1 assertTrue(sg1.contains(seq1, 5));
195   
196    /*
197    * add a group consisting of
198    * EF--
199    * KLMN
200    */
201  1 SequenceGroup sg2 = new SequenceGroup();
202  1 sg2.addSequence(seq1, false);
203  1 sg2.addSequence(seq2, false);
204  1 sg2.setStartRes(4);
205  1 sg2.setEndRes(7);
206  1 a.addGroup(sg2);
207   
208    /*
209    * if a residue is in more than one group, method returns
210    * the first found (in order groups were added)
211    */
212  1 assertTrue(sg2.contains(seq1, 4));
213  1 assertTrue(sg2.contains(seq1, 5));
214   
215    /*
216    * seq2 only belongs to the second group
217    */
218  1 assertTrue(sg2.contains(seq2, 4));
219  1 assertTrue(sg2.contains(seq2, 5));
220  1 assertTrue(sg2.contains(seq2, 6));
221  1 assertTrue(sg2.contains(seq2, 7));
222  1 assertFalse(sg2.contains(seq2, 3));
223  1 assertFalse(sg2.contains(seq2, 8));
224  1 sg2.setEndRes(8);
225  1 assertTrue(sg2.contains(seq2, 8));
226  1 sg2.deleteSequence(seq2, false);
227  1 assertFalse(sg2.contains(seq2));
228    }
229   
 
230  1 toggle @Test(groups = { "Functional" })
231    public void testCopyConstructor()
232    {
233  1 SequenceI seq = new Sequence("seq", "ABC");
234  1 SequenceGroup sg = new SequenceGroup();
235  1 sg.addSequence(seq, false);
236  1 sg.setName("g1");
237  1 sg.setDescription("desc");
238  1 sg.setColourScheme(new PIDColourScheme());
239  1 Conservation cons = new Conservation("Cons", 2,
240    Collections.<SequenceI> emptyList(), 3, 12);
241  1 PA.setValue(cons, "consSequence", new Sequence("s", "abc"));
242  1 sg.getGroupColourScheme().setConservation(cons);
243  1 sg.getGroupColourScheme().setConsensus(new Profiles(null));
244  1 sg.setDisplayBoxes(false);
245  1 sg.setDisplayText(false);
246  1 sg.setColourText(true);
247  1 sg.isDefined = true;
248  1 sg.setShowNonconserved(true);
249  1 sg.setOutlineColour(Color.red);
250  1 sg.setIdColour(Color.blue);
251  1 sg.thresholdTextColour = 1;
252  1 sg.textColour = Color.orange;
253  1 sg.textColour2 = Color.yellow;
254  1 sg.setIgnoreGapsConsensus(false);
255  1 sg.setshowSequenceLogo(true);
256  1 sg.setNormaliseSequenceLogo(true);
257  1 sg.setHidereps(true);
258  1 sg.setHideCols(true);
259  1 sg.setShowConsensusHistogram(true);
260  1 sg.setContext(new SequenceGroup());
261   
262  1 SequenceGroup sg2 = new SequenceGroup(sg);
263  1 assertEquals(sg2.getName(), sg.getName());
264  1 assertEquals(sg2.getDescription(), sg.getDescription());
265  1 assertNotSame(sg2.getGroupColourScheme(), sg.getGroupColourScheme());
266  1 assertSame(sg2.getColourScheme(), sg.getColourScheme());
267  1 assertSame(PA.getValue(sg2.getGroupColourScheme(), "consensus"),
268    PA.getValue(sg.getGroupColourScheme(), "consensus"));
269  1 assertSame(PA.getValue(sg2.getGroupColourScheme(), "conservation"),
270    PA.getValue(sg.getGroupColourScheme(), "conservation"));
271  1 assertEquals(sg2.getDisplayBoxes(), sg.getDisplayBoxes());
272  1 assertEquals(sg2.getDisplayText(), sg.getDisplayText());
273  1 assertEquals(sg2.getColourText(), sg.getColourText());
274  1 assertEquals(sg2.getShowNonconserved(), sg.getShowNonconserved());
275  1 assertEquals(sg2.getOutlineColour(), sg.getOutlineColour());
276  1 assertEquals(sg2.getIdColour(), sg.getIdColour());
277  1 assertEquals(sg2.thresholdTextColour, sg.thresholdTextColour);
278  1 assertEquals(sg2.textColour, sg.textColour);
279  1 assertEquals(sg2.textColour2, sg.textColour2);
280  1 assertEquals(sg2.getIgnoreGapsConsensus(), sg.getIgnoreGapsConsensus());
281  1 assertEquals(sg2.isShowSequenceLogo(), sg.isShowSequenceLogo());
282  1 assertEquals(sg2.isNormaliseSequenceLogo(),
283    sg.isNormaliseSequenceLogo());
284  1 assertEquals(sg2.isHidereps(), sg.isHidereps());
285  1 assertEquals(sg2.isHideCols(), sg.isHideCols());
286  1 assertEquals(sg2.isShowConsensusHistogram(),
287    sg.isShowConsensusHistogram());
288   
289    /*
290    * copy of sequences
291    */
292  1 assertNotSame(sg2.getSequences(), sg.getSequences());
293  1 assertEquals(sg2.getSequences(), sg.getSequences());
294   
295    /*
296    * isDefined should only be set true when a new group is added to
297    * an alignment, not in the copy constructor
298    */
299  1 assertFalse(sg2.isDefined());
300   
301    /*
302    * context should be set explicitly, not by copy
303    */
304  1 assertNull(sg2.getContext());
305    }
306   
 
307  1 toggle @Test(groups = { "Functional" })
308    public void testConstructor_list()
309    {
310  1 SequenceI s1 = new Sequence("abcde", "fg");
311  1 SequenceI s2 = new Sequence("foo", "bar");
312  1 List<SequenceI> seqs = new ArrayList<SequenceI>();
313  1 seqs.add(s1);
314  1 seqs.add(s2);
315  1 SequenceGroup sg = new SequenceGroup(seqs);
316   
317    /*
318    * verify sg has a copy of the original list
319    */
320  1 List<SequenceI> sgList = sg.getSequences();
321  1 assertNotSame(sgList, seqs);
322  1 assertEquals(sgList, seqs);
323   
324    /*
325    * add to sgList, original is unchanged
326    */
327  1 sg.addSequence(new Sequence("bar", "foo"), false);
328  1 assertEquals(sgList.size(), 3);
329  1 assertEquals(seqs.size(), 2);
330   
331    /*
332    * delete from original, sgList is unchanged
333    */
334  1 seqs.remove(s1);
335  1 assertEquals(sgList.size(), 3);
336  1 assertEquals(seqs.size(), 1);
337    }
338    }