JAL-2759 unit tests (incomplete)
[jalview.git] / test / jalview / datamodel / HiddenColumnsTest.java
index dbde943..462957b 100644 (file)
@@ -31,7 +31,6 @@ import jalview.util.Comparison;
 import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Iterator;
-import java.util.Random;
 
 import org.testng.annotations.Test;
 
@@ -726,32 +725,43 @@ public class HiddenColumnsTest
   }
 
   @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" })
@@ -1150,7 +1160,7 @@ public class HiddenColumnsTest
   }
 
   @Test(groups = "Functional")
-  public void testHideMarkedBits()
+  public void testHideColumns_BitSet()
   {
     HiddenColumns h = new HiddenColumns();
     HiddenColumns h2 = new HiddenColumns();