Clover icon

jalviewX

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

File SequenceGroupTest.java

 

Code metrics

0
165
6
1
304
225
9
0.05
27.5
6
1.5

Classes

Class Line # Actions
SequenceGroupTest 23 165 9 3
0.9824561598.2%
 

Contributing tests

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