X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureColourFinderTest.java;h=59566edf45215b76f47b97d06df28e6e74a099e0;hb=45715055c536e1c31020b8ab7ce30b2e28f3aafd;hp=6074e851bd82b9832b2f1d92a6abcdde2ccf256d;hpb=1a4abdb42e66e36aff0cb6f0e151624727eb2885;p=jalview.git diff --git a/test/jalview/renderer/seqfeatures/FeatureColourFinderTest.java b/test/jalview/renderer/seqfeatures/FeatureColourFinderTest.java index 6074e85..59566ed 100644 --- a/test/jalview/renderer/seqfeatures/FeatureColourFinderTest.java +++ b/test/jalview/renderer/seqfeatures/FeatureColourFinderTest.java @@ -1,6 +1,8 @@ package jalview.renderer.seqfeatures; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; import jalview.api.FeatureColourI; import jalview.datamodel.SequenceFeature; @@ -14,8 +16,8 @@ import jalview.schemes.FeatureColour; import java.awt.Color; -import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** @@ -47,7 +49,7 @@ public class FeatureColourFinderTest private FeatureRenderer fr; - @BeforeClass(alwaysRun = true) + @BeforeTest(alwaysRun = true) public void setUp() { // aligned column 8 is sequence position 6 @@ -61,7 +63,8 @@ public class FeatureColourFinderTest } /** - * Clear down any sequence features before each test + * Clear down any sequence features before each test (not as easy as it + * sounds...) */ @BeforeMethod(alwaysRun = true) public void setUpBeforeTest() @@ -83,6 +86,9 @@ public class FeatureColourFinderTest { fr.setGroupVisibility(group, true); } + + fr.clearRenderOrder(); + av.setShowSequenceFeatures(true); } @Test(groups = "Functional") @@ -327,10 +333,12 @@ public class FeatureColourFinderTest /* * the FeatureSettings transparency slider has range 0-70 which * corresponds to a transparency value of 1 - 0.3 + * A value of 0.4 gives a combination of + * 0.4 * red(255, 0, 0) + 0.6 * cyan(0, 255, 255) = (102, 153, 153) */ - fr.setTransparency(0.5f); - Color c = finder.findFeatureColour(Color.blue, seq, 10); - assertEquals(c, new Color(85, 170, 0)); + fr.setTransparency(0.4f); + Color c = finder.findFeatureColour(Color.cyan, seq, 10); + assertEquals(c, new Color(102, 153, 153)); } @Test(groups = "Functional") @@ -349,30 +357,92 @@ public class FeatureColourFinderTest av.setShowSequenceFeatures(true); /* - * Domain (green(0, 255, 0)) rendered above Metal (red(255, 0, 0)) + * Domain (green) rendered above Metal (red) above background (cyan) + * 1) 0.6 * red(255, 0, 0) + 0.4 * cyan(0, 255, 255) = (153, 102, 102) + * 2) 0.6* green(0, 255, 0) + 0.4 * (153, 102, 102) = (61, 194, 41) rounded */ - fr.setTransparency(0.5f); - Color c = finder.findFeatureColour(Color.blue, seq, 10); - assertEquals(c, new Color(85, 170, 0)); + fr.setTransparency(0.6f); + Color c = finder.findFeatureColour(Color.cyan, seq, 10); + assertEquals(c, new Color(61, 194, 41)); /* * now promote Metal above Domain * - currently no way other than mimicking reordering of * table in Feature Settings + * Metal (red) rendered above Domain (green) above background (cyan) + * 1) 0.6 * green(0, 255, 0) + 0.4 * cyan(0, 255, 255) = (0, 255, 102) + * 2) 0.6* red(255, 0, 0) + 0.4 * (0, 255, 102) = (153, 102, 41) rounded */ Object[][] data = new Object[2][]; data[0] = new Object[] { "Metal", red, true }; data[1] = new Object[] { "Domain", green, true }; fr.setFeaturePriority(data); - c = finder.findFeatureColour(Color.blue, seq, 10); - assertEquals(c, new Color(153, 102, 0)); + c = finder.findFeatureColour(Color.cyan, seq, 10); + assertEquals(c, new Color(153, 102, 41)); /* * ..and turn off display of Metal + * Domain (green) above background (pink) + * 0.6 * green(0, 255, 0) + 0.4 * pink(255, 175, 175) = (102, 223, 70) */ data[0][2] = false; fr.setFeaturePriority(data); - c = finder.findFeatureColour(Color.blue, seq, 10); - assertEquals(c, Color.green); + c = finder.findFeatureColour(Color.pink, seq, 10); + assertEquals(c, new Color(102, 223, 70)); + } + + @Test(groups = "Functional") + public void testNoFeaturesDisplayed() + { + /* + * no features on alignment to render + */ + assertTrue(finder.noFeaturesDisplayed()); + + /* + * add a feature + * it will be automatically set visible but we leave + * the viewport configured not to show features + */ + av.setShowSequenceFeatures(false); + seq.addSequenceFeature(new SequenceFeature("Metal", "Metal", 2, 12, + Float.NaN, "MetalGroup")); + FeatureColour red = new FeatureColour(Color.red); + fr.setColour("Metal", red); + fr.featuresAdded(); + assertTrue(finder.noFeaturesDisplayed()); + + /* + * turn on feature display + */ + av.setShowSequenceFeatures(true); + assertFalse(finder.noFeaturesDisplayed()); + + /* + * turn off display of Metal + */ + Object[][] data = new Object[1][]; + data[0] = new Object[] { "Metal", red, false }; + fr.setFeaturePriority(data); + assertTrue(finder.noFeaturesDisplayed()); + + /* + * turn display of Metal back on + */ + fr.setVisible("Metal"); + assertFalse(finder.noFeaturesDisplayed()); + + /* + * turn off MetalGroup - has no effect here since the group of a + * sequence feature instance is independent of its type + */ + fr.setGroupVisibility("MetalGroup", false); + assertFalse(finder.noFeaturesDisplayed()); + + /* + * a finder with no feature renderer + */ + FeatureColourFinder finder2 = new FeatureColourFinder(null); + assertTrue(finder2.noFeaturesDisplayed()); } }