X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2Ffeatures%2FFeatureStoreTest.java;h=db0fabf6567bd4eb3626ed9f8bc27b66a0428e65;hb=b690e55cf50b5d253ec5545ee21cd93fc381f8c1;hp=bc179f69ca6f6857fc29de23415ef4b9817bd8fc;hpb=0d7a6ba0b6862fa666712d49a4f8d5e45fe4ff85;p=jalview.git diff --git a/test/jalview/datamodel/features/FeatureStoreTest.java b/test/jalview/datamodel/features/FeatureStoreTest.java index bc179f6..db0fabf 100644 --- a/test/jalview/datamodel/features/FeatureStoreTest.java +++ b/test/jalview/datamodel/features/FeatureStoreTest.java @@ -4,6 +4,7 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; import jalview.datamodel.SequenceFeature; @@ -34,21 +35,21 @@ public class FeatureStoreTest fs.addFeature(new SequenceFeature("", "", 15, 25, Float.NaN, null)); fs.addFeature(new SequenceFeature("", "", 20, 35, Float.NaN, null)); - List overlaps = fs.findOverlappingFeatures(1, 9); + List overlaps = fs.findFeatures(1, 9); assertTrue(overlaps.isEmpty()); - overlaps = fs.findOverlappingFeatures(8, 10); + overlaps = fs.findFeatures(8, 10); assertEquals(overlaps.size(), 2); assertEquals(overlaps.get(0).getEnd(), 20); assertEquals(overlaps.get(1).getEnd(), 20); - overlaps = fs.findOverlappingFeatures(12, 16); + overlaps = fs.findFeatures(12, 16); assertEquals(overlaps.size(), 3); assertEquals(overlaps.get(0).getEnd(), 20); assertEquals(overlaps.get(1).getEnd(), 20); assertEquals(overlaps.get(2).getEnd(), 25); - overlaps = fs.findOverlappingFeatures(33, 33); + overlaps = fs.findFeatures(33, 33); assertEquals(overlaps.size(), 1); assertEquals(overlaps.get(0).getEnd(), 35); } @@ -66,25 +67,25 @@ public class FeatureStoreTest fs.addFeature(sf4); SequenceFeature sf5 = addFeature(fs, 35, 36); - List overlaps = fs.findOverlappingFeatures(1, 9); + List overlaps = fs.findFeatures(1, 9); assertTrue(overlaps.isEmpty()); - overlaps = fs.findOverlappingFeatures(10, 15); + overlaps = fs.findFeatures(10, 15); assertEquals(overlaps.size(), 2); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf2)); - overlaps = fs.findOverlappingFeatures(45, 60); + overlaps = fs.findFeatures(45, 60); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf1)); - overlaps = fs.findOverlappingFeatures(32, 38); + overlaps = fs.findFeatures(32, 38); assertEquals(overlaps.size(), 3); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf2)); assertTrue(overlaps.contains(sf5)); - overlaps = fs.findOverlappingFeatures(15, 25); + overlaps = fs.findFeatures(15, 25); assertEquals(overlaps.size(), 4); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf2)); @@ -103,30 +104,30 @@ public class FeatureStoreTest SequenceFeature sf5 = addFeature(fs, 60, 100); SequenceFeature sf6 = addFeature(fs, 70, 70); - List overlaps = fs.findOverlappingFeatures(200, 200); + List overlaps = fs.findFeatures(200, 200); assertTrue(overlaps.isEmpty()); - overlaps = fs.findOverlappingFeatures(1, 9); + overlaps = fs.findFeatures(1, 9); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf2)); - overlaps = fs.findOverlappingFeatures(5, 18); + overlaps = fs.findFeatures(5, 18); assertEquals(overlaps.size(), 2); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf2)); - overlaps = fs.findOverlappingFeatures(30, 40); + overlaps = fs.findFeatures(30, 40); assertEquals(overlaps.size(), 3); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf3)); assertTrue(overlaps.contains(sf4)); - overlaps = fs.findOverlappingFeatures(80, 90); + overlaps = fs.findFeatures(80, 90); assertEquals(overlaps.size(), 2); assertTrue(overlaps.contains(sf4)); assertTrue(overlaps.contains(sf5)); - overlaps = fs.findOverlappingFeatures(68, 70); + overlaps = fs.findFeatures(68, 70); assertEquals(overlaps.size(), 3); assertTrue(overlaps.contains(sf4)); assertTrue(overlaps.contains(sf5)); @@ -161,38 +162,132 @@ public class FeatureStoreTest /* * neither contact point in range */ - List overlaps = fs.findOverlappingFeatures(1, 9); + List overlaps = fs.findFeatures(1, 9); assertTrue(overlaps.isEmpty()); /* * neither contact point in range */ - overlaps = fs.findOverlappingFeatures(11, 19); + overlaps = fs.findFeatures(11, 19); assertTrue(overlaps.isEmpty()); /* * first contact point in range */ - overlaps = fs.findOverlappingFeatures(5, 15); + overlaps = fs.findFeatures(5, 15); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf)); /* * second contact point in range */ - overlaps = fs.findOverlappingFeatures(15, 25); + overlaps = fs.findFeatures(15, 25); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf)); /* * both contact points in range */ - overlaps = fs.findOverlappingFeatures(5, 25); + overlaps = fs.findFeatures(5, 25); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf)); } @Test(groups = "Functional") + public void testGetPositionalFeatures_withResultList() + { + FeatureStore store = newFeatureStore(); + SequenceFeature sf1 = new SequenceFeature("Metal", "desc", 10, 20, + Float.NaN, null); + store.addFeature(sf1); + // contact feature + SequenceFeature sf2 = new SequenceFeature("Disulphide bond", "desc", 18, + 45, Float.NaN, null); + store.addFeature(sf2); + + List features = new ArrayList<>(); + store.getPositionalFeatures(features); + assertEquals(features.size(), 2); + assertTrue(features.contains(sf1)); + assertTrue(features.contains(sf2)); + + /* + * no check for duplicates + */ + features.remove(sf1); + assertEquals(features.size(), 1); + assertTrue(features.contains(sf2)); + store.getPositionalFeatures(features); + assertEquals(features.size(), 3); + assertTrue(features.contains(sf1)); + assertTrue(features.contains(sf2)); // two copies now + features.remove(sf2); + assertTrue(features.contains(sf2)); // one copy left + assertEquals(features.size(), 2); + + /* + * null argument throws exception + */ + try + { + store.getPositionalFeatures(null); + fail("expected exception"); + } catch (NullPointerException e) + { + // expected + } + } + + @Test(groups = "Functional") + public void testGetNonPositionalFeatures() + { + FeatureStore store = newFeatureStore(); + List features = store.getNonPositionalFeatures(); + assertTrue(features.isEmpty()); + + SequenceFeature sf1 = new SequenceFeature("Metal", "desc", 10, 20, + Float.NaN, null); + store.addFeature(sf1); + assertTrue(features.isEmpty()); + + SequenceFeature sf2 = new SequenceFeature("Metal", "desc", 0, 0, + Float.NaN, null); + store.addFeature(sf2); + features = store.getNonPositionalFeatures(); + assertEquals(features.size(), 1); + assertTrue(features.contains(sf2)); + + /* + * with result list argument + */ + features.clear(); + store.getNonPositionalFeatures(features); + assertEquals(features.size(), 1); + assertTrue(features.contains(sf2)); + + /* + * no check for duplicates + */ + store.getNonPositionalFeatures(features); + assertEquals(features.size(), 2); + assertTrue(features.contains(sf2)); // two copies + features.remove(sf2); + assertTrue(features.contains(sf2)); + + /* + * null argument throws exception + */ + try + { + store.getNonPositionalFeatures(null); + fail("expected exception"); + } catch (NullPointerException e) + { + // expected + } + } + + @Test(groups = "Functional") public void testGetPositionalFeatures() { FeatureStore store = newFeatureStore(); @@ -902,7 +997,7 @@ public class FeatureStoreTest SequenceFeature sf2 = addFeature(fs, 150, 250); List overlaps = new ArrayList<>(); - List result = fs.findOverlappingFeatures(200, 200, + List result = fs.findFeatures(200, 200, overlaps); assertSame(result, overlaps); assertEquals(result.size(), 1); @@ -912,7 +1007,7 @@ public class FeatureStoreTest /* * if no list supplied, method creates one */ - result = fs.findOverlappingFeatures(200, 200, null); + result = fs.findFeatures(200, 200, null); assertEquals(result.size(), 1); assertTrue(result.contains(sf2)); assertFalse(result.contains(sf1));