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