From fb548a8458941602b0b8b45da5aaf60206e10ec2 Mon Sep 17 00:00:00 2001 From: kiramt Date: Wed, 12 Jul 2017 07:17:25 +0100 Subject: [PATCH] JAL-2588 Added tests --- src/jalview/appletgui/OverviewCanvas.java | 10 +- src/jalview/appletgui/SequenceRenderer.java | 89 +++--------- src/jalview/gui/OverviewCanvas.java | 2 +- src/jalview/gui/SequenceRenderer.java | 113 ++++------------ src/jalview/renderer/OverviewRenderer.java | 91 +------------ src/jalview/renderer/OverviewResColourFinder.java | 55 ++++++++ src/jalview/renderer/ResidueColourFinder.java | 109 +++++++++++++++ test/jalview/gui/SequenceRendererTest.java | 82 ----------- .../renderer/OverviewResColourFinderTest.java | 142 ++++++++++++++++++++ test/jalview/renderer/ResidueColourFinderTest.java | 119 ++++++++++++++++ 10 files changed, 483 insertions(+), 329 deletions(-) create mode 100644 src/jalview/renderer/OverviewResColourFinder.java create mode 100644 src/jalview/renderer/ResidueColourFinder.java delete mode 100644 test/jalview/gui/SequenceRendererTest.java create mode 100644 test/jalview/renderer/OverviewResColourFinderTest.java create mode 100644 test/jalview/renderer/ResidueColourFinderTest.java diff --git a/src/jalview/appletgui/OverviewCanvas.java b/src/jalview/appletgui/OverviewCanvas.java index 2543718..718c15b 100644 --- a/src/jalview/appletgui/OverviewCanvas.java +++ b/src/jalview/appletgui/OverviewCanvas.java @@ -48,10 +48,6 @@ public class OverviewCanvas extends Component private AlignViewport av; - // Can set different properties in this seqCanvas than - // main visible SeqCanvas - private SequenceRenderer sr; - private jalview.renderer.seqfeatures.FeatureRenderer fr; private Frame nullFrame; @@ -65,10 +61,6 @@ public class OverviewCanvas extends Component nullFrame = new Frame(); nullFrame.addNotify(); - sr = new SequenceRenderer(av); - sr.graphics = nullFrame.getGraphics(); - sr.renderGaps = false; - // sr.forOverview = true; fr = new jalview.renderer.seqfeatures.FeatureRenderer(av); } @@ -119,7 +111,7 @@ public class OverviewCanvas extends Component setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); - or = new OverviewRenderer(sr, fr, od, av.getAlignment(), + or = new OverviewRenderer(fr, od, av.getAlignment(), av.getResidueShading()); miniMe = nullFrame.createImage(od.getWidth(), od.getHeight()); offscreen = nullFrame.createImage(od.getWidth(), od.getHeight()); diff --git a/src/jalview/appletgui/SequenceRenderer.java b/src/jalview/appletgui/SequenceRenderer.java index c774a19..516dcc1 100755 --- a/src/jalview/appletgui/SequenceRenderer.java +++ b/src/jalview/appletgui/SequenceRenderer.java @@ -22,7 +22,7 @@ package jalview.appletgui; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; -import jalview.renderer.ResidueShaderI; +import jalview.renderer.ResidueColourFinder; import jalview.renderer.seqfeatures.FeatureColourFinder; import java.awt.Color; @@ -40,17 +40,18 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer boolean renderGaps = true; - SequenceGroup currentSequenceGroup = null; - SequenceGroup[] allGroups = null; Color resBoxColour; Graphics graphics; + ResidueColourFinder resColourFinder; + public SequenceRenderer(AlignViewport av) { this.av = av; + resColourFinder = new ResidueColourFinder(); } /** @@ -67,25 +68,6 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer this.renderGaps = renderGaps; } - protected Color getResidueBoxColour(SequenceI seq, int i) - { - allGroups = av.getAlignment().findAllGroups(seq); - - if (inCurrentSequenceGroup(i)) - { - if (currentSequenceGroup.getDisplayBoxes()) - { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, i); - } - } - else if (av.getShowBoxes()) - { - getBoxColour(av.getResidueShading(), seq, i); - } - - return resBoxColour; - } - /** * Get the residue colour at the given sequence position - as determined by * the sequence group colour (if any), else the colour scheme, possibly @@ -102,26 +84,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer { // TODO replace 8 or so code duplications with calls to this method // (refactored as needed) - Color col = getResidueBoxColour(seq, position); - - if (finder != null) - { - col = finder.findFeatureColour(col, seq, position); - } - return col; - } - - void getBoxColour(ResidueShaderI shader, SequenceI seq, int i) - { - if (shader.getColourScheme() != null) - { - resBoxColour = shader.findColour(seq.getCharAt(i), i, seq); - } - else - { - resBoxColour = Color.white; - } - + return resColourFinder.getResidueColour(av.getResidueShading(), + allGroups, seq, position, finder); } public Color findSequenceColour(SequenceI seq, int i) @@ -158,23 +122,28 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer int curWidth = av.getCharWidth(), avCharWidth = av.getCharWidth(), avCharHeight = av .getCharHeight(); + Color resBoxColour = Color.white; Color tempColour = null; while (i <= end) { resBoxColour = Color.white; if (i < length) { - if (inCurrentSequenceGroup(i)) + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup(allGroups, i); + if (currentSequenceGroup != null) { if (currentSequenceGroup.getDisplayBoxes()) { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); } } else if (av.getShowBoxes()) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); } } @@ -238,7 +207,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer continue; } - if (inCurrentSequenceGroup(i)) + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup(allGroups, i); + if (currentSequenceGroup != null) { if (!currentSequenceGroup.getDisplayText()) { @@ -247,7 +218,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (currentSequenceGroup.getColourText()) { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, i); + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); graphics.setColor(resBoxColour.darker()); } if (currentSequenceGroup.getShowNonconserved()) @@ -264,7 +236,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (av.getColourText()) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); if (av.getShowBoxes()) { graphics.setColor(resBoxColour.darker()); @@ -347,26 +320,6 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer return sequenceChar; } - boolean inCurrentSequenceGroup(int res) - { - if (allGroups == null) - { - return false; - } - - for (int i = 0; i < allGroups.length; i++) - { - if (allGroups[i].getStartRes() <= res - && allGroups[i].getEndRes() >= res) - { - currentSequenceGroup = allGroups[i]; - return true; - } - } - - return false; - } - public void drawHighlightedText(SequenceI seq, int start, int end, int x1, int y1) { diff --git a/src/jalview/gui/OverviewCanvas.java b/src/jalview/gui/OverviewCanvas.java index 9356565..987d6c1 100644 --- a/src/jalview/gui/OverviewCanvas.java +++ b/src/jalview/gui/OverviewCanvas.java @@ -126,7 +126,7 @@ public class OverviewCanvas extends JComponent setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); - or = new OverviewRenderer(sr, fr, od, av.getAlignment(), + or = new OverviewRenderer(fr, od, av.getAlignment(), av.getResidueShading()); miniMe = or.draw(od.getRows(av.getAlignment()), od.getColumns(av.getAlignment())); diff --git a/src/jalview/gui/SequenceRenderer.java b/src/jalview/gui/SequenceRenderer.java index 9874fd2..5bb0de7 100755 --- a/src/jalview/gui/SequenceRenderer.java +++ b/src/jalview/gui/SequenceRenderer.java @@ -23,7 +23,7 @@ package jalview.gui; import jalview.api.AlignViewportI; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; -import jalview.renderer.ResidueShaderI; +import jalview.renderer.ResidueColourFinder; import jalview.renderer.seqfeatures.FeatureColourFinder; import java.awt.Color; @@ -42,12 +42,14 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer SequenceGroup[] allGroups = null; - Color resBoxColour; + // Color resBoxColour; Graphics graphics; boolean monospacedFont; + ResidueColourFinder resColourFinder; + /** * Creates a new SequenceRenderer object * @@ -56,6 +58,7 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer public SequenceRenderer(AlignViewportI viewport) { this.av = viewport; + resColourFinder = new ResidueColourFinder(); } /** @@ -78,27 +81,6 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer this.renderGaps = renderGaps; } - protected Color getResidueBoxColour(SequenceI seq, int i) - { - // rate limiting step when rendering overview for lots of groups - allGroups = av.getAlignment().findAllGroups(seq); - - SequenceGroup currentSequenceGroup = inCurrentSequenceGroup(i); - if (currentSequenceGroup != null) - { - if (currentSequenceGroup.getDisplayBoxes()) - { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, i); - } - } - else if (av.getShowBoxes()) - { - getBoxColour(av.getResidueShading(), seq, i); - } - - return resBoxColour; - } - /** * Get the residue colour at the given sequence position - as determined by * the sequence group colour (if any), else the colour scheme, possibly @@ -113,36 +95,12 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer public Color getResidueColour(final SequenceI seq, int position, FeatureColourFinder finder) { - Color col = getResidueBoxColour(seq, position); - - if (finder != null) - { - col = finder.findFeatureColour(col, seq, position); - } - return col; + return resColourFinder.getResidueColour(av.getResidueShading(), + allGroups, seq, position, + finder); } - /** - * DOCUMENT ME! - * - * @param shader - * DOCUMENT ME! - * @param seq - * DOCUMENT ME! - * @param i - * DOCUMENT ME! - */ - void getBoxColour(ResidueShaderI shader, SequenceI seq, int i) - { - if (shader.getColourScheme() != null) - { - resBoxColour = shader.findColour(seq.getCharAt(i), i, seq); - } - else - { - resBoxColour = Color.white; - } - } + /** * DOCUMENT ME! @@ -200,6 +158,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer public synchronized void drawBoxes(SequenceI seq, int start, int end, int y1) { + Color resBoxColour = Color.white; + if (seq == null) { return; // fix for racecondition @@ -219,18 +179,22 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (i < length) { - SequenceGroup currentSequenceGroup = inCurrentSequenceGroup(i); + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup( + allGroups, i); if (currentSequenceGroup != null) { if (currentSequenceGroup.getDisplayBoxes()) { - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); } } else if (av.getShowBoxes()) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); } } @@ -309,6 +273,7 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer boolean srep = av.isDisplayReferenceSeq(); boolean getboxColour = false; boolean isarep = av.getAlignment().getSeqrep() == seq; + Color resBoxColour = Color.white; for (int i = start; i <= end; i++) { @@ -322,7 +287,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer continue; } - SequenceGroup currentSequenceGroup = inCurrentSequenceGroup(i); + SequenceGroup currentSequenceGroup = resColourFinder + .getCurrentSequenceGroup( + allGroups, i); if (currentSequenceGroup != null) { if (!currentSequenceGroup.getDisplayText()) @@ -334,7 +301,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer || currentSequenceGroup.getColourText()) { getboxColour = true; - getBoxColour(currentSequenceGroup.getGroupColourScheme(), seq, + resBoxColour = resColourFinder.getBoxColour( + currentSequenceGroup.getGroupColourScheme(), seq, i); if (currentSequenceGroup.getColourText()) @@ -377,7 +345,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer if (av.getColourText()) { getboxColour = true; - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); if (av.getShowBoxes()) { @@ -393,7 +362,8 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer { if (!getboxColour) { - getBoxColour(av.getResidueShading(), seq, i); + resBoxColour = resColourFinder + .getBoxColour(av.getResidueShading(), seq, i); } if (resBoxColour.getRed() + resBoxColour.getBlue() @@ -460,33 +430,6 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer /** * DOCUMENT ME! * - * @param res - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - SequenceGroup inCurrentSequenceGroup(int res) - { - if (allGroups == null) - { - return null; - } - - for (int i = 0; i < allGroups.length; i++) - { - if ((allGroups[i].getStartRes() <= res) - && (allGroups[i].getEndRes() >= res)) - { - return (allGroups[i]); - } - } - - return null; - } - - /** - * DOCUMENT ME! - * * @param seq * DOCUMENT ME! * @param start diff --git a/src/jalview/renderer/OverviewRenderer.java b/src/jalview/renderer/OverviewRenderer.java index 77c3700..8d9f036 100644 --- a/src/jalview/renderer/OverviewRenderer.java +++ b/src/jalview/renderer/OverviewRenderer.java @@ -29,7 +29,6 @@ import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.renderer.seqfeatures.FeatureColourFinder; import jalview.renderer.seqfeatures.FeatureRenderer; -import jalview.util.Comparison; import jalview.viewmodel.OverviewDimensions; import java.awt.Color; @@ -40,8 +39,6 @@ public class OverviewRenderer { private FeatureColourFinder finder; - private jalview.api.SequenceRenderer sr; - // image to render on private BufferedImage miniMe; @@ -59,12 +56,14 @@ public class OverviewRenderer private ResidueShaderI shader; - public OverviewRenderer(jalview.api.SequenceRenderer seqRenderer, - FeatureRenderer fr, OverviewDimensions od, AlignmentI alignment, + private ResidueColourFinder resColFinder; + + public OverviewRenderer(FeatureRenderer fr, OverviewDimensions od, + AlignmentI alignment, ResidueShaderI resshader) { - sr = seqRenderer; finder = new FeatureColourFinder(fr); + resColFinder = new OverviewResColourFinder(); al = alignment; shader = resshader; @@ -162,7 +161,8 @@ public class OverviewRenderer if ((seq != null) && (seq.getLength() > lastcol)) { - color = getResidueColour(allGroups, seq, lastcol, fcfinder); + color = resColFinder.getResidueColour(shader, allGroups, seq, lastcol, + fcfinder); } if (isHidden) @@ -173,83 +173,6 @@ public class OverviewRenderer return color.getRGB(); } - private Color getResidueColour(SequenceGroup[] allGroups, - final SequenceI seq, int position, - FeatureColourFinder finder) - { - Color col = getResidueBoxColour(allGroups, seq, position); - - if (finder != null) - { - col = finder.findFeatureColour(col, seq, position); - } - return col; - } - - protected Color getResidueBoxColour(SequenceGroup[] allGroups, - SequenceI seq, int i) - { - - ResidueShaderI currentShader; - - SequenceGroup currentSequenceGroup = inCurrentSequenceGroup(allGroups, - i); - if (currentSequenceGroup != null) - { - currentShader = currentSequenceGroup.getGroupColourScheme(); - } - else - { - currentShader = shader; - } - - return getBoxColour(currentShader, seq, i); - } - - SequenceGroup inCurrentSequenceGroup(SequenceGroup[] allGroups, int res) - { - if (allGroups == null) - { - return null; - } - - for (int i = 0; i < allGroups.length; i++) - { - if ((allGroups[i].getStartRes() <= res) - && (allGroups[i].getEndRes() >= res)) - { - return (allGroups[i]); - } - } - - return null; - } - - Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i) - { - Color resBoxColour = Color.white; - char currentChar = seq.getCharAt(i); - - if (shader.getColourScheme() != null) - { - if (Comparison.isGap(currentChar) - && !shader.getColourScheme().hasGapColour()) - { - resBoxColour = Color.lightGray; - } - else - { - resBoxColour = shader.findColour(currentChar, i, seq); - } - } - else if (Comparison.isGap(currentChar)) - { - resBoxColour = Color.lightGray; - } - - return resBoxColour; - } - /** * Draw the alignment annotation in the overview panel * diff --git a/src/jalview/renderer/OverviewResColourFinder.java b/src/jalview/renderer/OverviewResColourFinder.java new file mode 100644 index 0000000..793d349 --- /dev/null +++ b/src/jalview/renderer/OverviewResColourFinder.java @@ -0,0 +1,55 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.renderer; + +import jalview.datamodel.SequenceI; +import jalview.util.Comparison; + +import java.awt.Color; + +public class OverviewResColourFinder extends ResidueColourFinder +{ + @Override + public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i) + { + Color resBoxColour = Color.white; + char currentChar = seq.getCharAt(i); + + if (shader.getColourScheme() != null) + { + if (Comparison.isGap(currentChar) + && !shader.getColourScheme().hasGapColour()) + { + resBoxColour = Color.lightGray; + } + else + { + resBoxColour = shader.findColour(currentChar, i, seq); + } + } + else if (Comparison.isGap(currentChar)) + { + resBoxColour = Color.lightGray; + } + + return resBoxColour; + } +} diff --git a/src/jalview/renderer/ResidueColourFinder.java b/src/jalview/renderer/ResidueColourFinder.java new file mode 100644 index 0000000..99f5107 --- /dev/null +++ b/src/jalview/renderer/ResidueColourFinder.java @@ -0,0 +1,109 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.renderer; + +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.renderer.seqfeatures.FeatureColourFinder; + +import java.awt.Color; + +public class ResidueColourFinder +{ + public ResidueColourFinder() + { + } + + public Color getResidueColour(ResidueShaderI shader, + SequenceGroup[] allGroups, + final SequenceI seq, int position, FeatureColourFinder finder) + { + Color col = getResidueBoxColour(shader, allGroups, seq, position); + + if (finder != null) + { + col = finder.findFeatureColour(col, seq, position); + } + return col; + } + + private Color getResidueBoxColour(ResidueShaderI shader, + SequenceGroup[] allGroups, + SequenceI seq, int i) + { + + ResidueShaderI currentShader; + + SequenceGroup currentSequenceGroup = getCurrentSequenceGroup(allGroups, + i); + if (currentSequenceGroup != null) + { + currentShader = currentSequenceGroup.getGroupColourScheme(); + } + else + { + currentShader = shader; + } + + return getBoxColour(currentShader, seq, i); + } + + public SequenceGroup getCurrentSequenceGroup(SequenceGroup[] allGroups, + int res) + { + if (allGroups == null) + { + return null; + } + + for (int i = 0; i < allGroups.length; i++) + { + if ((allGroups[i].getStartRes() <= res) + && (allGroups[i].getEndRes() >= res)) + { + return (allGroups[i]); + } + } + + return null; + } + + /** + * DOCUMENT ME! + * + * @param shader + * DOCUMENT ME! + * @param seq + * DOCUMENT ME! + * @param i + * DOCUMENT ME! + */ + public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i) + { + Color resBoxColour = Color.white; + if (shader.getColourScheme() != null) + { + resBoxColour = shader.findColour(seq.getCharAt(i), i, seq); + } + return resBoxColour; + } + +} diff --git a/test/jalview/gui/SequenceRendererTest.java b/test/jalview/gui/SequenceRendererTest.java deleted file mode 100644 index 569f1e6..0000000 --- a/test/jalview/gui/SequenceRendererTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.gui; - -import static org.testng.AssertJUnit.assertEquals; - -import jalview.datamodel.Alignment; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.Sequence; -import jalview.datamodel.SequenceI; -import jalview.schemes.ZappoColourScheme; - -import java.awt.Color; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class SequenceRendererTest -{ - - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - @Test(groups = { "Functional" }) - public void testGetResidueBoxColour_zappo() - { - SequenceI seq = new Sequence("name", "MATVLGSPRAPAFF"); // FER1_MAIZE... - AlignmentI al = new Alignment(new SequenceI[] { seq }); - final AlignViewport av = new AlignViewport(al); - SequenceRenderer sr = new SequenceRenderer(av); - av.setGlobalColourScheme(new ZappoColourScheme()); - - // @see ResidueProperties.zappo - assertEquals(Color.pink, sr.getResidueBoxColour(seq, 0)); // M - assertEquals(Color.green, sr.getResidueBoxColour(seq, 2)); // T - assertEquals(Color.magenta, sr.getResidueBoxColour(seq, 5)); // G - assertEquals(Color.orange, sr.getResidueBoxColour(seq, 12)); // F - } - - @Test(groups = { "Functional" }) - public void testGetResidueBoxColour_none() - { - SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF"); - AlignmentI al = new Alignment(new SequenceI[] { seq }); - final AlignViewport av = new AlignViewport(al); - SequenceRenderer sr = new SequenceRenderer(av); - - assertEquals(Color.white, sr.getResidueBoxColour(seq, 0)); - assertEquals(Color.white, sr.getResidueBoxColour(seq, 2)); - - // set for overview - /* sr.forOverview = true; - assertEquals(Color.lightGray, sr.getResidueBoxColour(seq, 0)); - assertEquals(Color.white, sr.getResidueBoxColour(seq, 2));*/ - } - - // TODO more tests for getResidueBoxColour covering groups, feature rendering, - // gaps, overview... - -} diff --git a/test/jalview/renderer/OverviewResColourFinderTest.java b/test/jalview/renderer/OverviewResColourFinderTest.java new file mode 100644 index 0000000..59348d5 --- /dev/null +++ b/test/jalview/renderer/OverviewResColourFinderTest.java @@ -0,0 +1,142 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.renderer; + +import static org.testng.AssertJUnit.assertEquals; + +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignViewport; +import jalview.gui.JvOptionPane; +import jalview.schemes.UserColourScheme; +import jalview.schemes.ZappoColourScheme; + +import java.awt.Color; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class OverviewResColourFinderTest +{ + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_none() + { + SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF"); + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + + // gaps are grey, residues white + assertEquals(Color.white, rcf.getResidueColour(av.getResidueShading(), + null, seq, 0, null)); + assertEquals(Color.lightGray, rcf + .getResidueColour(av.getResidueShading(), null, seq, 2, null)); + + // boxes off does not change anything + av.setShowBoxes(false); + assertEquals(Color.white, rcf + .getResidueColour(av.getResidueShading(), null, seq, 0, null)); + assertEquals(Color.lightGray, rcf + .getResidueColour(av.getResidueShading(), + null, seq, 2, null)); + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_zappo() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + av.setGlobalColourScheme(new ZappoColourScheme()); + + // @see ResidueProperties.zappo + assertEquals(Color.pink, rcf.getResidueColour(av.getResidueShading(), + null, seq, 0, null)); // M + assertEquals(Color.green, rcf.getResidueColour(av.getResidueShading(), + null, seq, 2, null)); // T + assertEquals(Color.magenta, rcf.getResidueColour(av.getResidueShading(), + null, seq, 5, null)); // G + assertEquals(Color.orange, rcf.getResidueColour(av.getResidueShading(), + null, seq, 12, null)); // F + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(av.getResidueShading(), null, seq, 3, null)); + + // boxes off does not change anything + av.setShowBoxes(false); + + assertEquals(Color.pink, rcf.getResidueColour(av.getResidueShading(), + null, seq, 0, null)); // M + assertEquals(Color.green, rcf.getResidueColour(av.getResidueShading(), + null, seq, 2, null)); // T + assertEquals(Color.magenta, rcf.getResidueColour(av.getResidueShading(), + null, seq, 5, null)); // G + assertEquals(Color.orange, rcf.getResidueColour(av.getResidueShading(), + null, seq, 12, null)); // F + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(av.getResidueShading(), null, seq, 3, null)); + + } + + @Test(groups = { "Functional" }) + public void testGetResidueBoxColour_userdef() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new OverviewResColourFinder(); + + Color[] newColours = new Color[24]; + for (int i = 0; i < 24; i++) + { + newColours[i] = null; + } + + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour not specified so gaps are lightGray + assertEquals(Color.lightGray, rcf + .getResidueColour(av.getResidueShading(), null, seq, 3, null)); + + newColours[23] = Color.pink; + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour specified as pink + assertEquals(Color.pink, rcf.getResidueColour(av.getResidueShading(), + null, seq, 3, null)); + } +} diff --git a/test/jalview/renderer/ResidueColourFinderTest.java b/test/jalview/renderer/ResidueColourFinderTest.java new file mode 100644 index 0000000..dd7a457 --- /dev/null +++ b/test/jalview/renderer/ResidueColourFinderTest.java @@ -0,0 +1,119 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.renderer; + +import static org.testng.AssertJUnit.assertEquals; + +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignViewport; +import jalview.gui.JvOptionPane; +import jalview.schemes.UserColourScheme; +import jalview.schemes.ZappoColourScheme; + +import java.awt.Color; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class ResidueColourFinderTest +{ + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + + @Test(groups = { "Functional" }) + public void testGetResidueColour_zappo() + { + SequenceI seq = new Sequence("name", "MATVLGSPRAPAFF"); // FER1_MAIZE... + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new ResidueColourFinder(); + av.setGlobalColourScheme(new ZappoColourScheme()); + + // @see ResidueProperties.zappo + assertEquals(Color.pink, + rcf.getResidueColour(av.getResidueShading(), null, seq, 0, + null)); // M + assertEquals(Color.green, + rcf.getResidueColour(av.getResidueShading(), null, seq, 2, + null)); // T + assertEquals(Color.magenta, + rcf.getResidueColour(av.getResidueShading(), null, seq, 5, + null)); // G + assertEquals(Color.orange, + rcf.getResidueColour(av.getResidueShading(), null, seq, 12, + null)); // F + } + + @Test(groups = { "Functional" }) + public void testGetResidueColour_none() + { + SequenceI seq = new Sequence("name", "MA--TVLGSPRAPAFF"); + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new ResidueColourFinder(); + + assertEquals(Color.white, rcf.getResidueColour(av.getResidueShading(), + null, seq, 0, null)); + assertEquals(Color.white, rcf.getResidueColour(av.getResidueShading(), + null, seq, 2, null)); + } + + @Test(groups = { "Functional" }) + public void testGetResidueColour_userdef() + { + SequenceI seq = new Sequence("name", "MAT--GSPRAPAFF"); // FER1_MAIZE... + a + // gap + AlignmentI al = new Alignment(new SequenceI[] { seq }); + final AlignViewport av = new AlignViewport(al); + ResidueColourFinder rcf = new ResidueColourFinder(); + + Color[] newColours = new Color[24]; + for (int i = 0; i < 24; i++) + { + newColours[i] = null; + } + + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour not specified so gaps are null + assertEquals(null, rcf.getResidueColour(av.getResidueShading(), + null, seq, 3, null)); + + newColours[23] = Color.pink; + av.setGlobalColourScheme(new UserColourScheme(newColours)); + + // gap colour specified as pink + assertEquals(Color.pink, rcf.getResidueColour(av.getResidueShading(), + null, seq, 3, null)); + } + + // TODO more tests for getResidueBoxColour covering groups, feature rendering, + // gaps, overview... + +} -- 1.7.10.2