From 1ae70c4324da0e26611bb2a9272dfacb92b6c234 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Sat, 27 May 2017 12:32:09 +0100 Subject: [PATCH] JAL-2526 test and documentation for SeqPanel.setStatus behaviour needed to fix bug noted on JAL-2491 where mouseover at gap highlights position for sequence to right of gap in complementary view. --- src/jalview/appletgui/SeqPanel.java | 10 +++--- src/jalview/gui/SeqPanel.java | 2 +- test/jalview/gui/SeqPanelTest.java | 66 +++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 test/jalview/gui/SeqPanelTest.java diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index d46cc34..f58f420 100644 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -412,13 +412,13 @@ public class SeqPanel extends Panel implements MouseMotionListener, * * @param sequence * aligned sequence object - * @param res + * @param column * alignment column * @param seq * index of sequence in alignment - * @return position of res in sequence + * @return position of column in sequence or -1 if at gap */ - void setStatusMessage(SequenceI sequence, int res, int seq) + void setStatusMessage(SequenceI sequence, int column, int seq) { // TODO remove duplication of identical gui method StringBuilder text = new StringBuilder(32); @@ -429,7 +429,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, /* * Try to translate the display character to residue name (null for gap). */ - final String displayChar = String.valueOf(sequence.getCharAt(res)); + final String displayChar = String.valueOf(sequence.getCharAt(column)); if (av.getAlignment().isNucleotide()) { residue = ResidueProperties.nucleotideName.get(displayChar); @@ -452,7 +452,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, int pos = -1; if (residue != null) { - pos = sequence.findPosition(res); + pos = sequence.findPosition(column); text.append(" (").append(Integer.toString(pos)).append(")"); } diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 7dfac5e..a435fee 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -869,7 +869,7 @@ public class SeqPanel extends JPanel implements MouseListener, * alignment column * @param seq * index of sequence in alignment - * @return position of res in sequence + * @return position of column in sequence or -1 if at a gap */ int setStatusMessage(SequenceI sequence, final int column, int seq) { diff --git a/test/jalview/gui/SeqPanelTest.java b/test/jalview/gui/SeqPanelTest.java new file mode 100644 index 0000000..488570a --- /dev/null +++ b/test/jalview/gui/SeqPanelTest.java @@ -0,0 +1,66 @@ +/* + * 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.Assert.assertEquals; + +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceI; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class SeqPanelTest +{ + AlignFrame af; + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + @Test(groups = "Functional") + public void testSetStatusReturnsPosOrMinusOne() + { + SequenceI seq1 = new Sequence("Seq1", "ABCDEFGHIJ"); + SequenceI seq2 = new Sequence("Seq2", "AB--EFGHIJ"); + AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 }); + AlignFrame alignFrame = new AlignFrame(al, al.getWidth(), + al.getHeight()); + AlignmentI visAl = alignFrame.getViewport().getAlignment(); + assertEquals( + alignFrame.alignPanel.getSeqPanel().setStatusMessage( + visAl.getSequenceAt(1), 1, 1), 2); + assertEquals( + + alignFrame.alignPanel.getSeqPanel().setStatusMessage( + visAl.getSequenceAt(1), 2, 1), -1); + assertEquals( + alignFrame.alignPanel.getSeqPanel().setStatusMessage( + visAl.getSequenceAt(1), 3, 1), -1); + assertEquals( + alignFrame.alignPanel.getSeqPanel().setStatusMessage( + visAl.getSequenceAt(1), 4, 1), 3); + } +} -- 1.7.10.2