1 package jalview.structure;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertTrue;
6 import jalview.datamodel.AlignedCodonFrame;
8 import java.util.HashSet;
11 import org.testng.annotations.BeforeMethod;
12 import org.testng.annotations.Test;
14 public class StructureSelectionManagerTest
16 private StructureSelectionManager ssm;
21 ssm = new StructureSelectionManager();
25 public void testAddMapping()
27 AlignedCodonFrame acf1 = new AlignedCodonFrame();
28 AlignedCodonFrame acf2 = new AlignedCodonFrame();
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());
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());
51 * A second reference to the first mapping.
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());
63 public void testAddMappings()
65 AlignedCodonFrame acf1 = new AlignedCodonFrame();
66 AlignedCodonFrame acf2 = new AlignedCodonFrame();
67 AlignedCodonFrame acf3 = new AlignedCodonFrame();
69 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
72 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
77 * Adding both sets adds acf2 twice and acf1 and acf3 once each.
79 ssm.addMappings(set1);
80 ssm.addMappings(set2);
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());
93 public void testRemoveMapping()
95 AlignedCodonFrame acf1 = new AlignedCodonFrame();
96 AlignedCodonFrame acf2 = new AlignedCodonFrame();
100 * Add one and remove it.
102 ssm.removeMapping(acf1);
103 ssm.removeMapping(acf2);
104 assertEquals(0, ssm.seqmappings.size());
105 assertEquals(0, ssm.seqMappingRefCounts.size());
108 * Add one twice and remove it once.
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());
122 * Remove both once more to clear the set.
124 ssm.removeMapping(acf1);
125 ssm.removeMapping(acf2);
126 assertEquals(0, ssm.seqmappings.size());
127 assertEquals(0, ssm.seqMappingRefCounts.size());
131 public void testRemoveMappings()
133 AlignedCodonFrame acf1 = new AlignedCodonFrame();
134 AlignedCodonFrame acf2 = new AlignedCodonFrame();
135 AlignedCodonFrame acf3 = new AlignedCodonFrame();
138 * Initial ref counts are 3/2/1:
140 ssm.addMapping(acf1);
141 ssm.addMapping(acf1);
142 ssm.addMapping(acf1);
143 ssm.addMapping(acf2);
144 ssm.addMapping(acf2);
145 ssm.addMapping(acf3);
147 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
150 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
155 * Remove one ref each to acf1, acf2, counts are now 2/1/1:
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());
168 * Remove one ref each to acf2, acf3 - they are removed
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());