Merge branch 'releases/Release_2_10_4_Branch' into develop
[jalview.git] / test / jalview / renderer / seqfeatures / FeatureRendererTest.java
index 745eec3..da7cada 100644 (file)
@@ -9,14 +9,15 @@ import jalview.api.AlignViewportI;
 import jalview.api.FeatureColourI;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
+import jalview.datamodel.features.FeatureMatcher;
+import jalview.datamodel.features.FeatureMatcherSet;
+import jalview.datamodel.features.FeatureMatcherSetI;
 import jalview.gui.AlignFrame;
 import jalview.io.DataSourceType;
 import jalview.io.FileLoader;
 import jalview.schemes.FeatureColour;
 import jalview.util.matcher.Condition;
-import jalview.util.matcher.KeyedMatcher;
-import jalview.util.matcher.KeyedMatcherSet;
-import jalview.util.matcher.KeyedMatcherSetI;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel.FeatureSettingsBean;
 
 import java.awt.Color;
 import java.util.ArrayList;
@@ -67,9 +68,8 @@ public class FeatureRendererTest
     seqs.get(2).addSequenceFeature(
             new SequenceFeature("Pfam", "Desc", 14, 22, 2f, "RfamGroup"));
     // bug in findAllFeatures - group not checked for a known feature type
-    seqs.get(2).addSequenceFeature(
-            new SequenceFeature("Rfam", "Desc", 5, 9, Float.NaN,
-                    "RfamGroup"));
+    seqs.get(2).addSequenceFeature(new SequenceFeature("Rfam", "Desc", 5, 9,
+            Float.NaN, "RfamGroup"));
     // existing feature type with null group
     seqs.get(3).addSequenceFeature(
             new SequenceFeature("Rfam", "Desc", 5, 9, Float.NaN, null));
@@ -122,13 +122,14 @@ public class FeatureRendererTest
      * change render order (todo: an easier way)
      * nb here last comes first in the data array
      */
-    Object[][] data = new Object[3][];
+    FeatureSettingsBean[] data = new FeatureSettingsBean[3];
     FeatureColourI colour = new FeatureColour(Color.RED);
-    data[0] = new Object[] { "Rfam", colour, true };
-    data[1] = new Object[] { "Pfam", colour, false };
-    data[2] = new Object[] { "Scop", colour, false };
+    data[0] = new FeatureSettingsBean("Rfam", colour, null, true);
+    data[1] = new FeatureSettingsBean("Pfam", colour, null, false);
+    data[2] = new FeatureSettingsBean("Scop", colour, null, false);
     fr.setFeaturePriority(data);
-    assertEquals(fr.getRenderOrder(), Arrays.asList("Scop", "Pfam", "Rfam"));
+    assertEquals(fr.getRenderOrder(),
+            Arrays.asList("Scop", "Pfam", "Rfam"));
     assertEquals(fr.getDisplayedFeatureTypes(), Arrays.asList("Rfam"));
 
     /*
@@ -223,12 +224,13 @@ public class FeatureRendererTest
     /*
      * make "Type2" not displayed
      */
-    Object[][] data = new Object[4][];
     FeatureColourI colour = new FeatureColour(Color.RED);
-    data[0] = new Object[] { "Type1", colour, true };
-    data[1] = new Object[] { "Type2", colour, false };
-    data[2] = new Object[] { "Type3", colour, true };
-    data[3] = new Object[] { "Disulphide Bond", colour, true };
+    FeatureSettingsBean[] data = new FeatureSettingsBean[4];
+    data[0] = new FeatureSettingsBean("Type1", colour, null, true);
+    data[1] = new FeatureSettingsBean("Type2", colour, null, false);
+    data[2] = new FeatureSettingsBean("Type3", colour, null, true);
+    data[3] = new FeatureSettingsBean("Disulphide Bond", colour, null,
+            true);
     fr.setFeaturePriority(data);
 
     features = fr.findFeaturesAtColumn(seq, 15);
