X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeaturesTest.java;h=e979f5108ac4836a2af30f2f04f518688be2bfc8;hb=942cc6dcee175123aefd418a040d7fc6c7e8f6c5;hp=3f0eb9a21f18753eeaa9bf2cbb2bf322175f0a00;hpb=5fc820296bd27badf71036b9d79980277d1dd095;p=jalview.git diff --git a/test/jalview/datamodel/features/SequenceFeaturesTest.java b/test/jalview/datamodel/features/SequenceFeaturesTest.java index 3f0eb9a..e979f51 100644 --- a/test/jalview/datamodel/features/SequenceFeaturesTest.java +++ b/test/jalview/datamodel/features/SequenceFeaturesTest.java @@ -13,10 +13,10 @@ import java.util.List; import java.util.Map; import java.util.Set; -import junit.extensions.PA; - import org.testng.annotations.Test; +import junit.extensions.PA; + public class SequenceFeaturesTest { @Test(groups = "Functional") @@ -1005,39 +1005,53 @@ public class SequenceFeaturesTest assertTrue(store.getFeaturesByOntology(new String[] {}).isEmpty()); assertTrue(store.getFeaturesByOntology((String[]) null).isEmpty()); - SequenceFeature sf1 = new SequenceFeature("transcript", "desc", 10, 20, + SequenceFeature transcriptFeature = new SequenceFeature("transcript", "desc", 10, 20, Float.NaN, null); - store.add(sf1); + store.add(transcriptFeature); - // mRNA isA transcript; added here 'as if' non-positional - // just to show that non-positional features are included in results - SequenceFeature sf2 = new SequenceFeature("mRNA", "desc", 0, 0, + /* + * mRNA is a sub-type of transcript; added here 'as if' non-positional + * just to show that non-positional features are included in results + */ + SequenceFeature mrnaFeature = new SequenceFeature("mRNA", "desc", 0, 0, Float.NaN, null); - store.add(sf2); + store.add(mrnaFeature); - SequenceFeature sf3 = new SequenceFeature("Pfam", "desc", 30, 40, + SequenceFeature pfamFeature = new SequenceFeature("Pfam", "desc", 30, 40, Float.NaN, null); - store.add(sf3); + store.add(pfamFeature); + /* + * "transcript" matches both itself and the sub-term "mRNA" + */ features = store.getFeaturesByOntology("transcript"); assertEquals(features.size(), 2); - assertTrue(features.contains(sf1)); - assertTrue(features.contains(sf2)); + assertTrue(features.contains(transcriptFeature)); + assertTrue(features.contains(mrnaFeature)); + /* + * "mRNA" matches itself but not parent term "transcript" + */ features = store.getFeaturesByOntology("mRNA"); assertEquals(features.size(), 1); - assertTrue(features.contains(sf2)); + assertTrue(features.contains(mrnaFeature)); + /* + * "pfam" is not an SO term but is included as an exact match + */ features = store.getFeaturesByOntology("mRNA", "Pfam"); assertEquals(features.size(), 2); - assertTrue(features.contains(sf2)); - assertTrue(features.contains(sf3)); + assertTrue(features.contains(mrnaFeature)); + assertTrue(features.contains(pfamFeature)); + + features = store.getFeaturesByOntology("sequence_variant"); + assertTrue(features.isEmpty()); } @Test(groups = "Functional") public void testSortFeatures() { - List sfs = new ArrayList(); + List sfs = new ArrayList<>(); SequenceFeature sf1 = new SequenceFeature("Pfam", "desc", 30, 80, Float.NaN, null); sfs.add(sf1); @@ -1247,4 +1261,87 @@ public class SequenceFeaturesTest 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 overlaps = new ArrayList<>(); + List 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)); + } + + @Test(groups = "Functional") + public void testHasFeatures_ofType() + { + SequenceFeaturesI sf = new SequenceFeatures(); + assertFalse(sf.hasFeatures("Pfam")); + + SequenceFeature sf1 = addFeature(sf, "Pfam", 10, 50); + assertTrue(sf.hasFeatures("Pfam")); + + sf.delete(sf1); + assertFalse(sf.hasFeatures("Pfam")); + } }