X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fdatamodel%2FHiddenColumnsTest.java;h=10808d6b129cb7eb1cce76659d8e38e4e9eb52e8;hb=a07949da33a4418114603e5ebf9eea4fe53e9475;hp=5eaecd3bf2e4b14251c9dc9b0da4296b70d56440;hpb=1b911af46e474fd504a4d505327e02b684d9a397;p=jalview.git diff --git a/test/jalview/datamodel/HiddenColumnsTest.java b/test/jalview/datamodel/HiddenColumnsTest.java index 5eaecd3..10808d6 100644 --- a/test/jalview/datamodel/HiddenColumnsTest.java +++ b/test/jalview/datamodel/HiddenColumnsTest.java @@ -29,7 +29,9 @@ import jalview.analysis.AlignmentGenerator; import jalview.gui.JvOptionPane; import java.util.Arrays; +import java.util.BitSet; import java.util.List; +import java.util.Random; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -45,6 +47,29 @@ public class HiddenColumnsTest } /** + * Test the method which counts the number of hidden columns + */ + @Test(groups = { "Functional" }) + public void testGetSize() + { + HiddenColumns hidden = new HiddenColumns(); + assertEquals(0, hidden.getSize()); + + hidden.hideColumns(3, 5); + assertEquals(3, hidden.getSize()); + + hidden.hideColumns(8, 8); + assertEquals(4, hidden.getSize()); + + hidden.hideColumns(9, 14); + assertEquals(10, hidden.getSize()); + + ColumnSelection cs = new ColumnSelection(); + hidden.revealAllHiddenColumns(cs); + assertEquals(0, hidden.getSize()); + } + + /** * Test the method that finds the visible column position of an alignment * column, allowing for hidden columns. */ @@ -207,14 +232,14 @@ public class HiddenColumnsTest HiddenColumns cs = new HiddenColumns(); cs.hideColumns(10, 11); cs.hideColumns(5, 7); - assertEquals("[5, 7]", Arrays.toString(cs.getListOfCols().get(0))); + assertEquals("[5, 7]", Arrays.toString(cs.getHiddenRegions().get(0))); HiddenColumns cs2 = new HiddenColumns(cs); assertTrue(cs2.hasHiddenColumns()); - assertEquals(2, cs2.getListOfCols().size()); + assertEquals(2, cs2.getHiddenRegions().size()); // hidden columns are held in column order - assertEquals("[5, 7]", Arrays.toString(cs2.getListOfCols().get(0))); - assertEquals("[10, 11]", Arrays.toString(cs2.getListOfCols().get(1))); + assertEquals("[5, 7]", Arrays.toString(cs2.getHiddenRegions().get(0))); + assertEquals("[10, 11]", Arrays.toString(cs2.getHiddenRegions().get(1))); } /** @@ -311,51 +336,51 @@ public class HiddenColumnsTest ColumnSelection colsel = new ColumnSelection(); HiddenColumns cs = al.getHiddenColumns(); colsel.hideSelectedColumns(5, al.getHiddenColumns()); - List hidden = cs.getListOfCols(); + List hidden = cs.getHiddenRegions(); assertEquals(1, hidden.size()); assertEquals("[5, 5]", Arrays.toString(hidden.get(0))); colsel.hideSelectedColumns(3, al.getHiddenColumns()); assertEquals(2, hidden.size()); // two hidden ranges, in order: - assertSame(hidden, cs.getListOfCols()); + assertSame(hidden, cs.getHiddenRegions()); assertEquals("[3, 3]", Arrays.toString(hidden.get(0))); assertEquals("[5, 5]", Arrays.toString(hidden.get(1))); // hiding column 4 expands [3, 3] to [3, 4] // and merges to [5, 5] to make [3, 5] colsel.hideSelectedColumns(4, al.getHiddenColumns()); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); assertEquals(1, hidden.size()); assertEquals("[3, 5]", Arrays.toString(hidden.get(0))); // clear hidden columns (note they are added to selected) cs.revealAllHiddenColumns(colsel); // it is now actually null but getter returns an empty list - assertTrue(cs.getListOfCols().isEmpty()); + assertTrue(cs.getHiddenRegions().isEmpty()); cs.hideColumns(3, 6); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); int[] firstHiddenRange = hidden.get(0); assertEquals("[3, 6]", Arrays.toString(firstHiddenRange)); // adding a subrange of already hidden should do nothing cs.hideColumns(4, 5); assertEquals(1, hidden.size()); - assertSame(firstHiddenRange, cs.getListOfCols().get(0)); + assertSame(firstHiddenRange, cs.getHiddenRegions().get(0)); cs.hideColumns(3, 5); assertEquals(1, hidden.size()); - assertSame(firstHiddenRange, cs.getListOfCols().get(0)); + assertSame(firstHiddenRange, cs.getHiddenRegions().get(0)); cs.hideColumns(4, 6); assertEquals(1, hidden.size()); - assertSame(firstHiddenRange, cs.getListOfCols().get(0)); + assertSame(firstHiddenRange, cs.getHiddenRegions().get(0)); cs.hideColumns(3, 6); assertEquals(1, hidden.size()); - assertSame(firstHiddenRange, cs.getListOfCols().get(0)); + assertSame(firstHiddenRange, cs.getHiddenRegions().get(0)); cs.revealAllHiddenColumns(colsel); cs.hideColumns(2, 4); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); assertEquals(1, hidden.size()); assertEquals("[2, 4]", Arrays.toString(hidden.get(0))); @@ -388,7 +413,7 @@ public class HiddenColumnsTest colsel.addElement(10); cs.revealHiddenColumns(5, colsel); // hidden columns list now null but getter returns empty list: - assertTrue(cs.getListOfCols().isEmpty()); + assertTrue(cs.getHiddenRegions().isEmpty()); // revealed columns are marked as selected (added to selection): assertEquals("[10, 5, 6, 7, 8]", colsel.getSelected().toString()); @@ -396,9 +421,9 @@ public class HiddenColumnsTest colsel = new ColumnSelection(); cs = new HiddenColumns(); cs.hideColumns(5, 8); - List hidden = cs.getListOfCols(); + List hidden = cs.getHiddenRegions(); cs.revealHiddenColumns(6, colsel); - assertSame(hidden, cs.getListOfCols()); + assertSame(hidden, cs.getHiddenRegions()); assertTrue(colsel.getSelected().isEmpty()); } @@ -417,7 +442,7 @@ public class HiddenColumnsTest * revealing hidden columns adds them (in order) to the (unordered) * selection list */ - assertTrue(cs.getListOfCols().isEmpty()); + assertTrue(cs.getHiddenRegions().isEmpty()); assertEquals("[11, 1, 2, 3, 5, 6, 7, 8]", colsel.getSelected() .toString()); } @@ -453,13 +478,13 @@ public class HiddenColumnsTest HiddenColumns cs = new HiddenColumns(); cs.hideColumns(49, 59); cs.hideColumns(69, 79); - List hidden = cs.getListOfCols(); + List hidden = cs.getHiddenRegions(); assertEquals(2, hidden.size()); assertEquals("[49, 59]", Arrays.toString(hidden.get(0))); assertEquals("[69, 79]", Arrays.toString(hidden.get(1))); cs.hideColumns(48, 80); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); assertEquals(1, hidden.size()); assertEquals("[48, 80]", Arrays.toString(hidden.get(0))); @@ -472,7 +497,7 @@ public class HiddenColumnsTest cs.hideColumns(50, 60); // hiding 21-49 should merge to one range cs.hideColumns(21, 49); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); assertEquals(1, hidden.size()); assertEquals("[10, 60]", Arrays.toString(hidden.get(0))); @@ -488,10 +513,76 @@ public class HiddenColumnsTest cs.hideColumns(60, 70); cs.hideColumns(15, 45); - hidden = cs.getListOfCols(); + hidden = cs.getHiddenRegions(); assertEquals(2, hidden.size()); assertEquals("[10, 50]", Arrays.toString(hidden.get(0))); assertEquals("[60, 70]", Arrays.toString(hidden.get(1))); } + @Test(groups = { "Functional" }) + public void testHideBitset() + { + HiddenColumns cs; + + BitSet one = new BitSet(); + + // one hidden range + one.set(1); + cs = new HiddenColumns(); + cs.hideMarkedBits(one); + assertEquals(1, cs.getHiddenRegions().size()); + + one.set(2); + cs = new HiddenColumns(); + cs.hideMarkedBits(one); + assertEquals(1, cs.getHiddenRegions().size()); + + one.set(3); + cs = new HiddenColumns(); + cs.hideMarkedBits(one); + assertEquals(1, cs.getHiddenRegions().size()); + + // split + one.clear(2); + cs = new HiddenColumns(); + cs.hideMarkedBits(one); + assertEquals(2, cs.getHiddenRegions().size()); + + assertEquals(0, cs.adjustForHiddenColumns(0)); + assertEquals(2, cs.adjustForHiddenColumns(1)); + assertEquals(4, cs.adjustForHiddenColumns(2)); + + // one again + one.clear(1); + cs = new HiddenColumns(); + cs.hideMarkedBits(one); + + assertEquals(1, cs.getHiddenRegions().size()); + + assertEquals(0, cs.adjustForHiddenColumns(0)); + assertEquals(1, cs.adjustForHiddenColumns(1)); + assertEquals(2, cs.adjustForHiddenColumns(2)); + assertEquals(4, cs.adjustForHiddenColumns(3)); + } + + @Test(groups = { "Functional" }) + public void testGetBitset() + { + BitSet toMark, fromMark; + long seed = -3241532; + Random number = new Random(seed); + for (int n = 0; n < 1000; n++) + { + // create a random bitfield + toMark = BitSet.valueOf(new long[] { number.nextLong(), + number.nextLong(), number.nextLong() }); + toMark.set(n * number.nextInt(10), n * (25 + number.nextInt(25))); + HiddenColumns hc = new HiddenColumns(); + hc.hideMarkedBits(toMark); + + // see if we can recover bitfield + hc.markHiddenRegions(fromMark = new BitSet()); + assertEquals(toMark, fromMark); + } + } }