JAL-2291 get bitset representing hidden columns
authorJim Procter <jprocter@issues.jalview.org>
Sun, 4 Jun 2017 12:18:27 +0000 (13:18 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Sun, 4 Jun 2017 12:18:27 +0000 (13:18 +0100)
src/jalview/datamodel/HiddenColumns.java
test/jalview/datamodel/HiddenColumnsTest.java

index 96fff97..f0d99e5 100644 (file)
@@ -1279,4 +1279,21 @@ public class HiddenColumns
     }
   }
 
+  /**
+   * 
+   * @param inserts
+   *          BitSet where hidden columns will be marked
+   */
+  public void markHiddenRegions(BitSet inserts)
+  {
+    if (hiddenColumns == null)
+    {
+      return;
+    }
+    for (int[] range : hiddenColumns)
+    {
+      inserts.set(range[0], range[1] + 1);
+    }
+  }
+
 }
index a671263..10808d6 100644 (file)
@@ -31,6 +31,7 @@ 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;
@@ -563,4 +564,25 @@ public class HiddenColumnsTest
     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);
+    }
+  }
 }