import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import jalview.api.AlignViewportI;
import jalview.commands.EditCommand;
assertEquals("[0, 3]", Arrays.toString(hidden.get(0)));
assertEquals("[5, 10]", Arrays.toString(hidden.get(1)));
}
+
+ /**
+ * Tests for the method that removes the trailing stop codon from a mapping
+ * range i.e. the last 3 positions (whether split or not)
+ */
+ @Test(groups = { "Functional" })
+ public void testUnmapStopCodon()
+ {
+ List<int[]> ranges = new ArrayList<int[]>();
+
+ // simple case, forward strand:
+ ranges.add(new int[] { 1, 3 });
+ ranges.add(new int[] { 9, 14 });
+ MappingUtils.unmapStopCodon(ranges, 9);
+ assertEquals(2, ranges.size());
+ assertArrayEquals(new int[] { 1, 3 }, ranges.get(0));
+ assertArrayEquals(new int[] { 9, 11 }, ranges.get(1));
+
+ // split stop codon, forward strand:
+ ranges.clear();
+ ranges.add(new int[] { 1, 8 });
+ ranges.add(new int[] { 10, 10 });
+ MappingUtils.unmapStopCodon(ranges, 9);
+ assertEquals(1, ranges.size());
+ assertArrayEquals(new int[] { 1, 6 }, ranges.get(0));
+
+ // very split stop codon, forward strand:
+ ranges.clear();
+ ranges.add(new int[] { 1, 1 });
+ ranges.add(new int[] { 3, 4 });
+ ranges.add(new int[] { 6, 6 });
+ ranges.add(new int[] { 8, 8 });
+ ranges.add(new int[] { 10, 10 });
+ MappingUtils.unmapStopCodon(ranges, 6);
+ assertEquals(2, ranges.size());
+ assertArrayEquals(new int[] { 1, 1 }, ranges.get(0));
+ assertArrayEquals(new int[] { 3, 4 }, ranges.get(1));
+
+ // simple case, reverse strand:
+ ranges.clear();
+ ranges.add(new int[] { 12, 10 });
+ ranges.add(new int[] { 6, 1 });
+ MappingUtils.unmapStopCodon(ranges, 9);
+ assertEquals(2, ranges.size());
+ assertArrayEquals(new int[] { 12, 10 }, ranges.get(0));
+ assertArrayEquals(new int[] { 6, 4 }, ranges.get(1));
+
+ // split stop codon, reverse strand:
+ ranges.clear();
+ ranges.add(new int[] { 12, 6 });
+ ranges.add(new int[] { 4, 3 });
+ MappingUtils.unmapStopCodon(ranges, 9);
+ assertEquals(1, ranges.size());
+ assertArrayEquals(new int[] { 12, 7 }, ranges.get(0));
+ }
}