JAL-3746 apply copyright to tests
[jalview.git] / test / jalview / schemes / AnnotationColourGradientTest.java
index 4a5e057..35e3c2f 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.schemes;
 
 import static org.testng.Assert.assertEquals;
@@ -50,8 +70,8 @@ public class AnnotationColourGradientTest
     }
 
     seq = new Sequence("Seq", "");
-    al = new Alignment(new SequenceI[]{ seq});
-    
+    al = new Alignment(new SequenceI[] { seq });
+
     /*
      * AlignmentAnnotation constructor works out min-max range
      */
@@ -124,6 +144,18 @@ public class AnnotationColourGradientTest
       Color result = testee.shadeCalculation(ann, col);
       assertEquals(result, expected, "for column " + col);
     }
+
+    /*
+     * test for boundary case threshold == graphMax (JAL-3206)
+     */
+    float thresh = ann.threshold.value;
+    ann.threshold.value = ann.graphMax;
+    Color result = testee.shadeCalculation(ann, WIDTH - 1);
+    assertEquals(result, maxColour);
+    testee.setThresholdIsMinMax(false);
+    result = testee.shadeCalculation(ann, WIDTH - 1);
+    assertEquals(result, maxColour);
+    ann.threshold.value = thresh; // reset
   }
 
   /**
@@ -174,6 +206,18 @@ public class AnnotationColourGradientTest
       Color result = testee.shadeCalculation(ann, col);
       assertEquals(result, expected, "for column " + col);
     }
+
+    /*
+     * test for boundary case threshold == graphMin (JAL-3206)
+     */
+    float thresh = ann.threshold.value;
+    ann.threshold.value = ann.graphMin;
+    Color result = testee.shadeCalculation(ann, 0);
+    assertEquals(result, minColour);
+    testee.setThresholdIsMinMax(false);
+    result = testee.shadeCalculation(ann, 0);
+    assertEquals(result, minColour);
+    ann.threshold.value = thresh; // reset
   }
 
   /**
@@ -184,20 +228,19 @@ public class AnnotationColourGradientTest
   {
     AnnotationColourGradient testee = new AnnotationColourGradient(ann,
             minColour, maxColour, AnnotationColourGradient.ABOVE_THRESHOLD);
-    testee = (AnnotationColourGradient) testee.getInstance(null, al, null);
+    testee = (AnnotationColourGradient) testee.getInstance(null, al);
 
     for (int col = 0; col < WIDTH; col++)
     {
       Color result = testee.findColour('a', col, seq);
       /*
-       * expect white below threshold of 5
+       * expect white at or below threshold of 5
        */
-      Color expected = col < 5 ? Color.white : new Color(50 + 10 * col,
-              200 - 10 * col,
-              150 + 10 * col);
+      Color expected = col <= 5 ? Color.white
+              : new Color(50 + 10 * col, 200 - 10 * col, 150 + 10 * col);
       assertEquals(result, expected, "for column " + col);
     }
-  
+
     /*
      * now make 6-10 the span of the colour range
      * (annotation value == column number in this test)
@@ -206,13 +249,13 @@ public class AnnotationColourGradientTest
     for (int col = 0; col < WIDTH; col++)
     {
       /*
-       * colours for values >= threshold are graduated
+       * colours for values > threshold are graduated
        * range is 6-10 so steps of 100/5 = 20
        */
       int factor = col - THRESHOLD_FIVE;
-      Color expected = col < 5 ? Color.white : new Color(50 + 20 * factor,
-              200 - 20 * factor,
-              150 + 20 * factor);
+      Color expected = col <= 5 ? Color.white
+              : new Color(50 + 20 * factor, 200 - 20 * factor,
+                      150 + 20 * factor);
       Color result = testee.findColour('a', col, seq);
       assertEquals(result, expected, "for column " + col);
     }
@@ -226,16 +269,16 @@ public class AnnotationColourGradientTest
   {
     AnnotationColourGradient testee = new AnnotationColourGradient(ann,
             minColour, maxColour, AnnotationColourGradient.BELOW_THRESHOLD);
-    testee = (AnnotationColourGradient) testee.getInstance(null, al, null);
-  
+    testee = (AnnotationColourGradient) testee.getInstance(null, al);
+
     for (int col = 0; col < WIDTH; col++)
     {
       Color result = testee.findColour('a', col, seq);
-      Color expected = col > 5 ? Color.white : new Color(50 + 10 * col,
-              200 - 10 * col, 150 + 10 * col);
+      Color expected = col >= 5 ? Color.white
+              : new Color(50 + 10 * col, 200 - 10 * col, 150 + 10 * col);
       assertEquals(result, expected, "for column " + col);
     }
-  
+
     /*
      * now make 0-5 the span of the colour range
      * (annotation value == column number in this test)
@@ -244,11 +287,11 @@ public class AnnotationColourGradientTest
     for (int col = 0; col < WIDTH; col++)
     {
       /*
-       * colours for values <= threshold are graduated
+       * colours for values < threshold are graduated
        * range is 0-5 so steps of 100/5 = 20
        */
-      Color expected = col > 5 ? Color.white : new Color(50 + 20 * col,
-              200 - 20 * col, 150 + 20 * col);
+      Color expected = col >= 5 ? Color.white
+              : new Color(50 + 20 * col, 200 - 20 * col, 150 + 20 * col);
       Color result = testee.findColour('a', col, seq);
       assertEquals(result, expected, "for column " + col);
     }
@@ -259,7 +302,7 @@ public class AnnotationColourGradientTest
   {
     AnnotationColourGradient testee = new AnnotationColourGradient(ann,
             minColour, maxColour, AnnotationColourGradient.NO_THRESHOLD);
-    testee = (AnnotationColourGradient) testee.getInstance(null, al, null);
+    testee = (AnnotationColourGradient) testee.getInstance(null, al);
 
     for (int col = 0; col < WIDTH; col++)
     {
@@ -278,7 +321,7 @@ public class AnnotationColourGradientTest
   {
     AnnotationColourGradient testee = new AnnotationColourGradient(ann,
             minColour, maxColour, AnnotationColourGradient.NO_THRESHOLD);
-    testee = (AnnotationColourGradient) testee.getInstance(null, al, null);
+    testee = (AnnotationColourGradient) testee.getInstance(null, al);
 
     /*
      * flag corresponding to 'use original colours' checkbox
@@ -294,7 +337,8 @@ public class AnnotationColourGradientTest
     {
       int hue = col * 20;
       Color c = col == 0 ? minColour : new Color(hue, hue, hue);
-      assertEquals(testee.findColour('a', col, seq), c, "for column " + col);
+      assertEquals(testee.findColour('a', col, seq), c,
+              "for column " + col);
     }
   }
 }