JAL-1767 test that changing view association for PCA panel can be restored
[jalview.git] / test / jalview / datamodel / features / SequenceFeaturesTest.java
index b7b52a7..32987b0 100644 (file)
@@ -10,10 +10,13 @@ import jalview.datamodel.SequenceFeature;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.testng.annotations.Test;
 
+import junit.extensions.PA;
+
 public class SequenceFeaturesTest
 {
   @Test(groups = "Functional")
@@ -886,12 +889,15 @@ public class SequenceFeaturesTest
      * no type specified - get all types stored
      * they are returned in keyset (alphabetical) order
      */
-    Iterable<String> types = sf.varargToTypes();
-    Iterator<String> iterator = types.iterator();
+    Map<String, FeatureStore> featureStores = (Map<String, FeatureStore>) PA
+            .getValue(sf, "featureStore");
+
+    Iterable<FeatureStore> types = sf.varargToTypes();
+    Iterator<FeatureStore> iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Cath");
+    assertSame(iterator.next(), featureStores.get("Cath"));
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
 
     /*
@@ -901,9 +907,9 @@ public class SequenceFeaturesTest
     types = sf.varargToTypes(new String[] {});
     iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Cath");
+    assertSame(iterator.next(), featureStores.get("Cath"));
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
 
     /*
@@ -919,9 +925,9 @@ public class SequenceFeaturesTest
     types = sf.varargToTypes((String[]) null);
     iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Cath");
+    assertSame(iterator.next(), featureStores.get("Cath"));
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
 
     /*
@@ -930,29 +936,27 @@ public class SequenceFeaturesTest
     types = sf.varargToTypes("Metal");
     iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
 
     /*
      * two types specified - get sorted alphabetically
      */
-    types = sf.varargToTypes("Metal", "Helix");
+    types = sf.varargToTypes("Metal", "Cath");
     iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Helix");
+    assertSame(iterator.next(), featureStores.get("Cath"));
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
 
     /*
-     * null type included - should get removed
+     * null type included - should be ignored
      */
     types = sf.varargToTypes("Metal", null, "Helix");
     iterator = types.iterator();
     assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Helix");
-    assertTrue(iterator.hasNext());
-    assertEquals(iterator.next(), "Metal");
+    assertSame(iterator.next(), featureStores.get("Metal"));
     assertFalse(iterator.hasNext());
   }
 
@@ -1001,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<SequenceFeature> sfs = new ArrayList<SequenceFeature>();
+    List<SequenceFeature> sfs = new ArrayList<>();
     SequenceFeature sf1 = new SequenceFeature("Pfam", "desc", 30, 80,
             Float.NaN, null);
     sfs.add(sf1);