import java.util.Arrays;
import java.util.BitSet;
import java.util.Iterator;
-import java.util.Random;
import org.testng.annotations.Test;
}
@Test(groups = { "Functional" })
- public void testMarkHiddenRegions()
+ public void hideColumns_BitSetAndRange()
{
- 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();
-
- if (n == 0)
- {
- hc.markHiddenRegions(fromMark = new BitSet());
- assertTrue(fromMark.isEmpty());
- }
-
- hc.hideColumns(toMark);
-
- // see if we can recover bitfield
- hc.markHiddenRegions(fromMark = new BitSet());
- assertEquals(toMark, fromMark);
- }
+ HiddenColumns hc = new HiddenColumns();
+ hc.hideColumns(3, 5);
+ hc.hideColumns(15, 20);
+ hc.hideColumns(45, 60);
+
+ BitSet tohide = new BitSet();
+
+ // all unhidden if tohide is empty and range covers hidden
+ hc.hideColumns(tohide, 1, 70);
+ assertTrue(!hc.hasHiddenColumns());
+
+ hc.hideColumns(3, 5);
+ hc.hideColumns(15, 20);
+ hc.hideColumns(45, 60);
+
+ // but not if range does not cover hidden
+ hc.hideColumns(tohide, 23, 40);
+ assertTrue(hc.hasHiddenColumns());
+
+ // and partial unhide if range partially covers
+ hc.hideColumns(tohide, 1, 17);
+ Iterator<int[]> it = hc.iterator();
+ assertTrue(it.hasNext());
+ int[] region = it.next();
+
+ assertEquals(18, region[0]);
+ assertEquals(20, region[1]);
+
+ assertTrue(it.hasNext());
+ region = it.next();
+
+ assertEquals(45, region[0]);
+ assertEquals(60, region[1]);
+
+ assertFalse(it.hasNext());
}
@Test(groups = { "Functional" })
}
@Test(groups = "Functional")
- public void testHideMarkedBits()
+ public void testHideColumns_BitSet()
{
HiddenColumns h = new HiddenColumns();
HiddenColumns h2 = new HiddenColumns();