JAL-1805 modified test setup's so the are ran for groups which requires them
[jalview.git] / test / jalview / structure / StructureSelectionManagerTest.java
1 package jalview.structure;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertTrue;
5
6 import jalview.datamodel.AlignedCodonFrame;
7
8 import java.util.HashSet;
9 import java.util.Set;
10
11 import org.testng.annotations.BeforeMethod;
12 import org.testng.annotations.Test;
13
14 public class StructureSelectionManagerTest
15 {
16   private StructureSelectionManager ssm;
17
18  @BeforeMethod(alwaysRun = true)
19   public void setUp()
20   {
21     ssm = new StructureSelectionManager();
22   }
23
24   @Test(groups ={ "Functional" })
25   public void testAddMapping()
26   {
27     AlignedCodonFrame acf1 = new AlignedCodonFrame();
28     AlignedCodonFrame acf2 = new AlignedCodonFrame();
29
30     /*
31      * One mapping only.
32      */
33     ssm.addMapping(acf1);
34     assertEquals(1, ssm.seqmappings.size());
35     assertTrue(ssm.seqmappings.contains(acf1));
36     assertEquals(1, ssm.seqMappingRefCounts.size());
37     assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
38
39     /*
40      * A second mapping.
41      */
42     ssm.addMapping(acf2);
43     assertEquals(2, ssm.seqmappings.size());
44     assertTrue(ssm.seqmappings.contains(acf1));
45     assertTrue(ssm.seqmappings.contains(acf2));
46     assertEquals(2, ssm.seqMappingRefCounts.size());
47     assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
48     assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
49
50     /*
51      * A second reference to the first mapping.
52      */
53     ssm.addMapping(acf1);
54     assertEquals(2, ssm.seqmappings.size());
55     assertTrue(ssm.seqmappings.contains(acf1));
56     assertTrue(ssm.seqmappings.contains(acf2));
57     assertEquals(2, ssm.seqMappingRefCounts.size());
58     assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());
59     assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
60   }
61
62   @Test(groups ={ "Functional" })
63   public void testAddMappings()
64   {
65     AlignedCodonFrame acf1 = new AlignedCodonFrame();
66     AlignedCodonFrame acf2 = new AlignedCodonFrame();
67     AlignedCodonFrame acf3 = new AlignedCodonFrame();
68
69     Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
70     set1.add(acf1);
71     set1.add(acf2);
72     Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
73     set2.add(acf2);
74     set2.add(acf3);
75
76     /*
77      * Adding both sets adds acf2 twice and acf1 and acf3 once each.
78      */
79     ssm.addMappings(set1);
80     ssm.addMappings(set2);
81
82     assertEquals(3, ssm.seqmappings.size());
83     assertTrue(ssm.seqmappings.contains(acf1));
84     assertTrue(ssm.seqmappings.contains(acf2));
85     assertTrue(ssm.seqmappings.contains(acf3));
86     assertEquals(3, ssm.seqMappingRefCounts.size());
87     assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
88     assertEquals(2, ssm.seqMappingRefCounts.get(acf2).intValue());
89     assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue());
90   }
91
92   @Test(groups ={ "Functional" })
93   public void testRemoveMapping()
94   {
95     AlignedCodonFrame acf1 = new AlignedCodonFrame();
96     AlignedCodonFrame acf2 = new AlignedCodonFrame();
97     ssm.addMapping(acf1);
98
99     /*
100      * Add one and remove it.
101      */
102     ssm.removeMapping(acf1);
103     ssm.removeMapping(acf2);
104     assertEquals(0, ssm.seqmappings.size());
105     assertEquals(0, ssm.seqMappingRefCounts.size());
106
107     /*
108      * Add one twice and remove it once.
109      */
110     ssm.addMapping(acf1);
111     ssm.addMapping(acf2);
112     ssm.addMapping(acf1);
113     ssm.removeMapping(acf1);
114     assertEquals(2, ssm.seqmappings.size());
115     assertTrue(ssm.seqmappings.contains(acf1));
116     assertTrue(ssm.seqmappings.contains(acf2));
117     assertEquals(2, ssm.seqMappingRefCounts.size());
118     assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
119     assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
120
121     /*
122      * Remove both once more to clear the set.
123      */
124     ssm.removeMapping(acf1);
125     ssm.removeMapping(acf2);
126     assertEquals(0, ssm.seqmappings.size());
127     assertEquals(0, ssm.seqMappingRefCounts.size());
128   }
129
130   @Test(groups ={ "Functional" })
131   public void testRemoveMappings()
132   {
133     AlignedCodonFrame acf1 = new AlignedCodonFrame();
134     AlignedCodonFrame acf2 = new AlignedCodonFrame();
135     AlignedCodonFrame acf3 = new AlignedCodonFrame();
136
137     /*
138      * Initial ref counts are 3/2/1:
139      */
140     ssm.addMapping(acf1);
141     ssm.addMapping(acf1);
142     ssm.addMapping(acf1);
143     ssm.addMapping(acf2);
144     ssm.addMapping(acf2);
145     ssm.addMapping(acf3);
146
147     Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
148     set1.add(acf1);
149     set1.add(acf2);
150     Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
151     set2.add(acf2);
152     set2.add(acf3);
153
154     /*
155      * Remove one ref each to acf1, acf2, counts are now 2/1/1:
156      */
157     ssm.removeMappings(set1);
158     assertEquals(3, ssm.seqmappings.size());
159     assertTrue(ssm.seqmappings.contains(acf1));
160     assertTrue(ssm.seqmappings.contains(acf2));
161     assertTrue(ssm.seqmappings.contains(acf3));
162     assertEquals(3, ssm.seqMappingRefCounts.size());
163     assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());
164     assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
165     assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue());
166
167     /*
168      * Remove one ref each to acf2, acf3 - they are removed
169      */
170     ssm.removeMappings(set2);
171     assertEquals(1, ssm.seqmappings.size());
172     assertTrue(ssm.seqmappings.contains(acf1));
173     assertEquals(1, ssm.seqMappingRefCounts.size());
174     assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());
175   }
176 }