JAL-2483 use SequenceFeatures to look up groups, types, feature lengths
[jalview.git] / test / jalview / datamodel / features / FeatureStoreTest.java
index e4bf122..6e30990 100644 (file)
@@ -478,6 +478,7 @@ public class FeatureStoreTest
   {
     FeatureStore fs = new FeatureStore();
     assertTrue(fs.getFeatureGroups(true).isEmpty());
+    assertTrue(fs.getFeatureGroups(false).isEmpty());
 
     SequenceFeature sf1 = new SequenceFeature("Cath", "desc", 10, 20, 1f, "group1");
     fs.addFeature(sf1);
@@ -512,6 +513,7 @@ public class FeatureStoreTest
     assertTrue(groups.contains("group2"));
     assertTrue(groups.contains("Group2")); // case sensitive
     assertTrue(groups.contains(null)); // null allowed
+    assertTrue(fs.getFeatureGroups(false).isEmpty()); // non-positional
 
     fs.delete(sf3);
     groups = fs.getFeatureGroups(true);
@@ -524,6 +526,18 @@ public class FeatureStoreTest
     fs.delete(sf5);
     groups = fs.getFeatureGroups(true);
     assertTrue(groups.isEmpty());
+
+    /*
+     * add non-positional feature
+     */
+    SequenceFeature sf6 = new SequenceFeature("Cath", "desc", 0, 0, 1f,
+            "CathGroup");
+    fs.addFeature(sf6);
+    groups = fs.getFeatureGroups(false);
+    assertEquals(groups.size(), 1);
+    assertTrue(groups.contains("CathGroup"));
+    assertTrue(fs.delete(sf6));
+    assertTrue(fs.getFeatureGroups(false).isEmpty());
   }
 
   @Test(groups = "Functional")
@@ -535,19 +549,52 @@ public class FeatureStoreTest
     addFeature(fs, 10, 20); // 11
     assertEquals(fs.getTotalFeatureLength(), 11);
     addFeature(fs, 17, 37); // 21
-    addFeature(fs, 14, 74); // 61
+    SequenceFeature sf1 = addFeature(fs, 14, 74); // 61
     assertEquals(fs.getTotalFeatureLength(), 93);
 
     // non-positional features don't count
-    SequenceFeature sf1 = new SequenceFeature("Cath", "desc", 0, 0, 1f,
+    SequenceFeature sf2 = new SequenceFeature("Cath", "desc", 0, 0, 1f,
             "group1");
-    fs.addFeature(sf1);
+    fs.addFeature(sf2);
     assertEquals(fs.getTotalFeatureLength(), 93);
 
     // contact features count 1
-    SequenceFeature sf2 = new SequenceFeature("disulphide bond", "desc",
+    SequenceFeature sf3 = new SequenceFeature("disulphide bond", "desc",
             15, 35, 1f, "group1");
-    fs.addFeature(sf2);
+    fs.addFeature(sf3);
     assertEquals(fs.getTotalFeatureLength(), 94);
+
+    assertTrue(fs.delete(sf1));
+    assertEquals(fs.getTotalFeatureLength(), 33);
+    assertFalse(fs.delete(sf1));
+    assertEquals(fs.getTotalFeatureLength(), 33);
+    assertTrue(fs.delete(sf2));
+    assertEquals(fs.getTotalFeatureLength(), 33);
+    assertTrue(fs.delete(sf3));
+    assertEquals(fs.getTotalFeatureLength(), 32);
+  }
+
+  @Test(groups = "Functional")
+  public void testGetFeatureLength()
+  {
+    /*
+     * positional feature
+     */
+    SequenceFeature sf1 = new SequenceFeature("Cath", "desc", 10, 20, 1f, "group1");
+    assertEquals(FeatureStore.getFeatureLength(sf1), 11);
+  
+    /*
+     * non-positional feature
+     */
+    SequenceFeature sf2 = new SequenceFeature("Cath", "desc", 0, 0, 1f,
+            "CathGroup");
+    assertEquals(FeatureStore.getFeatureLength(sf2), 0);
+
+    /*
+     * contact feature counts 1
+     */
+    SequenceFeature sf3 = new SequenceFeature("Disulphide Bond", "desc",
+            14, 28, 1f, "AGroup");
+    assertEquals(FeatureStore.getFeatureLength(sf3), 1);
   }
 }