JAL-2754 Sequence.findFeatures(fromCol, toCol)
[jalview.git] / test / jalview / renderer / seqfeatures / FeatureRendererTest.java
index ab5c137..31348c6 100644 (file)
@@ -138,9 +138,9 @@ public class FeatureRendererTest
   }
 
   @Test(groups = "Functional")
-  public void testFindFeaturesAtRes()
+  public void testFindFeaturesAtColumn()
   {
-    String seqData = ">s1\nabcdefghijklmnopqrstuvwxyz\n";
+    String seqData = ">s1/4-29\n-ab--cdefghijklmnopqrstuvwxyz\n";
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(seqData,
             DataSourceType.PASTE);
     AlignViewportI av = af.getViewport();
@@ -150,7 +150,7 @@ public class FeatureRendererTest
     /*
      * with no features
      */
-    List<SequenceFeature> features = fr.findFeaturesAtRes(seq, 3);
+    List<SequenceFeature> features = fr.findFeaturesAtColumn(seq, 3);
     assertTrue(features.isEmpty());
 
     /*
@@ -159,34 +159,43 @@ public class FeatureRendererTest
     SequenceFeature sf1 = new SequenceFeature("Type1", "Desc", 0, 0, 1f,
             "Group"); // non-positional
     seq.addSequenceFeature(sf1);
-    SequenceFeature sf2 = new SequenceFeature("Type2", "Desc", 5, 15, 1f,
+    SequenceFeature sf2 = new SequenceFeature("Type2", "Desc", 8, 18, 1f,
             "Group1");
     seq.addSequenceFeature(sf2);
-    SequenceFeature sf3 = new SequenceFeature("Type3", "Desc", 5, 15, 1f,
+    SequenceFeature sf3 = new SequenceFeature("Type3", "Desc", 8, 18, 1f,
             "Group2");
     seq.addSequenceFeature(sf3);
-    SequenceFeature sf4 = new SequenceFeature("Type3", "Desc", 5, 15, 1f,
+    SequenceFeature sf4 = new SequenceFeature("Type3", "Desc", 8, 18, 1f,
             null); // null group is always treated as visible
     seq.addSequenceFeature(sf4);
 
     /*
      * add contact features
      */
-    SequenceFeature sf5 = new SequenceFeature("Disulphide Bond", "Desc", 4,
-            12, 1f, "Group1");
+    SequenceFeature sf5 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+            15, 1f, "Group1");
     seq.addSequenceFeature(sf5);
-    SequenceFeature sf6 = new SequenceFeature("Disulphide Bond", "Desc", 4,
-            12, 1f, "Group2");
+    SequenceFeature sf6 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+            15, 1f, "Group2");
     seq.addSequenceFeature(sf6);
-    SequenceFeature sf7 = new SequenceFeature("Disulphide Bond", "Desc", 4,
-            12, 1f, null);
+    SequenceFeature sf7 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+            15, 1f, null);
     seq.addSequenceFeature(sf7);
 
+    // feature spanning B--C
+    SequenceFeature sf8 = new SequenceFeature("Type1", "Desc", 5, 6, 1f,
+            "Group");
+    seq.addSequenceFeature(sf8);
+    // contact feature B/C
+    SequenceFeature sf9 = new SequenceFeature("Disulphide Bond", "Desc", 5,
+            6, 1f, "Group");
+    seq.addSequenceFeature(sf9);
+
     /*
      * let feature renderer discover features (and make visible)
      */
     fr.findAllFeatures(true);
-    features = fr.findFeaturesAtRes(seq, 12); // all positional
+    features = fr.findFeaturesAtColumn(seq, 15); // all positional
     assertEquals(features.size(), 6);
     assertTrue(features.contains(sf2));
     assertTrue(features.contains(sf3));
@@ -198,7 +207,7 @@ public class FeatureRendererTest
     /*
      * at a non-contact position
      */
-    features = fr.findFeaturesAtRes(seq, 11);
+    features = fr.findFeaturesAtColumn(seq, 14);
     assertEquals(features.size(), 3);
     assertTrue(features.contains(sf2));
     assertTrue(features.contains(sf3));
@@ -214,7 +223,8 @@ public class FeatureRendererTest
     data[2] = new Object[] { "Type3", colour, true };
     data[3] = new Object[] { "Disulphide Bond", colour, true };
     fr.setFeaturePriority(data);
-    features = fr.findFeaturesAtRes(seq, 12);
+
+    features = fr.findFeaturesAtColumn(seq, 15);
     assertEquals(features.size(), 5); // no sf2
     assertTrue(features.contains(sf3));
     assertTrue(features.contains(sf4));
@@ -226,10 +236,20 @@ public class FeatureRendererTest
      * make "Group2" not displayed
      */
     fr.setGroupVisibility("Group2", false);
-    features = fr.findFeaturesAtRes(seq, 12);
+
+    features = fr.findFeaturesAtColumn(seq, 15);
     assertEquals(features.size(), 3); // no sf2, sf3, sf6
     assertTrue(features.contains(sf4));
     assertTrue(features.contains(sf5));
     assertTrue(features.contains(sf7));
+
+    // features 'at' a gap between b and c
+    // - returns enclosing feature BC but not contact feature B/C
+    features = fr.findFeaturesAtColumn(seq, 4);
+    assertEquals(features.size(), 1);
+    assertTrue(features.contains(sf8));
+    features = fr.findFeaturesAtColumn(seq, 5);
+    assertEquals(features.size(), 1);
+    assertTrue(features.contains(sf8));
   }
 }