Clover icon

Coverage Report

  1. Project Clover database Thu Aug 13 2020 12:04:21 BST
  2. Package jalview.gui

File ScalePanelTest.java

 

Code metrics

0
113
5
1
238
162
5
0.04
22.6
5
1

Classes

Class Line # Actions
ScalePanelTest 26 113 5
1.0100%
 

Contributing tests

This file is covered by 3 tests. .

Source view

1    package jalview.gui;
2   
3    import static org.testng.Assert.assertEquals;
4    import static org.testng.Assert.assertTrue;
5   
6    import jalview.bin.Cache;
7    import jalview.bin.Jalview;
8    import jalview.datamodel.Alignment;
9    import jalview.datamodel.AlignmentI;
10    import jalview.datamodel.Sequence;
11    import jalview.datamodel.SequenceGroup;
12    import jalview.datamodel.SequenceI;
13    import jalview.io.DataSourceType;
14    import jalview.io.FileLoader;
15    import jalview.util.MessageManager;
16    import jalview.viewmodel.ViewportRanges;
17   
18    import java.awt.event.MouseEvent;
19   
20    import javax.swing.JMenuItem;
21    import javax.swing.JPopupMenu;
22   
23    import org.testng.annotations.BeforeClass;
24    import org.testng.annotations.Test;
25   
 
26    public class ScalePanelTest
27    {
 
28  1 toggle @BeforeClass(alwaysRun = true)
29    public void setUpJvOptionPane()
30    {
31  1 JvOptionPane.setInteractiveMode(false);
32  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
33    }
34   
 
35  1 toggle @Test(groups = "Functional")
36    public void testPreventNegativeStartColumn()
37    {
38  1 SequenceI seq1 = new Sequence("Seq1", "MATRESS");
39  1 SequenceI seq2 = new Sequence("Seq2", "MADNESS");
40  1 AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
41   
42  1 AlignFrame alignFrame = new AlignFrame(al, al.getWidth(),
43    al.getHeight());
44  1 ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
45   
46  1 MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, 4, 0, 1, false);
47  1 scalePanel.mousePressed(mouse);
48  1 scalePanel.mouseDragged(mouse);
49   
50    // simulate dragging selection leftwards beyond the sequences giving
51    // negative X
52  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, -30, 0, 1, false);
53   
54  1 scalePanel.mouseReleased(mouse);
55   
56  1 SequenceGroup sg = scalePanel.av.getSelectionGroup();
57  1 int startCol = sg.getStartRes();
58   
59  1 assertTrue(startCol >= 0);
60    }
61   
62    /**
63    * Test for JAL-3212
64    */
 
65  1 toggle @Test(groups = "Functional")
66    public void testSelectColumns_withHidden()
67    {
68  1 String seq1 = ">Seq1\nANTOFAGASTAVALPARAISOMONTEVIDEOANTANANARIVO";
69  1 AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(seq1,
70    DataSourceType.PASTE);
71  1 ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
72   
73    /*
74    * hide columns 1-20 (of 43); then 'drag' to select columns 30-31;
75    * 31 is 51 in absolute columns but bug JAL-3212 reduces it to
76    * endRes which is 22
77    */
78  1 AlignViewport viewport = alignFrame.getViewport();
79  1 ViewportRanges ranges = viewport.getRanges();
80  1 assertEquals(ranges.getStartRes(), 0);
81  1 assertEquals(ranges.getEndRes(), 42);
82  1 viewport.hideColumns(0, 19);
83  1 alignFrame.alignPanel.updateLayout();
84  1 assertEquals(ranges.getStartRes(), 0);
85  1 assertEquals(ranges.getEndRes(), 22);
86   
87  1 int cw = viewport.getCharWidth();
88  1 int xPos = 9 * cw + 2;
89  1 MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1,
90    false);
91  1 scalePanel.mousePressed(mouse);
92  1 scalePanel.mouseDragged(mouse);
93  1 xPos += cw;
94  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
95  1 scalePanel.mouseReleased(mouse);
96   
97  1 SequenceGroup sg = scalePanel.av.getSelectionGroup();
98  1 assertEquals(sg.getStartRes(), 29);
99  1 assertEquals(sg.getEndRes(), 30);
100    }
101   
 
