public class SequenceFeaturesTest
{
@Test(groups = "Functional")
- public void testGetFeatures()
+ public void testGetPositionalFeatures()
{
SequenceFeatures store = new SequenceFeatures();
SequenceFeature sf1 = new SequenceFeature("Metal", "desc", 10, 20,
store.add(sf9);
/*
- * get all features
+ * get all positional features
*/
- List<SequenceFeature> features = store.getFeatures();
- assertEquals(features.size(), 9);
+ List<SequenceFeature> features = store.getPositionalFeatures();
+ assertEquals(features.size(), 8);
assertTrue(features.contains(sf1));
assertTrue(features.contains(sf2));
assertTrue(features.contains(sf3));
assertTrue(features.contains(sf4));
assertTrue(features.contains(sf5));
- assertTrue(features.contains(sf6));
+ assertFalse(features.contains(sf6)); // non-positional
assertTrue(features.contains(sf7));
assertTrue(features.contains(sf8));
assertTrue(features.contains(sf9));
/*
* get features by type
*/
- assertTrue(store.getFeatures(null).isEmpty());
- assertTrue(store.getFeatures("Cath").isEmpty());
- assertTrue(store.getFeatures("METAL").isEmpty());
+ assertTrue(store.getPositionalFeatures(null).isEmpty());
+ assertTrue(store.getPositionalFeatures("Cath").isEmpty());
+ assertTrue(store.getPositionalFeatures("METAL").isEmpty());
- features = store.getFeatures("Metal");
- assertEquals(features.size(), 6);
+ features = store.getPositionalFeatures("Metal");
+ assertEquals(features.size(), 5);
assertTrue(features.contains(sf1));
assertTrue(features.contains(sf2));
assertTrue(features.contains(sf3));
assertTrue(features.contains(sf4));
assertTrue(features.contains(sf5));
- assertTrue(features.contains(sf6));
+ assertFalse(features.contains(sf6));
- features = store.getFeatures("Disulphide bond");
+ features = store.getPositionalFeatures("Disulphide bond");
assertEquals(features.size(), 1);
assertTrue(features.contains(sf7));
- features = store.getFeatures("Pfam");
+ features = store.getPositionalFeatures("Pfam");
assertEquals(features.size(), 2);
assertTrue(features.contains(sf8));
assertTrue(features.contains(sf9));
{
SequenceFeatures sf = new SequenceFeatures();
SequenceFeature sf1 = addFeature(sf, "Pfam", 10, 50);
- assertTrue(sf.getFeatures().contains(sf1));
+ assertTrue(sf.getPositionalFeatures().contains(sf1));
assertFalse(sf.delete(null));
SequenceFeature sf2 = new SequenceFeature("Cath", "", 10, 15, 0f, null);
assertFalse(sf.delete(sf2)); // not added, can't delete it
assertTrue(sf.delete(sf1));
- assertTrue(sf.getFeatures().isEmpty());
+ assertTrue(sf.getPositionalFeatures().isEmpty());
}
@Test(groups = "Functional")
assertFalse(sf.hasFeatures());
}
+ /**
+ * Tests for the method that gets feature groups for positional or
+ * non-positional features
+ */
@Test(groups = "Functional")
public void testGetFeatureGroups()
{
SequenceFeatures sf = new SequenceFeatures();
- assertTrue(sf.getFeatureGroups().isEmpty());
+ assertTrue(sf.getFeatureGroups(true).isEmpty());
+ assertTrue(sf.getFeatureGroups(false).isEmpty());
+
+ /*
+ * add a non-positional feature (begin/end = 0/0)
+ */
+ SequenceFeature sfx = new SequenceFeature("AType", "Desc", 0, 0, 0f,
+ "AGroup");
+ sf.add(sfx);
+ Set<String> groups = sf.getFeatureGroups(true); // for positional
+ assertTrue(groups.isEmpty());
+ groups = sf.getFeatureGroups(false); // for non-positional
+ assertEquals(groups.size(), 1);
+ assertTrue(groups.contains("AGroup"));
+ /*
+ * add, then delete, more non-positional features of different types
+ */
+ SequenceFeature sfy = new SequenceFeature("AnotherType", "Desc", 0, 0,
+ 0f,
+ "AnotherGroup");
+ sf.add(sfy);
+ SequenceFeature sfz = new SequenceFeature("AThirdType", "Desc", 0, 0,
+ 0f,
+ null);
+ sf.add(sfz);
+ groups = sf.getFeatureGroups(false);
+ assertEquals(groups.size(), 3);
+ assertTrue(groups.contains("AGroup"));
+ assertTrue(groups.contains("AnotherGroup"));
+ assertTrue(groups.contains(null)); // null is a possible group
+ sf.delete(sfz);
+ sf.delete(sfy);
+ groups = sf.getFeatureGroups(false);
+ assertEquals(groups.size(), 1);
+ assertTrue(groups.contains("AGroup"));
+
+ /*
+ * add positional features
+ */
SequenceFeature sf1 = new SequenceFeature("Pfam", "Desc", 10, 50, 0f,
"PfamGroup");
sf.add(sf1);
- Set<String> groups = sf.getFeatureGroups();
+ groups = sf.getFeatureGroups(true);
assertEquals(groups.size(), 1);
assertTrue(groups.contains("PfamGroup"));
+ groups = sf.getFeatureGroups(false); // non-positional unchanged
+ assertEquals(groups.size(), 1);
+ assertTrue(groups.contains("AGroup"));
SequenceFeature sf2 = new SequenceFeature("Cath", "Desc", 10, 50, 0f,
null);
sf.add(sf2);
- groups = sf.getFeatureGroups();
+ groups = sf.getFeatureGroups(true);
assertEquals(groups.size(), 2);
assertTrue(groups.contains("PfamGroup"));
assertTrue(groups.contains(null));
sf.delete(sf1);
sf.delete(sf2);
- assertTrue(sf.getFeatureGroups().isEmpty());
+ assertTrue(sf.getFeatureGroups(true).isEmpty());
SequenceFeature sf3 = new SequenceFeature("CDS", "", 10, 50, 0f,
"Ensembl");
SequenceFeature sf4 = new SequenceFeature("exon", "", 10, 50, 0f,
"Ensembl");
sf.add(sf4);
- groups = sf.getFeatureGroups();
+ groups = sf.getFeatureGroups(true);
assertEquals(groups.size(), 1);
assertTrue(groups.contains("Ensembl"));
* but still have one in exon features
*/
sf.delete(sf3);
- groups = sf.getFeatureGroups();
+ groups = sf.getFeatureGroups(true);
assertEquals(groups.size(), 1);
assertTrue(groups.contains("Ensembl"));
+
+ /*
+ * delete the last non-positional feature
+ */
+ sf.delete(sfx);
+ groups = sf.getFeatureGroups(false);
+ assertTrue(groups.isEmpty());
}
@Test(groups = "Functional")
public void testGetFeatureTypesForGroups()
{
SequenceFeatures sf = new SequenceFeatures();
- assertTrue(sf.getFeatureTypesForGroups((String) null).isEmpty());
+ assertTrue(sf.getFeatureTypesForGroups(true, (String) null).isEmpty());
/*
* add feature with group = "Uniprot", type = "helix"
SequenceFeature sf1 = new SequenceFeature("helix", "Desc", 10, 50, 0f,
groupUniprot);
sf.add(sf1);
- Set<String> groups = sf.getFeatureTypesForGroups(groupUniprot);
+ Set<String> groups = sf.getFeatureTypesForGroups(true, groupUniprot);
assertEquals(groups.size(), 1);
assertTrue(groups.contains("helix"));
- assertTrue(sf.getFeatureTypesForGroups((String) null).isEmpty());
+ assertTrue(sf.getFeatureTypesForGroups(true, (String) null).isEmpty());
/*
* add feature with group = "Uniprot", type = "strand"
SequenceFeature sf2 = new SequenceFeature("strand", "Desc", 10, 50, 0f,
groupUniprot);
sf.add(sf2);
- groups = sf.getFeatureTypesForGroups(groupUniprot);
+ groups = sf.getFeatureTypesForGroups(true, groupUniprot);
assertEquals(groups.size(), 2);
assertTrue(groups.contains("helix"));
assertTrue(groups.contains("strand"));
* delete the "strand" Uniprot feature - still have "helix"
*/
sf.delete(sf2);
- groups = sf.getFeatureTypesForGroups(groupUniprot);
+ groups = sf.getFeatureTypesForGroups(true, groupUniprot);
assertEquals(groups.size(), 1);
assertTrue(groups.contains("helix"));
* delete the "helix" Uniprot feature - none left
*/
sf.delete(sf1);
- assertTrue(sf.getFeatureTypesForGroups(groupUniprot).isEmpty());
+ assertTrue(sf.getFeatureTypesForGroups(true, groupUniprot).isEmpty());
/*
* add some null group features
SequenceFeature sf4 = new SequenceFeature("turn", "Desc", 10, 50, 0f,
null);
sf.add(sf4);
- groups = sf.getFeatureTypesForGroups((String) null);
+ groups = sf.getFeatureTypesForGroups(true, (String) null);
assertEquals(groups.size(), 2);
assertTrue(groups.contains("strand"));
assertTrue(groups.contains("turn"));
SequenceFeature sf6 = new SequenceFeature("turn", "Desc", 10, 50, 0f,
"Scop");
sf.add(sf6);
- groups = sf.getFeatureTypesForGroups("Cath");
+ groups = sf.getFeatureTypesForGroups(true, "Cath");
assertEquals(groups.size(), 1);
assertTrue(groups.contains("strand"));
- groups = sf.getFeatureTypesForGroups("Scop");
+ groups = sf.getFeatureTypesForGroups(true, "Scop");
assertEquals(groups.size(), 1);
assertTrue(groups.contains("turn"));
- groups = sf.getFeatureTypesForGroups("Cath", "Scop");
+ groups = sf.getFeatureTypesForGroups(true, "Cath", "Scop");
assertEquals(groups.size(), 2);
assertTrue(groups.contains("turn"));
assertTrue(groups.contains("strand"));
// alternative vararg syntax
- groups = sf.getFeatureTypesForGroups(new String[] { "Cath", "Scop" });
+ groups = sf.getFeatureTypesForGroups(true, new String[] { "Cath",
+ "Scop" });
assertEquals(groups.size(), 2);
assertTrue(groups.contains("turn"));
assertTrue(groups.contains("strand"));