X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=test%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureRendererTest.java;h=723f3b8c9dcf3cc7e8404cc1d0bf0908bfda2801;hp=ba8b581b945b2e83d3dffded6dc2f917df90b5f1;hb=3c8a25936a2d805e7e3d7ab82f83b13135406d18;hpb=e42eed3a0089a8a064560df4cf17a5021fd1e16a diff --git a/test/jalview/renderer/seqfeatures/FeatureRendererTest.java b/test/jalview/renderer/seqfeatures/FeatureRendererTest.java index ba8b581..723f3b8 100644 --- a/test/jalview/renderer/seqfeatures/FeatureRendererTest.java +++ b/test/jalview/renderer/seqfeatures/FeatureRendererTest.java @@ -328,18 +328,18 @@ public class FeatureRendererTest SequenceI seq = av.getAlignment().getSequenceAt(0); SequenceFeature sf1 = new SequenceFeature("Cath", "", 6, 8, Float.NaN, "group1"); - seq.addSequenceFeature(sf1); SequenceFeature sf2 = new SequenceFeature("Cath", "", 5, 11, 2f, "group2"); - seq.addSequenceFeature(sf2); SequenceFeature sf3 = new SequenceFeature("Cath", "", 5, 11, 3f, "group3"); - seq.addSequenceFeature(sf3); SequenceFeature sf4 = new SequenceFeature("Cath", "", 6, 8, 4f, "group4"); - seq.addSequenceFeature(sf4); SequenceFeature sf5 = new SequenceFeature("Cath", "", 6, 9, 5f, "group4"); + seq.addSequenceFeature(sf1); + seq.addSequenceFeature(sf2); + seq.addSequenceFeature(sf3); + seq.addSequenceFeature(sf4); seq.addSequenceFeature(sf5); fr.findAllFeatures(true); @@ -365,17 +365,17 @@ public class FeatureRendererTest assertTrue(features.contains(sf5)); /* - * hide groups 2 and 3 makes no difference to this method + * features in hidden groups are removed */ fr.setGroupVisibility("group2", false); fr.setGroupVisibility("group3", false); features = seq.getSequenceFeatures(); fr.filterFeaturesForDisplay(features); - assertEquals(features.size(), 3); + assertEquals(features.size(), 2); assertTrue(features.contains(sf1) || features.contains(sf4)); assertFalse(features.contains(sf1) && features.contains(sf4)); - assertTrue(features.contains(sf2) || features.contains(sf3)); - assertFalse(features.contains(sf2) && features.contains(sf3)); + assertFalse(features.contains(sf2)); + assertFalse(features.contains(sf3)); assertTrue(features.contains(sf5)); /* @@ -537,4 +537,71 @@ public class FeatureRendererTest csqData.put("Feature", "ENST01234"); assertEquals(fr.getColour(sf2), expected); } + + @Test(groups = "Functional") + public void testIsVisible() + { + String seqData = ">s1\nMLQGIFPRS\n"; + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(seqData, + DataSourceType.PASTE); + AlignViewportI av = af.getViewport(); + FeatureRenderer fr = new FeatureRenderer(av); + SequenceI seq = av.getAlignment().getSequenceAt(0); + SequenceFeature sf = new SequenceFeature("METAL", "Desc", 10, 10, 1f, + "Group"); + sf.setValue("AC", "11"); + sf.setValue("CLIN_SIG", "Likely Pathogenic"); + seq.addSequenceFeature(sf); + + assertFalse(fr.isVisible(null)); + + /* + * initial state FeatureRenderer hasn't 'found' feature + * and so its feature type has not yet been set visible + */ + assertFalse(fr.getDisplayedFeatureCols().containsKey("METAL")); + assertFalse(fr.isVisible(sf)); + + fr.findAllFeatures(true); + assertTrue(fr.isVisible(sf)); + + /* + * feature group not visible + */ + fr.setGroupVisibility("Group", false); + assertFalse(fr.isVisible(sf)); + fr.setGroupVisibility("Group", true); + assertTrue(fr.isVisible(sf)); + + /* + * feature score outwith colour threshold (score > 2) + */ + FeatureColourI fc = new FeatureColour(null, Color.white, Color.black, + Color.white, 0, 10); + fc.setAboveThreshold(true); + fc.setThreshold(2f); + fr.setColour("METAL", fc); + assertFalse(fr.isVisible(sf)); // score 1 is not above threshold 2 + fc.setBelowThreshold(true); + assertTrue(fr.isVisible(sf)); // score 1 is below threshold 2 + + /* + * colour with threshold on attribute AC (value is 11) + */ + fc.setAttributeName("AC"); + assertFalse(fr.isVisible(sf)); // value 11 is not below threshold 2 + fc.setAboveThreshold(true); + assertTrue(fr.isVisible(sf)); // value 11 is above threshold 2 + + fc.setAttributeName("AF"); // attribute AF is absent in sf + assertTrue(fr.isVisible(sf)); // feature is not excluded by threshold + + FeatureMatcherSetI filter = new FeatureMatcherSet(); + filter.and(FeatureMatcher.byAttribute(Condition.Contains, "pathogenic", + "CLIN_SIG")); + fr.setFeatureFilter("METAL", filter); + assertTrue(fr.isVisible(sf)); // feature matches filter + filter.and(FeatureMatcher.byScore(Condition.LE, "0.4")); + assertFalse(fr.isVisible(sf)); // feature doesn't match filter + } }