JAL-2754 Sequence.findFeatures(fromCol, toCol)
[jalview.git] / test / jalview / datamodel / SequenceTest.java
index 4da11eb..7d3fdd2 100644 (file)
@@ -1162,23 +1162,57 @@ public class SequenceTest
     seq.setDatasetSequence(seq2);
   }
 
-  @Test
-  public void testFindPositions()
+  @Test(groups = { "Functional" })
+  public void testFindFeatures()
   {
-    SequenceI sq = new Sequence("Seq", "ABC--DE-F", 8, 13);
-
-    Range range = sq.findPositions(1, 4); // BC
-    assertEquals(new Range(9, 10), range);
-
-    range = sq.findPositions(2, 4); // C
-    assertEquals(new Range(10, 10), range);
-
-    assertNull(sq.findPositions(3, 4)); // all gaps
+    SequenceI sq = new Sequence("test/8-16", "-ABC--DEF--GHI--");
+    sq.createDatasetSequence();
 
-    range = sq.findPositions(2, 6); // CDE
-    assertEquals(new Range(10, 12), range);
+    assertTrue(sq.findFeatures(1, 99).isEmpty());
 
-    range = sq.findPositions(3, 7); // DE
-    assertEquals(new Range(11, 12), range);
+    // add non-positional feature
+    SequenceFeature sf0 = new SequenceFeature("Cath", "desc", 0, 0, 2f,
+            null);
+    sq.addSequenceFeature(sf0);
+    // add feature on BCD
+    SequenceFeature sf1 = new SequenceFeature("Cath", "desc", 9, 11, 2f,
+            null);
+    sq.addSequenceFeature(sf1);
+    // add feature on DE
+    SequenceFeature sf2 = new SequenceFeature("Cath", "desc", 11, 12, 2f,
+            null);
+    sq.addSequenceFeature(sf2);
+    // add contact feature at [B, H]
+    SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", 9,
+            15, 2f,
+            null);
+    sq.addSequenceFeature(sf3);
+    // add contact feature at [F, G]
+    SequenceFeature sf4 = new SequenceFeature("Disulfide Bond", "desc", 13,
+            14, 2f,
+            null);
+    sq.addSequenceFeature(sf4);
+
+    // no features in columns 1-2 (-A)
+    List<SequenceFeature> found = sq.findFeatures(1, 2);
+    assertTrue(found.isEmpty());
+
+    // columns 1-6 (-ABC--) includes BCD and B/H feature but not DE
+    found = sq.findFeatures(1, 6);
+    assertEquals(2, found.size());
+    assertTrue(found.contains(sf1));
+    assertTrue(found.contains(sf3));
+
+    // columns 5-6 (--) includes (enclosing) BCD but not (contact) B/H feature
+    found = sq.findFeatures(5, 6);
+    assertEquals(1, found.size());
+    assertTrue(found.contains(sf1));
+
+    // columns 7-10 (DEF-) includes BCD, DE, F/G but not B/H feature
+    found = sq.findFeatures(7, 10);
+    assertEquals(3, found.size());
+    assertTrue(found.contains(sf1));
+    assertTrue(found.contains(sf2));
+    assertTrue(found.contains(sf4));
   }
 }