X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FMappingUtilsTest.java;h=9239ba596269f43cb57c3468a584e3a055b84346;hb=747167089ecf8d6afc70d417f5a20352e029bd95;hp=3c1dbbbb8a69aab64ad1947453621ec5feaf7954;hpb=708cc06af06aa2912319ad736bcfecb62081de39;p=jalview.git diff --git a/test/jalview/util/MappingUtilsTest.java b/test/jalview/util/MappingUtilsTest.java index 3c1dbbb..9239ba5 100644 --- a/test/jalview/util/MappingUtilsTest.java +++ b/test/jalview/util/MappingUtilsTest.java @@ -22,8 +22,10 @@ package jalview.util; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; +import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; import java.awt.Color; import java.io.IOException; @@ -36,6 +38,7 @@ import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import jalview.api.AlignViewportI; +import jalview.bin.Console; import jalview.commands.EditCommand; import jalview.commands.EditCommand.Action; import jalview.commands.EditCommand.Edit; @@ -56,8 +59,14 @@ import jalview.io.FileFormat; import jalview.io.FileFormatI; import jalview.io.FormatAdapter; + public class MappingUtilsTest { + @BeforeClass(alwaysRun = true) + public void setUp() + { + Console.initLogger(); + } @BeforeClass(alwaysRun = true) public void setUpJvOptionPane() @@ -1322,9 +1331,30 @@ public class MappingUtilsTest assertEquals(9, ranges.get(0)[1]); } + @Test(groups = "Functional") + public void testFindOverlap() + { + List ranges = new ArrayList<>(); + ranges.add(new int[] { 4, 8 }); + ranges.add(new int[] { 10, 12 }); + ranges.add(new int[] { 16, 19 }); + + int[] overlap = MappingUtils.findOverlap(ranges, 5, 13); + assertArrayEquals(overlap, new int[] { 5, 12 }); + overlap = MappingUtils.findOverlap(ranges, -100, 100); + assertArrayEquals(overlap, new int[] { 4, 19 }); + overlap = MappingUtils.findOverlap(ranges, 7, 17); + assertArrayEquals(overlap, new int[] { 7, 17 }); + overlap = MappingUtils.findOverlap(ranges, 13, 15); + assertNull(overlap); + } + /** * Test mapping a sequence group where sequences in and outside the group * share a dataset sequence (e.g. alternative CDS for the same gene) + *

+ * This scenario doesn't arise after JAL-3763 changes, but test left as still + * valid * * @throws IOException */ @@ -1347,6 +1377,9 @@ public class MappingUtilsTest SequenceI pep1 = new Sequence("pep1", "KF"); SequenceI pep2 = new Sequence("pep2", "FG"); SequenceI pep3 = new Sequence("pep3", "GP"); + pep1.createDatasetSequence(); + pep2.createDatasetSequence(); + pep3.createDatasetSequence(); /* * add mappings from coding positions of dna to respective peptides @@ -1371,7 +1404,7 @@ public class MappingUtilsTest new SequenceI[] { pep1, pep2, pep3 }); AlignViewportI cdnaView = new AlignViewport(cdna); - AlignViewportI proteinView = new AlignViewport(protein); + AlignViewportI peptideView = new AlignViewport(protein); protein.setCodonFrames(acfList); /* @@ -1389,7 +1422,7 @@ public class MappingUtilsTest * Verify the mapped sequence group in dna is cds1 and cds3 */ SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg, - proteinView, cdnaView); + peptideView, cdnaView); assertTrue(mappedGroup.getColourText()); assertSame(sg.getIdColour(), mappedGroup.getIdColour()); assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour()); @@ -1408,7 +1441,7 @@ public class MappingUtilsTest sg.addSequence(cds1, false); sg.setStartRes(0); sg.setEndRes(cdna.getWidth() - 1); - mappedGroup = MappingUtils.mapSequenceGroup(sg, cdnaView, proteinView); + mappedGroup = MappingUtils.mapSequenceGroup(sg, cdnaView, peptideView); assertTrue(mappedGroup.getColourText()); assertSame(sg.getIdColour(), mappedGroup.getIdColour()); assertSame(sg.getOutlineColour(), mappedGroup.getOutlineColour()); @@ -1418,4 +1451,59 @@ public class MappingUtilsTest assertEquals(0, mappedGroup.getStartRes()); assertEquals(1, mappedGroup.getEndRes()); // two columns } + + // new for 2.12 + @Test(groups = "Functional") + public void testAddRange() + { + int[] range = { 1, 5 }; + List ranges = new ArrayList<>(); + + // add to empty list: + MappingUtils.addRange(range, ranges); + assertEquals(1, ranges.size()); + assertSame(range, ranges.get(0)); + + // extend contiguous (same position): + MappingUtils.addRange(new int[] { 5, 10 }, ranges); + assertEquals(1, ranges.size()); + assertEquals(1, ranges.get(0)[0]); + assertEquals(10, ranges.get(0)[1]); + + // extend contiguous (next position): + MappingUtils.addRange(new int[] { 11, 15 }, ranges); + assertEquals(1, ranges.size()); + assertEquals(1, ranges.get(0)[0]); + assertEquals(15, ranges.get(0)[1]); + + // change direction: range is not merged: + MappingUtils.addRange(new int[] { 16, 10 }, ranges); + assertEquals(2, ranges.size()); + assertEquals(16, ranges.get(1)[0]); + assertEquals(10, ranges.get(1)[1]); + + // extend reverse contiguous (same position): + MappingUtils.addRange(new int[] { 10, 8 }, ranges); + assertEquals(2, ranges.size()); + assertEquals(16, ranges.get(1)[0]); + assertEquals(8, ranges.get(1)[1]); + + // extend reverse contiguous (next position): + MappingUtils.addRange(new int[] { 7, 6 }, ranges); + assertEquals(2, ranges.size()); + assertEquals(16, ranges.get(1)[0]); + assertEquals(6, ranges.get(1)[1]); + + // change direction: range is not merged: + MappingUtils.addRange(new int[] { 6, 9 }, ranges); + assertEquals(3, ranges.size()); + assertEquals(6, ranges.get(2)[0]); + assertEquals(9, ranges.get(2)[1]); + + // not contiguous: not merged + MappingUtils.addRange(new int[] { 11, 12 }, ranges); + assertEquals(4, ranges.size()); + assertEquals(11, ranges.get(3)[0]); + assertEquals(12, ranges.get(3)[1]); + } }