public void testShiftFeatures()
{
SequenceFeatures store = new SequenceFeatures();
- assertFalse(store.shiftFeatures(1));
+ assertFalse(store.shiftFeatures(0, 1));
SequenceFeature sf1 = new SequenceFeature("Cath", "", 2, 5, 0f, null);
store.add(sf1);
/*
* shift features right by 5
*/
- assertTrue(store.shiftFeatures(5));
+ assertTrue(store.shiftFeatures(0, 5));
// non-positional features untouched:
List<SequenceFeature> nonPos = store.getNonPositionalFeatures();
* feature at [7-10] should be removed
* feature at [13-19] should become [1-4]
*/
- assertTrue(store.shiftFeatures(-15));
+ assertTrue(store.shiftFeatures(0, -15));
pos = store.getPositionalFeatures();
assertEquals(pos.size(), 2);
SequenceFeatures.sortFeatures(pos, true);
assertEquals(pos.get(1).getBegin(), 13);
assertEquals(pos.get(1).getEnd(), 22);
assertEquals(pos.get(1).getType(), "Disulfide bond");
+
+ /*
+ * shift right by 4 from column 2
+ * feature at [1-4] should be unchanged
+ * feature at [13-22] should become [17-26]
+ */
+ assertTrue(store.shiftFeatures(2, 4));
+ pos = store.getPositionalFeatures();
+ assertEquals(pos.size(), 2);
+ SequenceFeatures.sortFeatures(pos, true);
+ assertEquals(pos.get(0).getBegin(), 1);
+ assertEquals(pos.get(0).getEnd(), 4);
+ assertEquals(pos.get(0).getType(), "Metal");
+ assertEquals(pos.get(1).getBegin(), 17);
+ assertEquals(pos.get(1).getEnd(), 26);
+ assertEquals(pos.get(1).getType(), "Disulfide bond");
+
+ /*
+ * shift right from column 18
+ * should be no updates
+ */
+ SequenceFeature f1 = pos.get(0);
+ SequenceFeature f2 = pos.get(1);
+ assertFalse(store.shiftFeatures(18, 6));
+ pos = store.getPositionalFeatures();
+ assertEquals(pos.size(), 2);
+ SequenceFeatures.sortFeatures(pos, true);
+ assertSame(pos.get(0), f1);
+ assertSame(pos.get(1), f2);
}
@Test(groups = "Functional")
assertTrue(store.isOntologyTerm("junk", new String[] {}));
assertTrue(store.isOntologyTerm("junk", (String[]) null));
}
+
+ @Test(groups = "Functional")
+ public void testDeleteAll()
+ {
+ SequenceFeaturesI store = new SequenceFeatures();
+ assertFalse(store.hasFeatures());
+ store.deleteAll();
+ assertFalse(store.hasFeatures());
+ store.add(new SequenceFeature("Cath", "Desc", 12, 20, 0f, "Group"));
+ store.add(new SequenceFeature("Pfam", "Desc", 6, 12, 2f, "Group2"));
+ assertTrue(store.hasFeatures());
+ store.deleteAll();
+ assertFalse(store.hasFeatures());
+ }
+
+ @Test(groups = "Functional")
+ public void testFindFeatures_withResultList()
+ {
+ SequenceFeaturesI sf = new SequenceFeatures();
+ SequenceFeature sf1 = addFeature(sf, "Pfam", 10, 50);
+ SequenceFeature sf2 = addFeature(sf, "Pfam", 150, 250);
+
+ /*
+ * findFeatures with result list to append to
+ */
+ List<SequenceFeature> overlaps = new ArrayList<>();
+ List<SequenceFeature> result = sf.findFeatures(200, "Pfam", overlaps);
+ assertSame(result, overlaps);
+ assertEquals(result.size(), 1);
+ assertTrue(result.contains(sf2));
+ assertFalse(result.contains(sf1));
+
+ /*
+ * with no result list - method creates one
+ */
+ result = sf.findFeatures(200, "Pfam", null);
+ assertEquals(result.size(), 1);
+ assertTrue(result.contains(sf2));
+ assertFalse(result.contains(sf1));
+
+ /*
+ * verify the created list is extendable (is not immutable)
+ * notice it may contain duplicates
+ */
+ result = sf.findFeatures(220, "Pfam", result);
+ assertEquals(result.size(), 2);
+ assertSame(result.get(0), sf2); // in input list
+ assertSame(result.get(1), sf2); // duplicate added
+
+ /*
+ * no feature of requested type - with result list
+ */
+ overlaps.clear();
+ result = sf.findFeatures(200, "Rfam", overlaps);
+ assertTrue(result.isEmpty());
+
+ /*
+ * no feature of requested type - with no result list
+ */
+ result = sf.findFeatures(200, "Rfam", null);
+ assertTrue(result.isEmpty());
+
+ /*
+ * verify the created list is extendable (is not immutable)
+ */
+ result = sf.findFeatures(210, "Pfam", result);
+ assertEquals(result.size(), 1);
+ assertTrue(result.contains(sf2));
+ assertFalse(result.contains(sf1));
+ }
}