1 package jalview.structure;
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;
9 import java.util.HashSet;
12 public class StructureSelectionManagerTest
14 private StructureSelectionManager ssm;
19 ssm = new StructureSelectionManager();
23 public void testAddMapping()
25 AlignedCodonFrame acf1 = new AlignedCodonFrame();
26 AlignedCodonFrame acf2 = new AlignedCodonFrame();
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());
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());
49 * A second reference to the first mapping.
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());
61 public void testAddMappings()
63 AlignedCodonFrame acf1 = new AlignedCodonFrame();
64 AlignedCodonFrame acf2 = new AlignedCodonFrame();
65 AlignedCodonFrame acf3 = new AlignedCodonFrame();
67 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
70 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
75 * Adding both sets adds acf2 twice and acf1 and acf3 once each.
77 ssm.addMappings(set1);
78 ssm.addMappings(set2);
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());
91 public void testRemoveMapping()
93 AlignedCodonFrame acf1 = new AlignedCodonFrame();
94 AlignedCodonFrame acf2 = new AlignedCodonFrame();
98 * Add one and remove it.
100 ssm.removeMapping(acf1);
101 ssm.removeMapping(acf2);
102 assertEquals(0, ssm.seqmappings.size());
103 assertEquals(0, ssm.seqMappingRefCounts.size());
106 * Add one twice and remove it once.
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());
120 * Remove both once more to clear the set.
122 ssm.removeMapping(acf1);
123 ssm.removeMapping(acf2);
124 assertEquals(0, ssm.seqmappings.size());
125 assertEquals(0, ssm.seqMappingRefCounts.size());
129 public void testRemoveMappings()
131 AlignedCodonFrame acf1 = new AlignedCodonFrame();
132 AlignedCodonFrame acf2 = new AlignedCodonFrame();
133 AlignedCodonFrame acf3 = new AlignedCodonFrame();
136 * Initial ref counts are 3/2/1:
138 ssm.addMapping(acf1);
139 ssm.addMapping(acf1);
140 ssm.addMapping(acf1);
141 ssm.addMapping(acf2);
142 ssm.addMapping(acf2);
143 ssm.addMapping(acf3);
145 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
148 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
153 * Remove one ref each to acf1, acf2, counts are now 2/1/1:
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());
166 * Remove one ref each to acf2, acf3 - they are removed
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());