102  1 toggle @Test(groups = "Functional")
103    public void testBuildPopupMenu()
104    {
105  1 final String hide = MessageManager.getString("label.hide_columns");
106  1 final String reveal = MessageManager.getString("label.reveal");
107  1 final String revealAll = MessageManager.getString("action.reveal_all");
108   
109  1 String seq1 = ">Seq1\nANTOFAGASTA";
110  1 AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(seq1,
111    DataSourceType.PASTE);
112  1 ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
113  1 AlignViewport viewport = alignFrame.getViewport();
114  1 int cw = viewport.getCharWidth();
115   
116    /*
117    * hide columns 3-4 (counting from 0)
118    */
119  1 viewport.hideColumns(3, 4);
120  1 alignFrame.alignPanel.updateLayout();
121   
122    /*
123    * verify popup menu left/right of hidden column marker
124    * NB need to call mouseMoved first as this sets field 'reveal'
125    */
126  1 int xPos = 1 * cw + 2; // 2 columns left of hidden marker
127  1 MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1,
128    false);
129  1 scalePanel.mouseMoved(mouse);
130  1 JPopupMenu popup = scalePanel.buildPopupMenu(1);
131  1 assertEquals(popup.getSubElements().length, 0);
132   
133    /*
134    * popup just left of hidden marker has 'Reveal'
135    */
136  1 xPos = 2 * cw + 2;
137  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
138  1 scalePanel.mouseMoved(mouse);
139  1 popup = scalePanel.buildPopupMenu(2);
140  1 assertEquals(popup.getSubElements().length, 1);
141  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
142   
143    /*
144    * popup just right of hidden marker has 'Reveal'
145    */
146  1 xPos = 3 * cw + 2;
147  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
148  1 scalePanel.mouseMoved(mouse);
149  1 popup = scalePanel.buildPopupMenu(5); // allowing for 2 hidden columns
150  1 assertEquals(popup.getSubElements().length, 1);
151  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
152   
153    /*
154    * popup further right is empty
155    */
156  1 xPos = 4 * cw + 2;
157  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
158  1 scalePanel.mouseMoved(mouse);
159  1 popup = scalePanel.buildPopupMenu(6); // allowing for 2 hidden columns
160  1 assertEquals(popup.getSubElements().length, 0);
161   
162    /*
163    * 'drag' to select columns around the hidden column marker
164    */
165  1 xPos = 1 * cw + 2;
166  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
167  1 scalePanel.mousePressed(mouse);
168  1 scalePanel.mouseDragged(mouse);
169  1 xPos = 5 * cw + 2;
170  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
171  1 scalePanel.mouseReleased(mouse);
172   
173    /*
174    * popup 2 columns left of marker: 'Hide' only
175    */
176  1 xPos = 1 * cw + 2;
177  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
178  1 scalePanel.mouseMoved(mouse);
179  1 popup = scalePanel.buildPopupMenu(1);
180  1 assertEquals(popup.getSubElements().length, 1);
181  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), hide);
182   
183    /*
184    * popup just left of marker: 'Reveal' and 'Hide'
185    */
186  1 xPos = 2 * cw + 2;
187  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
188  1 scalePanel.mouseMoved(mouse);
189  1 popup = scalePanel.buildPopupMenu(1);
190  1 assertEquals(popup.getSubElements().length, 2);
191  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
192  1 assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), hide);
193   
194    /*
195    * popup just right of marker: 'Reveal' and 'Hide'
196    */
197  1 xPos = 3 * cw + 2;
198  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
199  1 scalePanel.mouseMoved(mouse);
200  1 popup = scalePanel.buildPopupMenu(5);
201  1 assertEquals(popup.getSubElements().length, 2);
202  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
203  1 assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(), hide);
204   
205    /*
206    * hiding a second region adds option 'Reveal all' to 'Reveal'
207    */
208  1 viewport.hideColumns(6, 7);
209  1 alignFrame.alignPanel.updateLayout();
210  1 xPos = 3 * cw + 2;
211  1 mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
212  1 scalePanel.mouseMoved(mouse);
213  1 popup = scalePanel.buildPopupMenu(5);
214  1 assertEquals(popup.getSubElements().length, 3);
215  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
216  1 assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(),
217    revealAll);
218  1 assertEquals(((JMenuItem) popup.getSubElements()[2]).getText(), hide);
219   
220  1 alignFrame.deselectAllSequenceMenuItem_actionPerformed(null);
221  1 popup = scalePanel.buildPopupMenu(5);
222  1 assertEquals(popup.getSubElements().length, 2);
223  1 assertEquals(((JMenuItem) popup.getSubElements()[0]).getText(), reveal);
224  1 assertEquals(((JMenuItem) popup.getSubElements()[1]).getText(),
225    revealAll);
226    }
227   
 
228  1 toggle @BeforeClass(alwaysRun = true)
229    public static void setUpBeforeClass() throws Exception
230    {
231    /*
232    * use read-only test properties file
233    */
234  1 Cache.loadProperties("test/jalview/io/testProps.jvprops");
235  1 Jalview.main(new String[] { "-nonews" });
236    }
237   
238    }