- @Test(groups = "Functional")
- public void testMakeVisibleAnnotation()
- {
- HiddenColumns h = new HiddenColumns();
- Annotation[] anns = new Annotation[] { null, null, new Annotation(1),
- new Annotation(2), new Annotation(3), null, null, new Annotation(4),
- new Annotation(5), new Annotation(6), new Annotation(7),
- new Annotation(8) };
- AlignmentAnnotation ann = new AlignmentAnnotation("an", "some an",
- anns);
-
- // null annotation
- AlignmentAnnotation nullann = null;
- h.makeVisibleAnnotation(nullann);
- assertNull(nullann);
-
- h.makeVisibleAnnotation(1, 2, nullann);
- assertNull(nullann);
-
- // null annotations
- AlignmentAnnotation emptyann = new AlignmentAnnotation("an", "some ann", null);
- h.makeVisibleAnnotation(emptyann);
- assertNull(emptyann.annotations);
-
- h.makeVisibleAnnotation(3, 4, emptyann);
- assertNull(emptyann.annotations);
-
- // without bounds, does everything
- h.makeVisibleAnnotation(ann);
- assertEquals(12, ann.annotations.length);
- assertNull(ann.annotations[0]);
- assertNull(ann.annotations[1]);
- assertEquals(1.0f, ann.annotations[2].value);
- assertEquals(2.0f, ann.annotations[3].value);
- assertEquals(3.0f, ann.annotations[4].value);
- assertNull(ann.annotations[5]);
- assertNull(ann.annotations[6]);
- assertEquals(4.0f, ann.annotations[7].value);
- assertEquals(5.0f, ann.annotations[8].value);
- assertEquals(6.0f, ann.annotations[9].value);
- assertEquals(7.0f, ann.annotations[10].value);
- assertEquals(8.0f, ann.annotations[11].value);
-
- // without hidden cols, just truncates
- h.makeVisibleAnnotation(3, 5, ann);
- assertEquals(3, ann.annotations.length);
- assertEquals(2.0f, ann.annotations[0].value);
- assertEquals(3.0f, ann.annotations[1].value);
- assertNull(ann.annotations[2]);
-
- anns = new Annotation[] { null, null, new Annotation(1),
- new Annotation(2), new Annotation(3), null, null, new Annotation(4),
- new Annotation(5), new Annotation(6), new Annotation(7),
- new Annotation(8) };
- ann = new AlignmentAnnotation("an", "some an", anns);
- h.hideColumns(4, 7);
- h.makeVisibleAnnotation(1, 9, ann);
- assertEquals(5, ann.annotations.length);
- assertNull(ann.annotations[0]);
- assertEquals(1.0f, ann.annotations[1].value);
- assertEquals(2.0f, ann.annotations[2].value);
- assertEquals(5.0f, ann.annotations[3].value);
- assertEquals(6.0f, ann.annotations[4].value);
-
- anns = new Annotation[] { null, null, new Annotation(1),
- new Annotation(2), new Annotation(3), null, null, new Annotation(4),
- new Annotation(5), new Annotation(6), new Annotation(7),
- new Annotation(8) };
- ann = new AlignmentAnnotation("an", "some an", anns);
- h.hideColumns(1, 2);
- h.makeVisibleAnnotation(1, 9, ann);
- assertEquals(3, ann.annotations.length);
- assertEquals(2.0f, ann.annotations[0].value);
- assertEquals(5.0f, ann.annotations[1].value);
- assertEquals(6.0f, ann.annotations[2].value);
-
- anns = new Annotation[] { null, null, new Annotation(1),
- new Annotation(2), new Annotation(3), null, null, new Annotation(4),
- new Annotation(5), new Annotation(6), new Annotation(7),
- new Annotation(8), new Annotation(9), new Annotation(10),
- new Annotation(11), new Annotation(12), new Annotation(13),
- new Annotation(14), new Annotation(15) };
- ann = new AlignmentAnnotation("an", "some an", anns);
- h = new HiddenColumns();
- h.hideColumns(5, 18);
- h.hideColumns(20, 21);
- h.makeVisibleAnnotation(1, 21, ann);
- assertEquals(5, ann.annotations.length);
- assertEquals(1.0f, ann.annotations[1].value);
- assertEquals(2.0f, ann.annotations[2].value);
- assertEquals(3.0f, ann.annotations[3].value);
- assertNull(ann.annotations[0]);
- assertNull(ann.annotations[4]);
+ tohide.clear();
+ tohide.set(41);
+ h.clearAndHideColumns(tohide, 23, 30);
+ assertTrue(h.equals(h2));
+ assertEquals(h.getSize(), h2.getSize());
+
+ tohide.set(41);
+ h.clearAndHideColumns(tohide, 30, 45);
+ h2.hideColumns(41, 41);
+ assertTrue(h.equals(h2));
+ assertEquals(h.getSize(), h2.getSize());
+
+ tohide.clear();
+ tohide.set(25, 28);
+ h.clearAndHideColumns(tohide, 17, 50);
+ h2 = new HiddenColumns();
+ h2.hideColumns(5, 5);
+ h2.hideColumns(9, 9);
+ h2.hideColumns(15, 16);
+ h2.hideColumns(25, 27);
+ assertTrue(h.equals(h2));
+ assertEquals(h.getSize(), h2.getSize());
+
+ HiddenColumns hc = new HiddenColumns();
+ hc.hideColumns(3, 5);
+ hc.hideColumns(15, 20);
+ hc.hideColumns(45, 60);
+
+ tohide = new BitSet();
+
+ // all unhidden if tohide is empty and range covers hidden
+ hc.clearAndHideColumns(tohide, 1, 70);
+ assertTrue(!hc.hasHiddenColumns());
+ assertEquals(0, hc.getSize());
+
+ hc.hideColumns(3, 5);
+ hc.hideColumns(15, 20);
+ hc.hideColumns(45, 60);
+ assertEquals(25, hc.getSize());
+
+ // but not if range does not cover hidden
+ hc.clearAndHideColumns(tohide, 23, 40);
+ assertTrue(hc.hasHiddenColumns());
+ assertEquals(25, hc.getSize());
+
+ // and partial unhide if range partially covers
+ hc.clearAndHideColumns(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());
+ assertEquals(19, hc.getSize());