@@ -258,7 +260,7 @@ public class FeatureRendererTest
     features = fr.findFeaturesAtColumn(seq, 5);
     assertEquals(features.size(), 1);
     assertTrue(features.contains(sf8));
-    
+
     /*
      * give "Type3" features a graduated colour scheme
      * - first with no threshold
@@ -355,6 +357,14 @@ public class FeatureRendererTest
     assertTrue(features.contains(sf2) || features.contains(sf3));
     assertFalse(features.contains(sf2) && features.contains(sf3));
     assertTrue(features.contains(sf5));
+
+    /*
+     * no filtering if transparency is applied
+     */
+    fr.setTransparency(0.5f);
+    features = seq.getSequenceFeatures();
+    fr.filterFeaturesForDisplay(features);
+    assertEquals(features.size(), 5);
   }
 
   @Test(groups = "Functional")
@@ -376,12 +386,13 @@ public class FeatureRendererTest
 
     /*
      * hide feature type, then unhide
+     * - feature type visibility should not affect the result
      */
-    Object[][] data = new Object[1][];
-    data[0] = new Object[] { "Cath", fc, false };
+    FeatureSettingsBean[] data = new FeatureSettingsBean[1];
+    data[0] = new FeatureSettingsBean("Cath", fc, null, false);
     fr.setFeaturePriority(data);
-    assertNull(fr.getColour(sf1));
-    data[0] = new Object[] { "Cath", fc, true };
+    assertEquals(fr.getColour(sf1), Color.red);
+    data[0] = new FeatureSettingsBean("Cath", fc, null, true);
     fr.setFeaturePriority(data);
     assertEquals(fr.getColour(sf1), Color.red);
 
@@ -410,7 +421,7 @@ public class FeatureRendererTest
     // score 6 is half way from yellow(255, 255, 0) to red(255, 0, 0)
     Color expected = new Color(255, 128, 0);
     assertEquals(fr.getColour(sf2), expected);
-    
+
     /*
      * above threshold, score is above threshold - no change
      */
@@ -466,14 +477,14 @@ public class FeatureRendererTest
     // with filter on AF < 4
     gc.setAboveThreshold(false);
     assertEquals(fr.getColour(sf2), expected);
-    KeyedMatcherSetI filter = new KeyedMatcherSet();
-    filter.and(new KeyedMatcher(Condition.LT, 4f, "AF"));
+    FeatureMatcherSetI filter = new FeatureMatcherSet();
+    filter.and(FeatureMatcher.byAttribute(Condition.LT, "4.0", "AF"));
     fr.setFeatureFilter("Cath", filter);
     assertNull(fr.getColour(sf2));
 
     // with filter on 'Consequence contains missense'
-    filter = new KeyedMatcherSet();
-    filter.and(new KeyedMatcher(Condition.Contains, "missense",
+    filter = new FeatureMatcherSet();
+    filter.and(FeatureMatcher.byAttribute(Condition.Contains, "missense",
             "Consequence"));
     fr.setFeatureFilter("Cath", filter);
     // if feature has no Consequence attribute, no colour
@@ -485,10 +496,10 @@ public class FeatureRendererTest
     sf2.setValue("Consequence", "Missense variant");
     assertEquals(fr.getColour(sf2), expected);
 
-    // with filter on CSQ.Feature contains "ENST01234"
-    filter = new KeyedMatcherSet();
-    filter.and(new KeyedMatcher(Condition.Matches, "ENST01234", "CSQ",
-            "Feature"));
+    // with filter on CSQ:Feature contains "ENST01234"
+    filter = new FeatureMatcherSet();
+    filter.and(FeatureMatcher.byAttribute(Condition.Matches, "ENST01234",
+            "CSQ", "Feature"));
     fr.setFeatureFilter("Cath", filter);
     // if feature has no CSQ data, no colour
     assertNull(fr.getColour(sf2));