JAL-4313 Clamp start and end ranges to array size
[jalview.git] / test / jalview / datamodel / AlignmentAnnotationTests.java
index 2948f83..74c2b63 100644 (file)
@@ -626,6 +626,50 @@ public class AlignmentAnnotationTests
     assertThat(ann.annotations, is(emptyArray()));
   }
 
+  @Test(groups = "Functional")
+  public void testMakeVisibleAnnotation_HiddenRegionBeyondSize()
+  {
+    Annotation[] annots = annotsRange(4);
+    AlignmentAnnotation ann = new AlignmentAnnotation("label", "desc", annots);
+    HiddenColumns hc = new HiddenColumns();
+    hc.hideColumns(6, 7);
+    ann.makeVisibleAnnotation(hc);
+    assertThat(ann.annotations, matchesAnnotations(annots));
+  }
+
+  @Test(groups = "Functional")
+  public void testMakeVisibleAnnotation_HiddenRegionAndTrimEndBeyondSize()
+  {
+    Annotation[] annots = annotsRange(4);
+    AlignmentAnnotation ann = new AlignmentAnnotation("label", "desc", annots);
+    HiddenColumns hc = new HiddenColumns();
+    hc.hideColumns(6, 7);
+    ann.makeVisibleAnnotation(0, 10, hc);
+    assertThat(ann.annotations, matchesAnnotations(annots));
+  }
+
+  @Test(groups = "Functional")
+  public void testMakeVisibleAnnotation_HiddenRegionBeforeStart()
+  {
+    Annotation[] annots = annotsRange(4);
+    AlignmentAnnotation ann = new AlignmentAnnotation("label", "desc", annots);
+    HiddenColumns hc = new HiddenColumns();
+    hc.hideColumns(-3, -2);
+    ann.makeVisibleAnnotation(hc);
+    assertThat(ann.annotations, matchesAnnotations(annots));
+  }
+
+  @Test(groups = "Functional")
+  public void testMakeVisibleAnnotation_HiddenRegionAndTrimStartBeforeStart()
+  {
+    Annotation[] annots = annotsRange(4);
+    AlignmentAnnotation ann = new AlignmentAnnotation("label", "desc", annots);
+    HiddenColumns hc = new HiddenColumns();
+    hc.hideColumns(-3, -2);
+    ann.makeVisibleAnnotation(-5, annots.length - 1, hc);
+    assertThat(ann.annotations, matchesAnnotations(annots));
+  }
+
   static Annotation[] annotsRange(int stop)
   {
     Annotation[] annotations = new Annotation[stop];