1 package jalview.structure;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import jalview.datamodel.AlignedCodonFrame;
7 import java.util.HashSet;
10 import org.junit.Before;
11 import org.junit.Test;
13 public class StructureSelectionManagerTest
15 private StructureSelectionManager ssm;
20 ssm = new StructureSelectionManager();
24 public void testAddMapping()
26 AlignedCodonFrame acf1 = new AlignedCodonFrame();
27 AlignedCodonFrame acf2 = new AlignedCodonFrame();
33 assertEquals(1, ssm.seqmappings.size());
34 assertTrue(ssm.seqmappings.contains(acf1));
35 assertEquals(1, ssm.seqMappingRefCounts.size());
36 assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
42 assertEquals(2, ssm.seqmappings.size());
43 assertTrue(ssm.seqmappings.contains(acf1));
44 assertTrue(ssm.seqmappings.contains(acf2));
45 assertEquals(2, ssm.seqMappingRefCounts.size());
46 assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
47 assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
50 * A second reference to the first mapping.
53 assertEquals(2, ssm.seqmappings.size());
54 assertTrue(ssm.seqmappings.contains(acf1));
55 assertTrue(ssm.seqmappings.contains(acf2));
56 assertEquals(2, ssm.seqMappingRefCounts.size());
57 assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());
58 assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
62 public void testAddMappings()
64 AlignedCodonFrame acf1 = new AlignedCodonFrame();
65 AlignedCodonFrame acf2 = new AlignedCodonFrame();
66 AlignedCodonFrame acf3 = new AlignedCodonFrame();
68 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
71 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
76 * Adding both sets adds acf2 twice and acf1 and acf3 once each.
78 ssm.addMappings(set1);
79 ssm.addMappings(set2);
81 assertEquals(3, ssm.seqmappings.size());
82 assertTrue(ssm.seqmappings.contains(acf1));
83 assertTrue(ssm.seqmappings.contains(acf2));
84 assertTrue(ssm.seqmappings.contains(acf3));
85 assertEquals(3, ssm.seqMappingRefCounts.size());
86 assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
87 assertEquals(2, ssm.seqMappingRefCounts.get(acf2).intValue());
88 assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue());
92 public void testRemoveMapping()
94 AlignedCodonFrame acf1 = new AlignedCodonFrame();
95 AlignedCodonFrame acf2 = new AlignedCodonFrame();
99 * Add one and remove it.
101 ssm.removeMapping(acf1);
102 ssm.removeMapping(acf2);
103 assertEquals(0, ssm.seqmappings.size());
104 assertEquals(0, ssm.seqMappingRefCounts.size());
107 * Add one twice and remove it once.
109 ssm.addMapping(acf1);
110 ssm.addMapping(acf2);
111 ssm.addMapping(acf1);
112 ssm.removeMapping(acf1);
113 assertEquals(2, ssm.seqmappings.size());
114 assertTrue(ssm.seqmappings.contains(acf1));
115 assertTrue(ssm.seqmappings.contains(acf2));
116 assertEquals(2, ssm.seqMappingRefCounts.size());
117 assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue());
118 assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
121 * Remove both once more to clear the set.
123 ssm.removeMapping(acf1);
124 ssm.removeMapping(acf2);
125 assertEquals(0, ssm.seqmappings.size());
126 assertEquals(0, ssm.seqMappingRefCounts.size());
130 public void testRemoveMappings()
132 AlignedCodonFrame acf1 = new AlignedCodonFrame();
133 AlignedCodonFrame acf2 = new AlignedCodonFrame();
134 AlignedCodonFrame acf3 = new AlignedCodonFrame();
137 * Initial ref counts are 3/2/1:
139 ssm.addMapping(acf1);
140 ssm.addMapping(acf1);
141 ssm.addMapping(acf1);
142 ssm.addMapping(acf2);
143 ssm.addMapping(acf2);
144 ssm.addMapping(acf3);
146 Set<AlignedCodonFrame> set1 = new HashSet<AlignedCodonFrame>();
149 Set<AlignedCodonFrame> set2 = new HashSet<AlignedCodonFrame>();
154 * Remove one ref each to acf1, acf2, counts are now 2/1/1:
156 ssm.removeMappings(set1);
157 assertEquals(3, ssm.seqmappings.size());
158 assertTrue(ssm.seqmappings.contains(acf1));
159 assertTrue(ssm.seqmappings.contains(acf2));
160 assertTrue(ssm.seqmappings.contains(acf3));
161 assertEquals(3, ssm.seqMappingRefCounts.size());
162 assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());
163 assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue());
164 assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue());
167 * Remove one ref each to acf2, acf3 - they are removed
169 ssm.removeMappings(set2);
170 assertEquals(1, ssm.seqmappings.size());
171 assertTrue(ssm.seqmappings.contains(acf1));
172 assertEquals(1, ssm.seqMappingRefCounts.size());
173 assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue());