Merge branch 'develop' (JAL-4102 2.11.2.6 patch release) into features/r2_11_2_alphaf...
[jalview.git] / test / jalview / datamodel / ColumnSelectionTest.java
index c594dda..5cb8cf5 100644 (file)
@@ -25,12 +25,6 @@ import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertTrue;
 import static org.testng.AssertJUnit.fail;
 
-import jalview.analysis.AlignmentGenerator;
-import jalview.gui.JvOptionPane;
-import jalview.viewmodel.annotationfilter.AnnotationFilterParameter;
-import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField;
-import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType;
-
 import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Collections;
@@ -41,6 +35,12 @@ import java.util.List;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import jalview.analysis.AlignmentGenerator;
+import jalview.gui.JvOptionPane;
+import jalview.viewmodel.annotationfilter.AnnotationFilterParameter;
+import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField;
+import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType;
+
 public class ColumnSelectionTest
 {
 
@@ -103,8 +103,8 @@ public class ColumnSelectionTest
     cs.removeElement(1);
     List<Integer> sel = cs.getSelected();
     assertEquals(2, sel.size());
-    assertEquals(new Integer(2), sel.get(0));
-    assertEquals(new Integer(5), sel.get(1));
+    assertEquals(Integer.valueOf(2), sel.get(0));
+    assertEquals(Integer.valueOf(5), sel.get(1));
 
     // removing an element in the list removes it
     cs.removeElement(2);
@@ -112,7 +112,7 @@ public class ColumnSelectionTest
     assertEquals(1, sel.size());
     sel = cs.getSelected();
     assertEquals(1, sel.size());
-    assertEquals(new Integer(5), sel.get(0));
+    assertEquals(Integer.valueOf(5), sel.get(0));
   }
 
   /**
@@ -411,7 +411,8 @@ public class ColumnSelectionTest
    */
   @Test(
     groups = "Functional",
-    expectedExceptions = { ConcurrentModificationException.class })
+    expectedExceptions =
+    { ConcurrentModificationException.class })
   public void testGetSelected_concurrentModification()
   {
     ColumnSelection cs = new ColumnSelection();
@@ -538,7 +539,6 @@ public class ColumnSelectionTest
     assertEquals("[3, 1]", cs2.getSelected().toString());
   }
 
-
   @Test(groups = { "Functional" })
   public void testStretchGroup_expand()
   {
@@ -606,6 +606,8 @@ public class ColumnSelectionTest
   public void testFilterAnnotations()
   {
     ColumnSelection cs = new ColumnSelection();
+    AlignmentAnnotation alann = new AlignmentAnnotation("dummy",
+            "dummyDesc", null);
 
     /*
      * filter with no conditions clears the selection
@@ -613,7 +615,8 @@ public class ColumnSelectionTest
     Annotation[] anns = new Annotation[] { null };
     AnnotationFilterParameter filter = new AnnotationFilterParameter();
     cs.addElement(3);
-    int added = cs.filterAnnotations(anns, filter);
+    alann.annotations = anns;
+    int added = cs.filterAnnotations(alann, filter);
     assertEquals(0, added);
     assertTrue(cs.isEmpty());
 
@@ -624,8 +627,8 @@ public class ColumnSelectionTest
     filter.addRegexSearchField(SearchableAnnotationField.DESCRIPTION);
     Annotation helix = new Annotation("(", "hello", '<', 2f);
     Annotation sheet = new Annotation("(", "world", '<', 2f);
-    added = cs.filterAnnotations(new Annotation[] { null, helix, sheet },
-            filter);
+    alann.annotations = new Annotation[] { null, helix, sheet };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(1, added);
     assertTrue(cs.contains(2));
 
@@ -635,8 +638,8 @@ public class ColumnSelectionTest
     filter = new AnnotationFilterParameter();
     filter.setRegexString("(");
     filter.addRegexSearchField(SearchableAnnotationField.DISPLAY_STRING);
-    added = cs.filterAnnotations(new Annotation[] { null, helix, sheet },
-            filter);
+    alann.annotations = new Annotation[] { null, helix, sheet };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(2, added);
     assertTrue(cs.contains(1));
     assertTrue(cs.contains(2));
@@ -650,10 +653,8 @@ public class ColumnSelectionTest
     sheet = new Annotation("x", "desc", 'E', 1f);
     Annotation turn = new Annotation("x", "desc", 'S', 2f);
     Annotation ann4 = new Annotation("x", "desc", 'Y', 3f);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 },
-            filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(1, added);
     assertTrue(cs.contains(1));
 
@@ -661,9 +662,8 @@ public class ColumnSelectionTest
      * select Helix and Sheet (E)
      */
     filter.setFilterBetaSheet(true);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 }, filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(2, added);
     assertTrue(cs.contains(1));
     assertTrue(cs.contains(2));
@@ -673,9 +673,8 @@ public class ColumnSelectionTest
      */
     filter.setFilterAlphaHelix(false);
     filter.setFilterTurn(true);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 }, filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(2, added);
     assertTrue(cs.contains(2));
     assertTrue(cs.contains(3));
@@ -686,9 +685,8 @@ public class ColumnSelectionTest
     filter = new AnnotationFilterParameter();
     filter.setThresholdType(ThresholdType.BELOW_THRESHOLD);
     filter.setThresholdValue(2f);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 }, filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(2, added);
     assertTrue(cs.contains(1));
     assertTrue(cs.contains(2));
@@ -697,9 +695,8 @@ public class ColumnSelectionTest
      * select value > 2f (ann4 only)
      */
     filter.setThresholdType(ThresholdType.ABOVE_THRESHOLD);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 }, filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(1, added);
     assertTrue(cs.contains(4));
 
@@ -707,11 +704,21 @@ public class ColumnSelectionTest
      * select >2f or Helix
      */
     filter.setFilterAlphaHelix(true);
-    added = cs
-            .filterAnnotations(new Annotation[]
-            { null, helix, sheet, turn, ann4 }, filter);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
     assertEquals(2, added);
     assertTrue(cs.contains(1));
     assertTrue(cs.contains(4));
+
+    /*
+     * select < 1f or Helix; one annotation matches both
+     * return value should only count it once
+     */
+    filter.setThresholdType(ThresholdType.BELOW_THRESHOLD);
+    filter.setThresholdValue(1f);
+    alann.annotations = new Annotation[] { null, helix, sheet, turn, ann4 };
+    added = cs.filterAnnotations(alann, filter);
+    assertEquals(1, added);
+    assertTrue(cs.contains(1));
   }
 }