JAL-2421 Fix to alignment panel scroll values, and start of unit test.
[jalview.git] / test / jalview / gui / AlignmentPanelTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.gui;
22
23 import static org.testng.Assert.assertEquals;
24
25 import jalview.bin.Jalview;
26 import jalview.datamodel.Alignment;
27 import jalview.datamodel.Sequence;
28 import jalview.datamodel.SequenceI;
29
30 import org.testng.annotations.AfterMethod;
31 import org.testng.annotations.BeforeClass;
32 import org.testng.annotations.Test;
33
34 public class AlignmentPanelTest
35 {
36   SequenceI seq1 = new Sequence(
37           "Seq1",
38           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
39
40   SequenceI seq2 = new Sequence(
41           "Seq2",
42           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
43
44   SequenceI seq3 = new Sequence(
45           "Seq3",
46           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
47
48   SequenceI seq4 = new Sequence(
49           "Seq4",
50           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
51
52   SequenceI seq5 = new Sequence(
53           "Seq5",
54           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
55
56   SequenceI seq6 = new Sequence(
57           "Seq6",
58           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
59
60   SequenceI seq7 = new Sequence(
61           "Seq7",
62           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
63
64   SequenceI seq8 = new Sequence(
65           "Seq8",
66           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
67
68   SequenceI seq9 = new Sequence(
69           "Seq9",
70           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
71
72   SequenceI seq10 = new Sequence(
73           "Seq10",
74           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
75
76   SequenceI seq11 = new Sequence(
77           "Seq11",
78           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
79
80   SequenceI seq12 = new Sequence(
81           "Seq12",
82           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
83
84   SequenceI seq13 = new Sequence(
85           "Seq13",
86           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
87
88   SequenceI seq14 = new Sequence(
89           "Seq14",
90           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
91
92   SequenceI seq15 = new Sequence(
93           "Seq15",
94           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
95
96   SequenceI seq16 = new Sequence(
97           "Seq16",
98           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
99
100   SequenceI seq17 = new Sequence(
101           "Seq17",
102           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
103
104   SequenceI seq18 = new Sequence(
105           "Seq18",
106           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
107
108   SequenceI seq19 = new Sequence(
109           "Seq19",
110           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
111
112   SequenceI seq20 = new Sequence(
113           "Seq20",
114           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
115
116   SequenceI seq21 = new Sequence(
117           "Seq21",
118           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
119
120   SequenceI seq22 = new Sequence(
121           "Seq22",
122           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
123
124   SequenceI seq23 = new Sequence(
125           "Seq23",
126           "ABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBACABCABCABCABCABCABCABCABCBACBACBACBAC");
127
128   @BeforeClass(alwaysRun = true)
129   public void setUp()
130   {
131     JvOptionPane.setInteractiveMode(false);
132     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
133
134     Jalview.main(new String[] { "-nonews", "-props",
135         "test/jalview/testProps.jvprops" });
136   }
137
138   @AfterMethod(alwaysRun = true)
139   public void tearDown()
140   {
141     Desktop.instance.closeAll_actionPerformed(null);
142   }
143
144   /**
145    * Test side effect that end residue is set correctly by setScrollValues, with
146    * or without hidden columns
147    */
148   @Test(groups = "Functional")
149   public void TestSetScrollValues()
150   {
151     SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4, seq5,
152         seq6, seq7, seq8, seq9, seq10, seq11, seq12, seq13, seq14, seq15,
153         seq16, seq17, seq18, seq19, seq20, seq21, seq22, seq23 };
154     Alignment al = new Alignment(seqs);
155     al.setDataset(null);
156     AlignViewport av = new AlignViewport(al);
157
158     AlignFrame alignFrame = new AlignFrame(al, 700, 500);
159     AlignmentPanel ap = new AlignmentPanel(alignFrame, av);
160
161     int oldres = av.getEndRes();
162     ap.setScrollValues(-1, 5);
163
164     // setting -ve x value does not change residue
165     assertEquals(av.getEndRes(), oldres);
166
167     ap.setScrollValues(0, 5);
168
169     // setting 0 as x value does not change residue
170     assertEquals(av.getEndRes(), oldres);
171
172     ap.setScrollValues(5, 5);
173     // setting x value to 20 extends endRes by 20px converted to residues
174     assertEquals(av.getEndRes(), oldres + 5);
175
176
177   }
178 }