1 /**
2 * UGENE - Integrated Bioinformatics Tools.
3 * Copyright (C) 2008-2021 UniPro <ugene@unipro.ru>
4 * http://ugene.net
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 */
21
22 #include <api/GTUtils.h>
23 #include <base_dialogs/ColorDialogFiller.h>
24 #include <base_dialogs/GTFileDialog.h>
25 #include <base_dialogs/MessageBoxFiller.h>
26 #include <drivers/GTKeyboardDriver.h>
27 #include <drivers/GTMouseDriver.h>
28 #include <primitives/GTAction.h>
29 #include <primitives/GTCheckBox.h>
30 #include <primitives/GTComboBox.h>
31 #include <primitives/GTDoubleSpinBox.h>
32 #include <primitives/GTLineEdit.h>
33 #include <primitives/GTMenu.h>
34 #include <primitives/GTRadioButton.h>
35 #include <primitives/GTSlider.h>
36 #include <primitives/GTWidget.h>
37 #include <primitives/PopupChooser.h>
38 #include <system/GTFile.h>
39 #include <utils/GTThread.h>
40
41 #include <QApplication>
42 #include <QDir>
43 #include <QGraphicsItem>
44 #include <QMainWindow>
45
46 #include <U2Core/AppContext.h>
47
48 #include "GTTestsOptionPanelMSA.h"
49 #include "GTUtilsLog.h"
50 #include "GTUtilsMdi.h"
51 #include "GTUtilsMsaEditor.h"
52 #include "GTUtilsMsaEditorSequenceArea.h"
53 #include "GTUtilsOptionPanelMSA.h"
54 #include "GTUtilsPhyTree.h"
55 #include "GTUtilsProjectTreeView.h"
56 #include "GTUtilsTaskTreeView.h"
57 #include "api/GTBaseCompleter.h"
58 #include "runnables/ugene/corelibs/U2View/ov_msa/BuildTreeDialogFiller.h"
59
60 namespace U2 {
61
62 namespace GUITest_common_scenarios_options_panel_MSA {
63 using namespace HI;
GUI_TEST_CLASS_DEFINITION(general_test_0001)64 GUI_TEST_CLASS_DEFINITION(general_test_0001) {
65 const QString seqName = "Phaneroptera_falcata";
66 // 1. Open file data/samples/CLUSTALW/COI.aln
67 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
68 GTUtilsTaskTreeView::waitTaskFinished(os);
69 // 2. Open general option panel tab
70 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
71 // 3. Use button to add Phaneroptera_falcata as referene
72 GTUtilsOptionPanelMsa::addReference(os, seqName);
73 // Expected state:
74 // reference sequence line edit is empty
75 QLineEdit *sequenceLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "sequenceLineEdit"));
76 CHECK_SET_ERR(sequenceLineEdit != nullptr, "sequenceLineEdit not found");
77 QString text = sequenceLineEdit->text();
78 CHECK_SET_ERR(text == seqName, QString("sequenceLineEdit contains %1, expected: %2").arg(text).arg(seqName));
79 CHECK_SET_ERR(GTUtilsMSAEditorSequenceArea::isSequenceHighlighted(os, seqName), "sequence not highlighted");
80 // Expected state: Phaneroptera_falcata highlighted as reference
81
82 // 4. Use button to remove reference
83 GTUtilsOptionPanelMsa::removeReference(os);
84 // Expected state:
85 // reference sequence line edit contains "select and add"
86 // Phaneroptera_falcata is not highlighted as reference
87 text = sequenceLineEdit->text();
88 CHECK_SET_ERR(text.isEmpty(), QString("sequenceLineEdit contains %1, no text expected").arg(text));
89 CHECK_SET_ERR(!GTUtilsMSAEditorSequenceArea::isSequenceHighlighted(os, seqName), "sequence not highlighted");
90 }
91
GUI_TEST_CLASS_DEFINITION(general_test_0001_1)92 GUI_TEST_CLASS_DEFINITION(general_test_0001_1) {
93 // Difference: popup completer is used
94 const QString seqName = "Phaneroptera_falcata";
95 // 1. Open file data/samples/CLUSTALW/COI.aln
96 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
97 GTUtilsTaskTreeView::waitTaskFinished(os);
98 // 2. Open general option panel tab
99 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
100 // 3. Use button to add Phaneroptera_falcata as reference
101 GTUtilsOptionPanelMsa::addReference(os, seqName, GTUtilsOptionPanelMsa::Completer);
102 // Expected state:
103 // reference sequence line edit contains Phaneroptera_falcata
104 QLineEdit *sequenceLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "sequenceLineEdit"));
105 CHECK_SET_ERR(sequenceLineEdit != nullptr, "sequenceLineEdit not found");
106 QString text = sequenceLineEdit->text();
107 CHECK_SET_ERR(text == seqName, QString("sequenceLineEdit contains %1, expected: %2").arg(text).arg(seqName));
108 CHECK_SET_ERR(GTUtilsMSAEditorSequenceArea::isSequenceHighlighted(os, seqName), "sequence not highlighted");
109 // Phaneroptera_falcata highlighted as reference
110
111 // 4. Use button to remove reference
112 GTUtilsOptionPanelMsa::removeReference(os);
113 // Expected state:
114 // reference sequence line edit contains "select and add"
115 // Phaneroptera_falcata is not highlighted as reference
116 text = sequenceLineEdit->text();
117 CHECK_SET_ERR(text.isEmpty(), QString("sequenceLineEdit contains %1, no text expected").arg(text));
118 CHECK_SET_ERR(!GTUtilsMSAEditorSequenceArea::isSequenceHighlighted(os, seqName), "sequence not highlighted");
119 }
120
GUI_TEST_CLASS_DEFINITION(general_test_0002)121 GUI_TEST_CLASS_DEFINITION(general_test_0002) {
122 const QString seqName = "Phaneroptera_falcata";
123 // 1. Open file data/samples/CLUSTALW/COI.aln
124 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
125 GTUtilsTaskTreeView::waitTaskFinished(os);
126 // 2. Open general option panel tab
127 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
128 // 3. Type "phan" in reference line edit
129 QLineEdit *sequenceLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "sequenceLineEdit"));
130 CHECK_SET_ERR(sequenceLineEdit != nullptr, "sequenceLineEdit not found");
131 GTLineEdit::setText(os, sequenceLineEdit, "phan");
132 QStringList names = GTBaseCompleter::getNames(os, sequenceLineEdit);
133 // Expected state: popup helper contains Phaneroptera_falcata.(case insensitivity is checked)
134 int num = names.count();
135 CHECK_SET_ERR(num == 1, QString("wrong number of sequences in completer. Expected 1, found %1").arg(num));
136
137 QString name = names.at(0);
138 CHECK_SET_ERR(name == seqName, QString("wrong sequence name. Expected %1, found %2").arg(seqName).arg(name));
139 GTWidget::click(os, GTUtilsMdi::activeWindow(os));
140 }
141
GUI_TEST_CLASS_DEFINITION(general_test_0003)142 GUI_TEST_CLASS_DEFINITION(general_test_0003) {
143 // 1. Open file data/samples/CLUSTALW/COI.aln
144 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
145 GTUtilsTaskTreeView::waitTaskFinished(os);
146 // 2. Open general option panel tab
147 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
148 // 3. Type some string which is not part some sequence's name
149 QLineEdit *sequenceLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "sequenceLineEdit"));
150 CHECK_SET_ERR(sequenceLineEdit != nullptr, "sequenceLineEdit not found");
151 GTLineEdit::setText(os, sequenceLineEdit, "wrong name");
152 // Expected state: empty popup helper appeared
153 bool empty = GTBaseCompleter::isEmpty(os, sequenceLineEdit);
154 CHECK_SET_ERR(empty, "completer is not empty");
155 GTWidget::click(os, sequenceLineEdit); // needed to close completer
156 }
157
GUI_TEST_CLASS_DEFINITION(general_test_0004)158 GUI_TEST_CLASS_DEFINITION(general_test_0004) {
159 // 1. Open file data/samples/CLUSTALW/COI.aln
160 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
161 GTUtilsTaskTreeView::waitTaskFinished(os);
162 // 2. Open general option panel tab
163 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
164 // 3. Rename Isophya_altaica_EF540820 to Phaneroptera_falcata
165 GTUtilsMSAEditorSequenceArea::renameSequence(os, "Isophya_altaica_EF540820", "Phaneroptera_falcata");
166 // 4. Type "phan" in reference line edit
167 QLineEdit *sequenceLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "sequenceLineEdit"));
168 CHECK_SET_ERR(sequenceLineEdit != nullptr, "sequenceLineEdit not found");
169 GTLineEdit::setText(os, sequenceLineEdit, "Phan");
170 QStringList completerList = GTBaseCompleter::getNames(os, sequenceLineEdit);
171 // Expected state: two sequence names "Phaneroptera_falcata" appeared in popup helper
172 CHECK_SET_ERR(completerList.count() == 2, "wrong number of sequences in completer");
173 QString first = completerList.at(0);
174 QString second = completerList.at(1);
175 CHECK_SET_ERR(first == "Phaneroptera_falcata", QString("first sequence in completer is wrong: %1").arg(first))
176 CHECK_SET_ERR(second == "Phaneroptera_falcata", QString("second sequence in completer is wrong: %1").arg(second))
177 GTWidget::click(os, sequenceLineEdit); // needed to close completer
178 }
179
GUI_TEST_CLASS_DEFINITION(general_test_0005)180 GUI_TEST_CLASS_DEFINITION(general_test_0005) {
181 // 1. Open file data/samples/CLUSTALW/COI.aln
182 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW/COI.aln");
183 GTUtilsTaskTreeView::waitTaskFinished(os);
184
185 // 2. Open general option panel tab
186 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
187
188 // 3. Delete Hetrodes_pupus_EF540832
189 GTUtilsMSAEditorSequenceArea::selectSequence(os, "Hetrodes_pupus_EF540832");
190 GTKeyboardDriver::keyClick(Qt::Key_Delete);
191
192 // Expected state: Sequence number is 17
193 const int height = GTUtilsOptionPanelMsa::getHeight(os);
194 CHECK_SET_ERR(height == 17, QString("wrong height. expected 17, found %1").arg(height));
195
196 // 4. Select one column. Press delete
197 GTUtilsMsaEditor::clickColumn(os, 5);
198 GTKeyboardDriver::keyClick(Qt::Key_Delete);
199
200 // Expected state: Length is 603
201 const int length = GTUtilsOptionPanelMsa::getLength(os);
202 CHECK_SET_ERR(length == 603, QString("wrong length. expected 603, found %1").arg(length));
203 }
204
GUI_TEST_CLASS_DEFINITION(highlighting_test_0001)205 GUI_TEST_CLASS_DEFINITION(highlighting_test_0001) {
206 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
207 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
208 GTUtilsTaskTreeView::waitTaskFinished(os);
209 // 2. Open highlighting option panel tab
210 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
211 // 3. Select "UGENE" color scheme
212 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
213 GTComboBox::selectItemByText(os, colorScheme, "UGENE");
214 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
215 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
216 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
217 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
218 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
219 CHECK_SET_ERR(a == "#fcff92", QString("a has color %1").arg(a));
220 CHECK_SET_ERR(t == "#ff99b1", QString("t has color %1").arg(t));
221 CHECK_SET_ERR(g == "#4eade1", QString("g has color %1").arg(g));
222 CHECK_SET_ERR(c == "#70f970", QString("c has color %1").arg(c));
223 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
224 // 4. Check colors for all symbols
225 // (branches: check Jalview, Percentage identity, Percentage identity(gray), UGENE color schemes)
226 }
227
GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_1)228 GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_1) {
229 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
230 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
231 GTUtilsTaskTreeView::waitTaskFinished(os);
232 // 2. Open highlighting option panel tab
233 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
234 // 3. Select "No colors" color scheme
235 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
236 GTComboBox::selectItemByText(os, colorScheme, "No colors");
237 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
238 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
239 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
240 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
241 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
242 CHECK_SET_ERR(a == "#ffffff", QString("a has color %1").arg(a));
243 CHECK_SET_ERR(t == "#ffffff", QString("t has color %1").arg(t));
244 CHECK_SET_ERR(g == "#ffffff", QString("g has color %1").arg(g));
245 CHECK_SET_ERR(c == "#ffffff", QString("c has color %1").arg(c));
246 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
247 // 4. Check colors for all symbols
248 // (branches: check Jalview, Percentage identity, Percentage identity(gray), UGENE color schemes)
249 }
250
GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_2)251 GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_2) {
252 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
253 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
254 GTUtilsTaskTreeView::waitTaskFinished(os);
255 // 2. Open highlighting option panel tab
256 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
257 // 3. Select "Jalview" color scheme
258 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
259 GTComboBox::selectItemByText(os, colorScheme, "Jalview");
260 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
261 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
262 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
263 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
264 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
265 CHECK_SET_ERR(a == "#64f73f", QString("a has color %1").arg(a));
266 CHECK_SET_ERR(t == "#3c88ee", QString("t has color %1").arg(t));
267 CHECK_SET_ERR(g == "#eb413c", QString("g has color %1").arg(g));
268 CHECK_SET_ERR(c == "#ffb340", QString("c has color %1").arg(c));
269 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
270 // 4. Check colors for all symbols
271 // (branches: check Jalview, Percentage identity, Percentage identity(gray), UGENE color schemes)
272 }
273
GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_3)274 GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_3) {
275 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
276 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
277 GTUtilsTaskTreeView::waitTaskFinished(os);
278 // 2. Open highlighting option panel tab
279 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
280 // 3. Select "Percentage identity" color scheme
281 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
282 GTComboBox::selectItemByText(os, colorScheme, "Percentage identity");
283 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
284 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
285 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
286 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(5, 0));
287 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
288 CHECK_SET_ERR(a == "#ccccff", QString("a has color %1").arg(a));
289 CHECK_SET_ERR(t == "#ffffff", QString("t has color %1").arg(t));
290 CHECK_SET_ERR(g == "#6464ff", QString("g has color %1").arg(g));
291 CHECK_SET_ERR(c == "#9999ff", QString("c has color %1").arg(c));
292 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
293 // 4. Check colors for all symbols
294 // (branches: check Jalview, Percentage identity, Percentage identity(gray), UGENE color schemes)
295 }
296
GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_4)297 GUI_TEST_CLASS_DEFINITION(highlighting_test_0001_4) {
298 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
299 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
300 GTUtilsTaskTreeView::waitTaskFinished(os);
301 // 2. Open highlighting option panel tab
302 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
303 // 3. Select "Percentage identity (gray)" color scheme
304 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
305 GTComboBox::selectItemByText(os, colorScheme, "Percentage identity (gray)");
306 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
307 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
308 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
309 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(5, 0));
310 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
311 CHECK_SET_ERR(a == "#cccccc", QString("a has color %1").arg(a));
312 CHECK_SET_ERR(t == "#ffffff", QString("t has color %1").arg(t));
313 CHECK_SET_ERR(g == "#646464", QString("g has color %1").arg(g));
314 CHECK_SET_ERR(c == "#999999", QString("c has color %1").arg(c));
315 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
316 // 4. Check colors for all symbols
317 // (branches: check Jalview, Percentage identity, Percentage identity(gray), UGENE color schemes)
318 }
319
GUI_TEST_CLASS_DEFINITION(highlighting_test_0002)320 GUI_TEST_CLASS_DEFINITION(highlighting_test_0002) {
321 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
322 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
323 GTUtilsMsaEditor::checkMsaEditorWindowIsActive(os);
324
325 // 2. Create custom color scheme
326 QString suffix = GTUtils::genUniqueString();
327 QString schemeName = name + "Scheme" + suffix;
328 GTUtilsMSAEditorSequenceArea::createColorScheme(os, schemeName, NewColorSchemeCreator::nucl);
329
330 // 3. Open highlighting option panel tab
331 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
332 GTUtilsOptionPanelMsa::isTabOpened(os, GTUtilsOptionPanelMsa::Highlighting);
333
334 // Expected state: color scheme added to "Color" combobox
335 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
336 GTComboBox::selectItemByText(os, colorScheme, "No colors");
337 GTComboBox::selectItemByText(os, colorScheme, schemeName);
338
339 // 4. Select custom scheme
340 // Expected state: scheme changed
341 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
342 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
343 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
344 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
345 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
346 CHECK_SET_ERR(a == "#fcff92", QString("a has color %1").arg(a));
347 CHECK_SET_ERR(t == "#ff99b1", QString("t has color %1").arg(t));
348 CHECK_SET_ERR(g == "#4eade1", QString("g has color %1").arg(g));
349 CHECK_SET_ERR(c == "#70f970", QString("c has color %1").arg(c));
350 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
351 }
352
GUI_TEST_CLASS_DEFINITION(highlighting_test_0002_1)353 GUI_TEST_CLASS_DEFINITION(highlighting_test_0002_1) {
354 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
355 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
356 GTUtilsTaskTreeView::waitTaskFinished(os);
357 // 2. Create 3 color schemes
358 QString suffix = GTUtils::genUniqueString();
359 QString scheme1 = name + "_scheme1" + suffix;
360 QString scheme2 = name + "_scheme2" + suffix;
361 QString scheme3 = name + "_scheme3" + suffix;
362 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme1, NewColorSchemeCreator::nucl);
363 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme2, NewColorSchemeCreator::nucl);
364 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme3, NewColorSchemeCreator::nucl);
365 // Expected state: color schemes added to "Color" combobox
366 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
367 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
368 GTComboBox::selectItemByText(os, colorScheme, scheme1);
369 GTComboBox::selectItemByText(os, colorScheme, scheme2);
370 GTComboBox::selectItemByText(os, colorScheme, scheme3);
371 }
372
GUI_TEST_CLASS_DEFINITION(highlighting_test_0003)373 GUI_TEST_CLASS_DEFINITION(highlighting_test_0003) {
374 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
375 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
376 GTUtilsTaskTreeView::waitTaskFinished(os);
377 // 2. Create custom color scheme
378 QString suffix = GTUtils::genUniqueString();
379 const QString scheme = name + "_scheme111111111111111111111111111111111111111111111" + suffix;
380 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme, NewColorSchemeCreator::nucl);
381 // 3. Open highlighting option panel tab
382 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
383 // 4. Select custom scheme
384 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
385 GTComboBox::selectItemByText(os, colorScheme, scheme);
386 // 5. Delete scheme which is selected
387 GTUtilsMSAEditorSequenceArea::deleteColorScheme(os, scheme);
388
389 // UGENE not crashes
390 // default color sheme is selected
391 const QString currentScheme = colorScheme->currentText();
392 CHECK_SET_ERR(currentScheme == "UGENE", QString("wrong color scheme selected: expected '%1', got '%2'").arg("UGENE").arg(currentScheme));
393
394 const QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
395 const QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
396 const QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
397 const QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
398 const QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
399 CHECK_SET_ERR(a == "#fcff92", QString("a has color %1").arg(a));
400 CHECK_SET_ERR(t == "#ff99b1", QString("t has color %1").arg(t));
401 CHECK_SET_ERR(g == "#4eade1", QString("g has color %1").arg(g));
402 CHECK_SET_ERR(c == "#70f970", QString("c has color %1").arg(c));
403 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
404 }
405
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004)406 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004) {
407 // 1. Open file test/_common_data/alphabets/extended_amino.aln
408 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
409 GTUtilsTaskTreeView::waitTaskFinished(os);
410 // 2. Open highlighting option panel tab
411 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
412 // 3. Select "No color" color scheme
413 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
414 GTComboBox::selectItemByText(os, colorScheme, "No colors");
415 // 4. Check colors for all symbols
416 for (int i = 0; i < 29; i++) {
417 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(i, 0), "#ffffff");
418 }
419 }
420
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_1)421 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_1) {
422 // 1. Open file test/_common_data/alphabets/extended_amino.aln
423 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
424 GTUtilsTaskTreeView::waitTaskFinished(os);
425 // 2. Open highlighting option panel tab
426 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
427 // 3. Select "Buried index" color scheme
428 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
429 GTComboBox::selectItemByText(os, colorScheme, "Buried index");
430 // 4. Check colors for all symbols
431 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#00a35c"); // a
432 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#00eb14"); // b
433 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#0000ff"); // c
434 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#00eb14"); // d
435 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#00f10e"); // e
436 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#008778"); // f
437 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#009d62"); // g
438 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#00d52a"); // h
439 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#0054ab"); // i
440 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
441 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#00ff00"); // k
442 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#007b84"); // l
443 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#009768"); // m
444 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#00eb14"); // n
445 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
446 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#00e01f"); // p
447 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#00f10e"); // q
448 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#00fc03"); // r
449 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#00d52a"); // s
450 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#00db24"); // t
451 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
452 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#005fa0"); // v
453 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#00a857"); // w
454 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#00b649"); // x
455 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#00e619"); // y
456 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#00f10e"); // z
457 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
458 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
459 }
460
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_2)461 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_2) {
462 // 1. Open file test/_common_data/alphabets/extended_amino.aln
463 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
464 GTUtilsTaskTreeView::waitTaskFinished(os);
465 // 2. Open highlighting option panel tab
466 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
467 // 3. Select "Clustal X" color scheme
468 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
469 GTComboBox::selectItemByText(os, colorScheme, "Clustal X");
470 // 4. Check colors for all symbols
471 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#80a0f0"); // a
472 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#ffffff"); // b
473 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#f08080"); // c
474 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#c048c0"); // d
475 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#c048c0"); // e
476 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#80a0f0"); // f
477 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#f09048"); // g
478 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#15a4a4"); // h
479 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#80a0f0"); // i
480 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
481 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#f01505"); // k
482 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#80a0f0"); // l
483 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#80a0f0"); // m
484 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#15c015"); // n
485 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
486 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#c0c000"); // p
487 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#15c015"); // q
488 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#f01505"); // r
489 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#15c015"); // s
490 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#15c015"); // t
491 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
492 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#80a0f0"); // v
493 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#80a0f0"); // w
494 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#ffffff"); // x
495 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#15a4a4"); // y
496 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#ffffff"); // z
497 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
498 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
499 }
500
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_3)501 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_3) {
502 // 1. Open file test/_common_data/alphabets/extended_amino.aln
503 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
504 GTUtilsTaskTreeView::waitTaskFinished(os);
505 // 2. Open highlighting option panel tab
506 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
507 // 3. Select "Helix propensity" color scheme
508 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
509 GTComboBox::selectItemByText(os, colorScheme, "Helix propensity");
510 // 4. Check colors for all symbols
511 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#e718e7"); // a
512 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#49b649"); // b
513 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#23dc23"); // c
514 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#778877"); // d
515 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#ff00ff"); // e
516 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#986798"); // f
517 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#00ff00"); // g
518 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#758a75"); // h
519 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#8a758a"); // i
520 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
521 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#a05fa0"); // k
522 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#ae51ae"); // l
523 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#ef10ef"); // m
524 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#1be41b"); // n
525 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
526 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#00ff00"); // p
527 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#926d92"); // q
528 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#6f906f"); // r
529 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#36c936"); // s
530 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#47b847"); // t
531 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
532 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#857a85"); // v
533 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#8a758a"); // w
534 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#758a75"); // x
535 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#21de21"); // y
536 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#c936c9"); // z
537 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
538 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
539 }
540
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_4)541 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_4) {
542 // 1. Open file test/_common_data/alphabets/extended_amino.aln
543 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
544 GTUtilsTaskTreeView::waitTaskFinished(os);
545 // 2. Open highlighting option panel tab
546 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
547 // 3. Select "Hydrophobicity" color scheme
548 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
549 GTComboBox::selectItemByText(os, colorScheme, "Hydrophobicity");
550 // 4. Check colors for all symbols
551 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#ad0052"); // a
552 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#0c00f3"); // b
553 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#c2003d"); // c
554 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#0c00f3"); // d
555 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#0c00f3"); // e
556 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#cb0034"); // f
557 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#6a0095"); // g
558 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#1500ea"); // h
559 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#ff0000"); // i
560 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
561 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#0000ff"); // k
562 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#ea0015"); // l
563 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#b0004f"); // m
564 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#0c00f3"); // n
565 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
566 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#4600b9"); // p
567 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#0c00f3"); // q
568 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#0000ff"); // r
569 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#5e00a1"); // s
570 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#61009e"); // t
571 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
572 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#f60009"); // v
573 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#5b00a4"); // w
574 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#680097"); // x
575 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#4f00b0"); // y
576 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#0c00f3"); // z
577 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
578 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
579 }
580
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_5)581 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_5) {
582 // 1. Open file test/_common_data/alphabets/extended_amino.aln
583 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
584 GTUtilsTaskTreeView::waitTaskFinished(os);
585 // 2. Open highlighting option panel tab
586 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
587 // 3. Select "Strand propensity" color scheme
588 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
589 GTComboBox::selectItemByText(os, colorScheme, "Strand propensity");
590 // 4. Check colors for all symbols
591 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#5858a7"); // a
592 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#4343bc"); // b
593 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#9d9d62"); // c
594 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#2121de"); // d
595 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#0000ff"); // e
596 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#c2c23d"); // f
597 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#4949b6"); // g
598 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#60609f"); // h
599 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#ecec13"); // i
600 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
601 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#4747b8"); // k
602 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#b2b24d"); // l
603 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#82827d"); // m
604 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#64649b"); // n
605 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
606 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#2323dc"); // p
607 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#8c8c73"); // q
608 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#6b6b94"); // r
609 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#4949b6"); // s
610 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#9d9d62"); // t
611 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
612 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#ffff00"); // v
613 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#c0c03f"); // w
614 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#797986"); // x
615 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#d3d32c"); // y
616 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#4747b8"); // z
617 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
618 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
619 }
620
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_6)621 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_6) {
622 // 1. Open file test/_common_data/alphabets/extended_amino.aln
623 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
624 GTUtilsTaskTreeView::waitTaskFinished(os);
625 // 2. Open highlighting option panel tab
626 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
627 // 3. Select "Tailor" color scheme
628 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
629 GTComboBox::selectItemByText(os, colorScheme, "Tailor");
630 // 4. Check colors for all symbols
631 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#ccff00"); // a
632 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#ffffff"); // b
633 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#ffff00"); // c
634 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#ff0000"); // d
635 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#ff0066"); // e
636 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#00ff66"); // f
637 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#ff9900"); // g
638 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#0066ff"); // h
639 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#66ff00"); // i
640 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
641 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#6600ff"); // k
642 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#33ff00"); // l
643 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#00ff00"); // m
644 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#cc00ff"); // n
645 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
646 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#ffcc00"); // p
647 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#ff00cc"); // q
648 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#0000ff"); // r
649 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#ff3300"); // s
650 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#ff6600"); // t
651 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
652 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#99ff00"); // v
653 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#00ccff"); // w
654 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#ffffff"); // x
655 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#00ffcc"); // y
656 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#ffffff"); // z
657 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
658 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
659 }
660
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_7)661 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_7) {
662 // 1. Open file test/_common_data/alphabets/extended_amino.aln
663 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
664 GTUtilsTaskTreeView::waitTaskFinished(os);
665 // 2. Open highlighting option panel tab
666 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
667 // 3. Select "Turn propensity" color scheme
668 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
669 GTComboBox::selectItemByText(os, colorScheme, "Turn propensity");
670 // 4. Check colors for all symbols
671 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#2cd3d3"); // a
672 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#f30c0c"); // b
673 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#a85757"); // c
674 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#e81717"); // d
675 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#3fc0c0"); // e
676 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#1ee1e1"); // f
677 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#ff0000"); // g
678 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#708f8f"); // h
679 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#00ffff"); // i
680 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
681 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#7e8181"); // k
682 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#1ce3e3"); // l
683 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#1ee1e1"); // m
684 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#ff0000"); // n
685 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
686 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#f60909"); // p
687 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#778888"); // q
688 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#708f8f"); // r
689 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#e11e1e"); // s
690 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#738c8c"); // t
691 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
692 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#07f8f8"); // v
693 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#738c8c"); // w
694 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#7c8383"); // x
695 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#9d6262"); // y
696 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#5ba4a4"); // z
697 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
698 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
699 }
700
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_8)701 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_8) {
702 // 1. Open file test/_common_data/alphabets/extended_amino.aln
703 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
704 GTUtilsMsaEditor::checkMsaEditorWindowIsActive(os);
705
706 // 2. Open highlighting option panel tab
707 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
708 // 3. Select "UGENE" color scheme
709 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
710 GTComboBox::selectItemByText(os, colorScheme, "UGENE");
711 // 4. Check colors for all symbols
712 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#00ccff"); // a
713 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#ccff99"); // b
714 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#6600ff"); // c
715 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#ffff00"); // d
716 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#c0bdbb"); // e
717 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#3df490"); // f
718 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#ff5082"); // g
719 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#fff233"); // h
720 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#00abed"); // i
721 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#6699ff"); // j
722 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#ffee00"); // k
723 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#008fc6"); // l
724 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#1dc0ff"); // m
725 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#33ff00"); // n
726 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffff99"); // o
727 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#d5426c"); // p
728 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#3399ff"); // q
729 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#d5c700"); // r
730 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#ff83a7"); // s
731 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#ffd0dd"); // t
732 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ff00cc"); // u
733 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#ff6699"); // v
734 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#33cc78"); // w
735 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#fcfcfc"); // x
736 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#65ffab"); // y
737 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#ffffcc"); // z
738 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#33ff00"); //*
739 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
740 }
741
GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_9)742 GUI_TEST_CLASS_DEFINITION(highlighting_test_0004_9) {
743 // 1. Open file test/_common_data/alphabets/extended_amino.aln
744 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
745 GTUtilsTaskTreeView::waitTaskFinished(os);
746 // 2. Open highlighting option panel tab
747 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
748 // 3. Select "Zappo" color scheme
749 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
750 GTComboBox::selectItemByText(os, colorScheme, "Zappo");
751 // 4. Check colors for all symbols
752 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#ffafaf"); // a
753 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#ffffff"); // b
754 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#ffff00"); // c
755 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#ff0000"); // d
756 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#ff0000"); // e
757 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#ffc800"); // f
758 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#ff00ff"); // g
759 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#6464ff"); // h
760 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#ffafaf"); // i
761 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
762 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#6464ff"); // k
763 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#ffafaf"); // l
764 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#ffafaf"); // m
765 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#00ff00"); // n
766 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
767 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#ff00ff"); // p
768 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#00ff00"); // q
769 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#6464ff"); // r
770 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#00ff00"); // s
771 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#00ff00"); // t
772 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
773 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#ffafaf"); // v
774 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#ffc800"); // w
775 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#ffffff"); // x
776 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#ffc800"); // y
777 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#ffffff"); // z
778 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
779 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
780 }
781
GUI_TEST_CLASS_DEFINITION(highlighting_test_0005)782 GUI_TEST_CLASS_DEFINITION(highlighting_test_0005) {
783 // 1. Open file test/_common_data/alphabets/extended_amino.aln
784 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
785 GTUtilsTaskTreeView::waitTaskFinished(os);
786 // 2. Create custom color scheme
787 QString suffix = GTUtils::genUniqueString();
788 const QString scheme = name + "_scheme" + suffix;
789 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme, NewColorSchemeCreator::amino);
790 // 3. Open highlighting option panel tab
791 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
792 // Expected state: color scheme added to "Color" combobox
793 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
794 GTComboBox::selectItemByText(os, colorScheme, "No colors");
795 GTComboBox::selectItemByText(os, colorScheme, scheme);
796 // 4. Select custom scheme
797 // Expected state: scheme changed
798 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 0), "#ad0052"); // a
799 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(1, 0), "#0c00f3"); // b
800 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 0), "#c2003d"); // c
801 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 0), "#0c00f3"); // d
802 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 0), "#0c00f3"); // e
803 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 0), "#cb0034"); // f
804 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 0), "#6a0095"); // g
805 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 0), "#1500ea"); // h
806 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(8, 0), "#ff0000"); // i
807 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(28, 0), "#ffffff"); // j
808 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(9, 0), "#0000ff"); // k
809 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(10, 0), "#ea0015"); // l
810 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(11, 0), "#b0004f"); // m
811 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(12, 0), "#0c00f3"); // n
812 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(26, 0), "#ffffff"); // o
813 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(13, 0), "#4600b9"); // p
814 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(14, 0), "#0c00f3"); // q
815 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(15, 0), "#0000ff"); // r
816 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(16, 0), "#5e00a1"); // s
817 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(17, 0), "#61009e"); // t
818 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(27, 0), "#ffffff"); // u
819 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(18, 0), "#f60009"); // v
820 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(19, 0), "#5b00a4"); // w
821 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(20, 0), "#680097"); // x
822 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(21, 0), "#4f00b0"); // y
823 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(22, 0), "#0c00f3"); // z
824 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(23, 0), "#ffffff"); //*
825 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(25, 0), "#ffffff"); // gap
826 }
827
GUI_TEST_CLASS_DEFINITION(highlighting_test_0005_1)828 GUI_TEST_CLASS_DEFINITION(highlighting_test_0005_1) {
829 // 1. Open file test/_common_data/alphabets/extended_amino.aln
830 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
831 GTUtilsTaskTreeView::waitTaskFinished(os);
832 // 2. Create 3 color schemes
833 QString suffix = GTUtils::genUniqueString();
834 QString scheme1 = name + "_scheme1" + suffix;
835 QString scheme2 = name + "_scheme2" + suffix;
836 QString scheme3 = name + "_scheme3" + suffix;
837 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme1, NewColorSchemeCreator::amino);
838 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme2, NewColorSchemeCreator::amino);
839 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme3, NewColorSchemeCreator::amino);
840 // Expected state: color schemes added to "Color" combobox
841 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
842 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
843 GTComboBox::selectItemByText(os, colorScheme, scheme1);
844 GTComboBox::selectItemByText(os, colorScheme, scheme2);
845 GTComboBox::selectItemByText(os, colorScheme, scheme3);
846 }
847
GUI_TEST_CLASS_DEFINITION(highlighting_test_0006)848 GUI_TEST_CLASS_DEFINITION(highlighting_test_0006) {
849 // 1. Open file test/_common_data/alphabets/extended_amino.aln
850 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "extended_amino.aln");
851 GTUtilsMsaEditor::checkMsaEditorWindowIsActive(os);
852
853 // 2. Create custom color scheme
854 QString suffix = GTUtils::genUniqueString();
855 const QString scheme = name + "_scheme" + suffix;
856 GTUtilsMSAEditorSequenceArea::createColorScheme(os, scheme, NewColorSchemeCreator::amino);
857
858 // 3. Open highlighting option panel tab
859 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
860 GTUtilsOptionPanelMsa::checkTabIsOpened(os, GTUtilsOptionPanelMsa::Highlighting);
861
862 // 4. Select custom scheme
863 QComboBox *colorScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "colorScheme"));
864 GTComboBox::selectItemByText(os, colorScheme, scheme);
865
866 // 5. Delete scheme which is selected
867 GTUtilsMSAEditorSequenceArea::deleteColorScheme(os, scheme);
868
869 // UGENE doesn't crash
870 const QString currentScheme = GTUtilsOptionPanelMsa::getColorScheme(os);
871 CHECK_SET_ERR(currentScheme == "UGENE", QString("An unexpected color scheme is set: expect '%1', got '%2'").arg("UGENE").arg(currentScheme));
872
873 GTUtilsDialog::waitForDialog(os, new PopupCheckerByText(os, QStringList() << "Appearance"
874 << "Colors"
875 << "UGENE",
876 PopupChecker::IsChecked));
877 GTUtilsMSAEditorSequenceArea::callContextMenu(os);
878
879 GTUtilsOptionPanelMsa::closeTab(os, GTUtilsOptionPanelMsa::Highlighting);
880 }
881
882 namespace {
setHighlightingType(HI::GUITestOpStatus & os,const QString & type)883 void setHighlightingType(HI::GUITestOpStatus &os, const QString &type) {
884 QComboBox *highlightingScheme = qobject_cast<QComboBox *>(GTWidget::findWidget(os, "highlightingScheme"));
885 CHECK_SET_ERR(highlightingScheme != nullptr, "highlightingScheme not found");
886 GTComboBox::selectItemByText(os, highlightingScheme, type);
887 }
888 } // namespace
889
GUI_TEST_CLASS_DEFINITION(highlighting_test_0007)890 GUI_TEST_CLASS_DEFINITION(highlighting_test_0007) {
891 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
892 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
893 GTUtilsTaskTreeView::waitTaskFinished(os);
894 // 2. Open highlighting option panel tab
895 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
896 // 3. Select Phaneroptera_falcata as reference.
897 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
898 // 4. Check no highlighting
899 setHighlightingType(os, "No highlighting");
900 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
901 QString t = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
902 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
903 QString c = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 0));
904 QString gap = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
905 CHECK_SET_ERR(a == "#fdff6a", QString("a has color %1").arg(a));
906 CHECK_SET_ERR(t == "#ff99b1", QString("t has color %1").arg(t));
907 CHECK_SET_ERR(g == "#2aa1e1", QString("g has color %1").arg(g));
908 CHECK_SET_ERR(c == "#49f949", QString("c has color %1").arg(c));
909 CHECK_SET_ERR(gap == "#ffffff", QString("gap has color %1").arg(gap));
910 /* GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0,0), "#fcff92");//yellow
911 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0,2), "#ff99b1");//red
912 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2,0),"#4eade1"); //blue
913 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4,0), "#70f970");//green
914 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4,2), "#ffffff");//white
915 */
916 }
917
GUI_TEST_CLASS_DEFINITION(highlighting_test_0007_1)918 GUI_TEST_CLASS_DEFINITION(highlighting_test_0007_1) {
919 // 1. Open file test/_common_data/scenarios/msa/ty3.aln.gz
920 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "ty3.aln.gz");
921 GTUtilsTaskTreeView::waitTaskFinished(os);
922 // 2. Open highlighting option panel tab
923 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
924 // 3. Select Phaneroptera_falcata as reference.
925 GTUtilsOptionPanelMsa::addReference(os, "CfT-1_Cladosporium_fulvum");
926 // 4. Check no highlighting
927 setHighlightingType(os, "No highlighting");
928 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 1), "#c0bdbb");
929 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 1), "#ffee00");
930 }
931
GUI_TEST_CLASS_DEFINITION(highlighting_test_0008)932 GUI_TEST_CLASS_DEFINITION(highlighting_test_0008) {
933 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
934 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
935 GTUtilsTaskTreeView::waitTaskFinished(os);
936 // 2. Open highlighting option panel tab
937 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
938 // 3. Select Phaneroptera_falcata as reference.
939 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
940 // 4. Check Agreements highlighting type
941 setHighlightingType(os, "Agreements");
942
943 QString a = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 0));
944 QString gap1 = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(0, 2));
945 QString g = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(2, 0));
946 QString gap2 = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(3, 1));
947 QString gap3 = GTUtilsMSAEditorSequenceArea::getColor(os, QPoint(4, 2));
948 CHECK_SET_ERR(a == "#fdff6a", QString("a has color %1 intead of %2").arg(a).arg("#fcff92"));
949 CHECK_SET_ERR(gap1 == "#ffffff", QString("gap1 has color %1 intead of %2").arg(gap1).arg("#ffffff"));
950 CHECK_SET_ERR(g == "#2aa1e1", QString("g has color %1 intead of %2").arg(g).arg("#4eade1"));
951 CHECK_SET_ERR(gap2 == "#ffffff", QString("gap2 has color%1 intead of %2").arg(gap2).arg("#ffffff"));
952 CHECK_SET_ERR(gap3 == "#ffffff", QString("gap3 has color %1 intead of %2").arg(gap3).arg("#ffffff"));
953 /*
954 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0,0), "#fcff92");
955 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0,2), "#ffffff");
956 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2,0), "#4eade1");
957 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3,1), "#ffffff");
958 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4,2), "#ffffff");
959 */
960 }
961
GUI_TEST_CLASS_DEFINITION(highlighting_test_0008_1)962 GUI_TEST_CLASS_DEFINITION(highlighting_test_0008_1) {
963 // 1. Open file test/_common_data/scenarios/msa/ty3.aln.gz
964 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "ty3.aln.gz");
965 GTUtilsTaskTreeView::waitTaskFinished(os);
966 // 2. Open highlighting option panel tab
967 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
968 // 3. Select Phaneroptera_falcata as reference.
969 GTUtilsOptionPanelMsa::addReference(os, "CfT-1_Cladosporium_fulvum");
970 // 4. Check Agreements highlighting type
971 setHighlightingType(os, "Agreements");
972 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 1), "#ffffff");
973 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 1), "#ffee00");
974 }
975
GUI_TEST_CLASS_DEFINITION(highlighting_test_0009)976 GUI_TEST_CLASS_DEFINITION(highlighting_test_0009) {
977 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
978 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
979 GTUtilsTaskTreeView::waitTaskFinished(os);
980 // 2. Open highlighting option panel tab
981 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
982 // 3. Select Phaneroptera_falcata as reference.
983 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
984 // 4. Check Disagreements highlighting type
985 setHighlightingType(os, "Disagreements");
986 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 1), "#ffffff");
987 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 1), "#ffffff");
988 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(5, 1), "#ffffff");
989 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 1), "#ffffff");
990 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 2), "#ffffff");
991 }
992
GUI_TEST_CLASS_DEFINITION(highlighting_test_0009_1)993 GUI_TEST_CLASS_DEFINITION(highlighting_test_0009_1) {
994 // 1. Open file test/_common_data/scenarios/msa/ty3.aln.gz
995 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "ty3.aln.gz");
996 GTUtilsTaskTreeView::waitTaskFinished(os);
997
998 // 2. Open highlighting option panel tab
999 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1000
1001 // 3. Select Phaneroptera_falcata as reference.
1002 GTUtilsOptionPanelMsa::addReference(os, "CfT-1_Cladosporium_fulvum");
1003
1004 // 4. Check Disagreements highlighting type
1005 setHighlightingType(os, "Disagreements");
1006 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 1), "#ffffff");
1007 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(7, 1), "#ffffff");
1008 }
1009
GUI_TEST_CLASS_DEFINITION(highlighting_test_0010)1010 GUI_TEST_CLASS_DEFINITION(highlighting_test_0010) {
1011 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1012 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1013 GTUtilsTaskTreeView::waitTaskFinished(os);
1014
1015 // 2. Open highlighting option panel tab
1016 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1017
1018 // 3. Select Phaneroptera_falcata as reference.
1019 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
1020
1021 // 4. Check Gaps highlighting type
1022 setHighlightingType(os, "Gaps");
1023 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 2), "#c0c0c0");
1024 }
1025
GUI_TEST_CLASS_DEFINITION(highlighting_test_0010_1)1026 GUI_TEST_CLASS_DEFINITION(highlighting_test_0010_1) {
1027 // 1. Open file test/_common_data/scenarios/msa/ty3.aln.gz
1028 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "ty3.aln.gz");
1029 GTUtilsTaskTreeView::waitTaskFinished(os);
1030 // 2. Open highlighting option panel tab
1031 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1032 // 3. Select Phaneroptera_falcata as reference.
1033 GTUtilsOptionPanelMsa::addReference(os, "CfT-1_Cladosporium_fulvum");
1034 // 4. Check Gaps highlighting type
1035 setHighlightingType(os, "Gaps");
1036 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 1), "#c0c0c0");
1037 }
1038
GUI_TEST_CLASS_DEFINITION(highlighting_test_0011)1039 GUI_TEST_CLASS_DEFINITION(highlighting_test_0011) {
1040 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1041 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1042 GTUtilsTaskTreeView::waitTaskFinished(os);
1043 // 2. Open highlighting option panel tab
1044 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1045 // 3. Select Phaneroptera_falcata as reference.
1046 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
1047 // 4. Check Transitions highlighting type
1048 setHighlightingType(os, "Transitions");
1049 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 1), "#ffffff");
1050 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(2, 1), "#ffffff");
1051 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(4, 1), "#ff99b1");
1052 }
1053
GUI_TEST_CLASS_DEFINITION(highlighting_test_0012)1054 GUI_TEST_CLASS_DEFINITION(highlighting_test_0012) {
1055 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1056 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1057 GTUtilsTaskTreeView::waitTaskFinished(os);
1058 // 2. Open highlighting option panel tab
1059 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1060 // 3. Select Phaneroptera_falcata as reference.
1061 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
1062 // 4. Check Transversions highlighting type
1063 setHighlightingType(os, "Transversions");
1064 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(0, 1), "#ffffff");
1065 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(3, 1), "#70f970");
1066 GTUtilsMSAEditorSequenceArea::checkColor(os, QPoint(6, 1), "#fcff92");
1067 }
1068
GUI_TEST_CLASS_DEFINITION(highlighting_test_0013)1069 GUI_TEST_CLASS_DEFINITION(highlighting_test_0013) {
1070 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1071 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/ma2_gapped.aln");
1072 GTUtilsTaskTreeView::waitTaskFinished(os);
1073
1074 // 2. Open highlighting option panel tab
1075 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
1076 QWidget *w = GTWidget::findWidget(os, "msa_editor_sequence_area");
1077 const QImage initImg = GTWidget::getImage(os, w);
1078
1079 // 3. Check "use dots" checkbox
1080 setHighlightingType(os, "Agreements");
1081 QCheckBox *useDots = qobject_cast<QCheckBox *>(GTWidget::findWidget(os, "useDots"));
1082 CHECK_SET_ERR(useDots != nullptr, "use dots checkbox not found");
1083 GTCheckBox::setChecked(os, useDots, true);
1084
1085 // Expected state: no effect
1086 QImage img = GTWidget::getImage(os, w);
1087 CHECK_SET_ERR(img == initImg, "sequence area unexpectedly changed");
1088
1089 // 4. Select Phaneroptera_falcata as reference.
1090 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
1091
1092 // Expected state: not highlighted changed to dots
1093 img = GTWidget::getImage(os, w);
1094 CHECK_SET_ERR(img != initImg, "image not changed"); // no way to check dots. Can only check that sequence area changed
1095 }
1096
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0001)1097 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0001) {
1098 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1099 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1100 GTUtilsTaskTreeView::waitTaskFinished(os);
1101 // 2. Open Pairwise alignment option panel tab
1102 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1103 // 3. Add Phaneroptera_falcata sequence
1104 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1105 // Expected state: align button is disabled
1106 QPushButton *alignButton = qobject_cast<QPushButton *>(GTWidget::findWidget(os, "alignButton"));
1107 CHECK_SET_ERR(alignButton != nullptr, "alignButton not found");
1108 CHECK_SET_ERR(!alignButton->isEnabled(), "alignButton is unexpectidly enabled");
1109 // 4. Add Isophya_altaica_EF540820 sequence
1110 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1111 // Expected state: Similarity label appeared. Similarity is 43%. Align button enabled
1112 CHECK_SET_ERR(alignButton->isEnabled(), "align button is unexpectibly disabled");
1113 QLabel *similarityValueLabel = qobject_cast<QLabel *>(GTWidget::findWidget(os, "similarityValueLabel"));
1114 CHECK_SET_ERR(similarityValueLabel != nullptr, "similarityValueLabel not found");
1115 QString percent = similarityValueLabel->text();
1116 CHECK_SET_ERR(percent == "43%", QString("unexpected percent: %1").arg(percent));
1117 // (branches: amino, raw alphabets)
1118 }
1119
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0002)1120 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0002) {
1121 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1122 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1123 GTUtilsTaskTreeView::waitTaskFinished(os);
1124 // 2. Open Pairwise alignment option panel tab
1125 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1126 // 3. Add Phaneroptera_falcata sequence two times
1127 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1128 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Phaneroptera_falcata");
1129 // Expected state: Similarity label appeared. Similarity is 100%. Align button disabled
1130 QPushButton *alignButton = qobject_cast<QPushButton *>(GTWidget::findWidget(os, "alignButton"));
1131 CHECK_SET_ERR(alignButton != nullptr, "alignButton not found");
1132 CHECK_SET_ERR(!alignButton->isEnabled(), "align button is unexpectibly disabled");
1133
1134 QLabel *similarityValueLabel = qobject_cast<QLabel *>(GTWidget::findWidget(os, "similarityValueLabel"));
1135 CHECK_SET_ERR(similarityValueLabel != nullptr, "similarityValueLabel not found");
1136 QString percent = similarityValueLabel->text();
1137 CHECK_SET_ERR(percent == "100%", QString("unexpected percent: %1").arg(percent));
1138 // (branches: amino, raw alphabets)
1139 }
1140
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0003)1141 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0003) {
1142 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1143 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1144 GTUtilsTaskTreeView::waitTaskFinished(os);
1145 // 2. Open Pairwise alignment option panel tab
1146 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1147 // 3. Add Phaneroptera_falcata sequence with popup helper
1148 // Expected state: sequence added
1149 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata", GTUtilsOptionPanelMsa::Completer);
1150 QLineEdit *line1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
1151 CHECK_SET_ERR(line1 != nullptr, "lineEdit 1 not found");
1152 CHECK_SET_ERR(line1->text() == "Phaneroptera_falcata", QString("unexpected lineEdit 1 text: %1").arg(line1->text()));
1153 // 4. Add Isophya_altaica_EF540820 sequence with popup helper
1154 // Expected state: sequence added
1155 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820", GTUtilsOptionPanelMsa::Completer);
1156 QLineEdit *line2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
1157 CHECK_SET_ERR(line2 != nullptr, "lineEdit 2 not found");
1158 CHECK_SET_ERR(line2->text() == "Isophya_altaica_EF540820", QString("unexpected lineEdit 2 text: %1").arg(line2->text()));
1159 // 5. Remove Phaneroptera_falcata with button
1160 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 1));
1161 CHECK_SET_ERR(line1->text().isEmpty(), QString("unexpected lineEdit 1 text: %1").arg(line1->text()));
1162 // 6. Remove Phaneroptera_falcata with button
1163 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 2));
1164 CHECK_SET_ERR(line2->text().isEmpty(), QString("unexpected lineEdit 2 text: %1").arg(line2->text()));
1165 }
1166
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0004)1167 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0004) {
1168 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1169 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa/", "ma2_gapped.aln");
1170 GTUtilsTaskTreeView::waitTaskFinished(os);
1171 // 2. Open Pairwise alignment option panel tab
1172 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1173 // 3. Type wrong names in sequences' line edits.
1174 QLineEdit *line1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
1175 CHECK_SET_ERR(line1 != nullptr, "lineEdit 1 not found");
1176 GTLineEdit::setText(os, line1, "wrong name");
1177 CHECK_SET_ERR(GTBaseCompleter::isEmpty(os, line1), "Completer is not empty");
1178
1179 GTKeyboardDriver::keyClick(Qt::Key_Escape);
1180
1181 QLineEdit *line2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
1182 CHECK_SET_ERR(line2 != nullptr, "lineEdit 2 not found");
1183 GTLineEdit::setText(os, line2, "wrong name");
1184 CHECK_SET_ERR(GTBaseCompleter::isEmpty(os, line2), "Completer is not empty");
1185 GTKeyboardDriver::keyClick(Qt::Key_Escape);
1186 GTUtilsOptionPanelMsa::toggleTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1187 // Expected state: empty popup helper appeared
1188 }
1189
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0005)1190 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0005) {
1191 // 1. Open file test/_common_data/scenarios/msa/ty3.aln.gz
1192 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "ty3.aln.gz");
1193 GTUtilsTaskTreeView::waitTaskFinished(os);
1194 // 2. Open Pairwise alignment option panel tab
1195 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1196 // 3. Add two sequences to PA line edits
1197 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "CfT-1_Cladosporium_fulvum");
1198 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "AspOryTy3-2");
1199 // Expected state: sequenseq added
1200 QLineEdit *line1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
1201 QLineEdit *line2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
1202 CHECK_SET_ERR(line1 != nullptr, "line edit1 not found");
1203 CHECK_SET_ERR(line2 != nullptr, "line edit2 not found");
1204 CHECK_SET_ERR(line1->text() == "CfT-1_Cladosporium_fulvum", QString("wrong text in line edit1: %1").arg(line1->text()));
1205 CHECK_SET_ERR(line2->text() == "AspOryTy3-2", QString("wrong text in line edit2: %1").arg(line2->text()));
1206 // 4. Remove sequenses
1207 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 1));
1208 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 2));
1209 // Expected state: sequences removed
1210 CHECK_SET_ERR(line1->text().isEmpty(), QString("wrong text in line edit1: %1").arg(line1->text()));
1211 CHECK_SET_ERR(line2->text().isEmpty(), QString("wrong text in line edit2: %1").arg(line2->text()));
1212 }
1213
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0005_1)1214 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0005_1) {
1215 // 1. Open file test/_common_data/alphabets/raw_alphabet.aln
1216 GTFileDialog::openFile(os, testDir + "_common_data/alphabets", "raw_alphabet.aln");
1217 GTUtilsTaskTreeView::waitTaskFinished(os);
1218 // 2. Open Pairwise alignment option panel tab
1219 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1220 // Expected state: wrong alphabet hint appeared
1221 QLabel *lblMessage = qobject_cast<QLabel *>(GTWidget::findWidget(os, "lblMessage"));
1222 CHECK_SET_ERR(lblMessage != nullptr, "lblMessage not found");
1223 CHECK_SET_ERR(lblMessage->text() == "Pairwise alignment is not available for alignments with \"Raw\" alphabet.",
1224 QString("wrong label text: %1").arg(lblMessage->text()));
1225 // 3. Add two sequences to PA line edits
1226 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "seq7_1");
1227 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "seq7");
1228 // Expected state: sequenseq added
1229 QLineEdit *line1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
1230 QLineEdit *line2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
1231 CHECK_SET_ERR(line1 != nullptr, "line edit1 not found");
1232 CHECK_SET_ERR(line2 != nullptr, "line edit2 not found");
1233 CHECK_SET_ERR(line1->text() == "seq7_1", QString("wrong text in line edit1: %1").arg(line1->text()));
1234 CHECK_SET_ERR(line2->text() == "seq7", QString("wrong text in line edit2: %1").arg(line2->text()));
1235 // 4. Remove sequenses
1236 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 1));
1237 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 2));
1238 GTWidget::click(os, GTUtilsOptionPanelMsa::getDeleteButton(os, 1));
1239
1240 // Expected state: sequences removed
1241 CHECK_SET_ERR(line1->text().isEmpty(), QString("wrong text in line edit1: %1").arg(line1->text()));
1242 CHECK_SET_ERR(line2->text().isEmpty(), QString("wrong text in line edit2: %1").arg(line2->text()));
1243 }
1244
1245 namespace {
1246
expandSettings(HI::GUITestOpStatus & os,const QString & widgetName,const QString & arrowName)1247 void expandSettings(HI::GUITestOpStatus &os, const QString &widgetName, const QString &arrowName) {
1248 QWidget *widget = GTWidget::findWidget(os, widgetName);
1249 CHECK_SET_ERR(widget != nullptr, QString("%1 not found").arg(widgetName));
1250 if (widget->isHidden()) {
1251 GTWidget::click(os, GTWidget::findWidget(os, arrowName));
1252 }
1253 }
1254
expandAlgoSettings(HI::GUITestOpStatus & os)1255 void expandAlgoSettings(HI::GUITestOpStatus &os) {
1256 expandSettings(os, "settingsContainerWidget", "ArrowHeader_Algorithm settings");
1257 }
1258
expandOutputSettings(HI::GUITestOpStatus & os)1259 void expandOutputSettings(HI::GUITestOpStatus &os) {
1260 expandSettings(os, "outputContainerWidget", "ArrowHeader_Output settings");
1261 }
1262
1263 } // namespace
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0006)1264 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0006) {
1265 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1266 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1267 GTUtilsTaskTreeView::waitTaskFinished(os);
1268 // 2. Open Pairwise alignment option panel tab. check spinboxes limits for KAilign
1269 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1270 expandAlgoSettings(os);
1271
1272 QDoubleSpinBox *gapOpen = qobject_cast<QDoubleSpinBox *>(GTWidget::findWidget(os, "gapOpen"));
1273 QDoubleSpinBox *gapExtd = qobject_cast<QDoubleSpinBox *>(GTWidget::findWidget(os, "gapExtd"));
1274 QDoubleSpinBox *gapTerm = qobject_cast<QDoubleSpinBox *>(GTWidget::findWidget(os, "gapTerm"));
1275 QDoubleSpinBox *bonusScore = qobject_cast<QDoubleSpinBox *>(GTWidget::findWidget(os, "bonusScore"));
1276
1277 GTDoubleSpinbox::checkLimits(os, gapOpen, 0, 65535);
1278 GTDoubleSpinbox::checkLimits(os, gapExtd, 0, 65535);
1279 GTDoubleSpinbox::checkLimits(os, gapTerm, 0, 65535);
1280 GTDoubleSpinbox::checkLimits(os, bonusScore, 0, 65535);
1281 // 3. Add Phaneroptera_falcata and Isophya_altaica_EF540820 sequences to PA
1282 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1283 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1284 // 4. Align with KAlign
1285 GTWidget::click(os, GTWidget::findWidget(os, "alignButton"));
1286 QString expected = "AAGACTTCTTTTAA\n"
1287 "AAGCTTACT---AA";
1288 GTUtilsMSAEditorSequenceArea::checkSelection(os, QPoint(0, 0), QPoint(13, 1), expected);
1289 }
1290
1291 namespace {
1292
setSpinValue(HI::GUITestOpStatus & os,double value,const QString & spinName)1293 void setSpinValue(HI::GUITestOpStatus &os, double value, const QString &spinName) {
1294 expandAlgoSettings(os);
1295 QDoubleSpinBox *spinBox = qobject_cast<QDoubleSpinBox *>(GTWidget::findWidget(os, spinName));
1296 CHECK_SET_ERR(spinBox != nullptr, spinName + " spinbox not found");
1297 GTDoubleSpinbox::setValue(os, spinBox, value, GTGlobals::UseKeyBoard);
1298 }
1299
setGapOpen(HI::GUITestOpStatus & os,double value)1300 void setGapOpen(HI::GUITestOpStatus &os, double value) {
1301 setSpinValue(os, value, "gapOpen");
1302 }
1303
setGapExtd(HI::GUITestOpStatus & os,double value)1304 void setGapExtd(HI::GUITestOpStatus &os, double value) {
1305 setSpinValue(os, value, "gapExtd");
1306 }
1307
setGapTerm(HI::GUITestOpStatus & os,double value)1308 void setGapTerm(HI::GUITestOpStatus &os, double value) {
1309 setSpinValue(os, value, "gapTerm");
1310 }
1311
setBonusScore(HI::GUITestOpStatus & os,double value)1312 void setBonusScore(HI::GUITestOpStatus &os, double value) {
1313 setSpinValue(os, value, "bonusScore");
1314 }
1315
inNewWindow(HI::GUITestOpStatus & os,bool inNew)1316 void inNewWindow(HI::GUITestOpStatus &os, bool inNew) {
1317 expandOutputSettings(os);
1318 QCheckBox *inNewWindowCheckBox = qobject_cast<QCheckBox *>(GTWidget::findWidget(os, "inNewWindowCheckBox"));
1319 CHECK_SET_ERR(inNewWindowCheckBox != nullptr, "inNewWindowCheckBox not found");
1320 GTCheckBox::setChecked(os, inNewWindowCheckBox, inNew);
1321 }
1322
align(HI::GUITestOpStatus & os)1323 void align(HI::GUITestOpStatus &os) {
1324 GTWidget::click(os, GTWidget::findWidget(os, "alignButton"));
1325 }
1326
1327 } // namespace
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007)1328 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007) {
1329 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1330 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1331 GTUtilsTaskTreeView::waitTaskFinished(os);
1332 // 2. Open Pairwise alignment option panel tab
1333 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1334 // 3. Add Phaneroptera_falcata and Isophya_altaica_EF540820 sequences to PA
1335 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1336 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1337 // 4. Set gapOpen to 1. Press align button
1338 setGapOpen(os, 1);
1339 inNewWindow(os, false);
1340 align(os);
1341 // Expected state: Isophya_altaica_EF540820 is AAG-CTTA-CT-AA
1342 GTUtilsMSAEditorSequenceArea::checkSelection(os, QPoint(0, 1), QPoint(13, 1), "AAG-CTTA-CT-AA");
1343 }
1344
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_1)1345 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_1) {
1346 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1347 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1348 GTUtilsTaskTreeView::waitTaskFinished(os);
1349 // 2. Open Pairwise alignment option panel tab
1350 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1351 // 3. Add Phaneroptera_falcata and Isophya_altaica_EF540820 sequences to PA
1352 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1353 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1354 // 4. Set gap extension penalty to 1000. Press align button
1355 setGapExtd(os, 1000);
1356 inNewWindow(os, false);
1357 align(os);
1358 // Expected state: Isophya_altaica_EF540820 is AAG-CT--TACTAA
1359 GTUtilsMSAEditorSequenceArea::checkSelection(os, QPoint(0, 1), QPoint(13, 1), "AAG-CT--TACTAA");
1360 }
1361
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_2)1362 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_2) {
1363 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1364 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1365 GTUtilsTaskTreeView::waitTaskFinished(os);
1366 // 2. Open Pairwise alignment option panel tab
1367 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1368 // 3. Add Phaneroptera_falcata and Isophya_altaica_EF540820 sequences to PA
1369 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1370 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1371 // 4. Set terminate gap penalty to 1000. Press align button
1372 setGapTerm(os, 1000);
1373 inNewWindow(os, false);
1374 align(os);
1375 // Expected state: Isophya_altaica_EF540820 is AAGCTTACT---AA
1376 GTUtilsMSAEditorSequenceArea::checkSelection(os, QPoint(0, 1), QPoint(13, 1), "AAGCTTACT---AA");
1377 }
1378
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_3)1379 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0007_3) {
1380 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1381 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1382 GTUtilsTaskTreeView::waitTaskFinished(os);
1383 // 2. Open Pairwise alignment option panel tab
1384 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1385 // 3. Add Phaneroptera_falcata and Isophya_altaica_EF540820 sequences to PA
1386 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1387 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1388 // 4. Set gap open to 10, gap ext to 1, bonus score to 1. Press align button
1389 setGapOpen(os, 10);
1390 setGapExtd(os, 1);
1391 setBonusScore(os, 1);
1392 inNewWindow(os, false);
1393 align(os);
1394 // Expected state: Isophya_altaica_EF540820 is AAG-CTTACT---AA
1395 GTUtilsMSAEditorSequenceArea::checkSelection(os, QPoint(0, 1), QPoint(14, 1), "AAG-CTTACT---AA");
1396 }
1397 namespace {
setOutputPath(HI::GUITestOpStatus & os,const QString & path,const QString & name)1398 void setOutputPath(HI::GUITestOpStatus &os, const QString &path, const QString &name) {
1399 expandOutputSettings(os);
1400 QWidget *outputFileSelectButton = GTWidget::findWidget(os, "outputFileSelectButton");
1401 CHECK_SET_ERR(outputFileSelectButton != nullptr, "outputFileSelectButton not found");
1402 GTUtilsDialog::waitForDialogWhichMayRunOrNot(os, new MessageBoxDialogFiller(os, QMessageBox::Yes));
1403 GTUtilsDialog::waitForDialog(os, new GTFileDialogUtils(os, path, name, GTFileDialogUtils::Save));
1404 GTWidget::click(os, outputFileSelectButton);
1405 }
1406 } // namespace
1407
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0008)1408 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0008) {
1409 const QString fileName = "pairwise_alignment_test_0008.aln";
1410 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1411 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1412 GTUtilsTaskTreeView::waitTaskFinished(os);
1413 // 2. Open Pairwise alignment option panel tab
1414 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1415 // 3. Add Phaneroptera_falcata sequence
1416 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1417 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1418 // 4. Add Isophya_altaica_EF540820 sequence
1419 // 5. Select some existing file as output
1420 QString s = sandBoxDir + fileName;
1421 QFile f(s);
1422 bool created = f.open(QFile::ReadWrite);
1423 CHECK_SET_ERR(created, "file not created");
1424 f.close();
1425
1426 setOutputPath(os, sandBoxDir, fileName);
1427 align(os);
1428 // Expected state: file rewrited
1429 int size = GTFile::getSize(os, sandBoxDir + fileName);
1430 CHECK_SET_ERR(size == 185, QString("unexpected file size %1").arg(size));
1431 GTUtilsProjectTreeView::doubleClickItem(os, fileName);
1432 }
1433
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0009)1434 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0009) {
1435 GTLogTracer l;
1436 const QString fileName = "pairwise_alignment_test_0009.aln";
1437 const QString dirName = "pairwise_alignment_test_0009";
1438 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1439 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1440 GTUtilsTaskTreeView::waitTaskFinished(os);
1441 // 2. Open Pairwise alignment option panel tab
1442 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1443 // 3. Add Phaneroptera_falcata sequence
1444 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1445 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1446 // 4. Add Isophya_altaica_EF540820 sequence
1447 // 5. Select some existing read-only file as output
1448 QString dirPath = sandBoxDir + "pairwise_alignment_test_0009";
1449
1450 QDir().mkpath(dirPath);
1451
1452 const QString filePath = dirPath + "/" + fileName;
1453 QFile f(filePath);
1454 bool created = f.open(QFile::ReadWrite);
1455 CHECK_SET_ERR(created, "file not created");
1456 f.close();
1457 GTFile::setReadOnly(os, filePath);
1458
1459 setOutputPath(os, sandBoxDir + dirName, fileName);
1460 align(os);
1461 // Expected state: error in log: Task {Pairwise alignment task} finished with error: No permission to write to 'pairwise_alignment_test_0009.aln' file.
1462 QString error = l.getJoinedErrorString();
1463 const QString expectedFilePath = QFileInfo(filePath).absoluteFilePath();
1464 const QString expected = QString("Task {Pairwise alignment task} finished with error: No permission to write to \'%1\' file.").arg(expectedFilePath);
1465 CHECK_SET_ERR(error.contains(expected), QString("enexpected error: %1").arg(error));
1466
1467 GTFile::setReadWrite(os, filePath);
1468 }
1469
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0010)1470 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0010) {
1471 GTLogTracer l;
1472 const QString fileName = "pairwise_alignment_test_0010.aln";
1473 const QString dirName = "pairwise_alignment_test_0010";
1474 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1475 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1476 GTUtilsTaskTreeView::waitTaskFinished(os);
1477 // 2. Open Pairwise alignment option panel tab
1478 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1479 // 3. Add Phaneroptera_falcata sequence
1480 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1481 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1482 // 4. Add Isophya_altaica_EF540820 sequence
1483 // 5. Select some existing read-only file as output
1484 QString dirPath = sandBoxDir + dirName;
1485 bool ok = QDir().mkpath(dirPath);
1486 CHECK_SET_ERR(ok, "subfolder not created");
1487
1488 GTFile::setReadOnly(os, dirPath);
1489
1490 const QString filePath = dirPath + "/" + fileName;
1491
1492 setOutputPath(os, dirPath, fileName);
1493 align(os);
1494 // Expected state: error in log: Task {Pairwise alignment task} finished with error: No permission to write to 'COI_transl.aln' file.
1495 QString error = l.getJoinedErrorString();
1496 const QString expectedFilePath = QFileInfo(filePath).absoluteFilePath();
1497 const QString expected = QString("Task {Pairwise alignment task} finished with error: No permission to write to \'%1\' file.").arg(expectedFilePath);
1498 CHECK_SET_ERR(error == expected, QString("enexpected error: %1").arg(error));
1499
1500 GTFile::setReadWrite(os, dirPath);
1501 }
1502
GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0011)1503 GUI_TEST_CLASS_DEFINITION(pairwise_alignment_test_0011) {
1504 // 1. Open file test/_common_data/scenarios/msa/ma2_gapped.aln
1505 GTFileDialog::openFile(os, testDir + "_common_data/scenarios/msa", "ma2_gapped.aln");
1506 GTUtilsTaskTreeView::waitTaskFinished(os);
1507 // 2. Open Pairwise alignment option panel tab
1508 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
1509 // 3. Add Phaneroptera_falcata sequence
1510 // 4. Add Isophya_altaica_EF540820 sequence
1511 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
1512 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
1513 // 5. Use empty path in output settings
1514 expandOutputSettings(os);
1515 QLineEdit *outputFileLineEdit = qobject_cast<QLineEdit *>(GTWidget::findWidget(os, "outputFileLineEdit"));
1516 CHECK_SET_ERR(outputFileLineEdit != nullptr, "outputFileLineEdit not found");
1517 QString initialText = outputFileLineEdit->text();
1518 CHECK_SET_ERR(!initialText.isEmpty(), "line edit is empty");
1519 GTWidget::click(os, outputFileLineEdit);
1520 GTKeyboardDriver::keyClick('a', Qt::ControlModifier);
1521 GTKeyboardDriver::keyClick(Qt::Key_Delete);
1522 QString finalText = outputFileLineEdit->text();
1523 // Expected state: empty path can not be set
1524 CHECK_SET_ERR(initialText == finalText, QString("wrong text! expected: '%1', actual: '%2'").arg(initialText).arg(finalText));
1525 }
1526
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0001)1527 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0001) {
1528 // 1. Open data/samples/CLUSTALW/COI.aln
1529 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1530 GTUtilsTaskTreeView::waitTaskFinished(os);
1531 // 2. Open tree settings option panel tab
1532 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1533 // 3. Press "Open tree" button. Select data/samples/CLUSTALW/COI.nwk in file dialog
1534 GTUtilsDialog::waitForDialog(os, new GTFileDialogUtils(os, dataDir + "samples/Newick", "COI.nwk"));
1535 GTWidget::click(os, GTWidget::findWidget(os, "OpenTreeButton"));
1536 // Expected state: tree opened.
1537 GTWidget::findWidget(os, "treeView");
1538 }
1539
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0002)1540 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0002) {
1541 // 1. Open data/samples/CLUSTALW/COI.aln
1542 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1543 GTUtilsTaskTreeView::waitTaskFinished(os);
1544 // 2. Open tree settings option panel tab
1545 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1546 // 3. Press "build tree" button.
1547 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default"));
1548 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1549 GTUtilsTaskTreeView::waitTaskFinished(os);
1550
1551 // 4. Fill build tree dialog with defaulb values
1552 // Expected state: tree built.
1553 GTWidget::findWidget(os, "treeView");
1554 }
1555
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0003)1556 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0003) {
1557 // 1. Open data/samples/CLUSTALW/COI.aln
1558 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW/COI.aln");
1559 GTUtilsTaskTreeView::waitTaskFinished(os);
1560
1561 // 2. Open tree settings option panel tab. build tree
1562 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1563 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1564 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1565 GTUtilsTaskTreeView::waitTaskFinished(os);
1566
1567 // Check/prepare tree widgets.
1568 QWidget *treeView = GTWidget::findWidget(os, "treeView");
1569 QWidget *heightSlider = GTWidget::findWidget(os, "heightSlider");
1570 QComboBox *layoutCombo = GTWidget::findExactWidget<QComboBox *>(os, "layoutCombo");
1571
1572 const QImage initImage = GTWidget::getImage(os, treeView);
1573
1574 // 3. Select circular layout
1575 GTComboBox::selectItemByText(os, layoutCombo, "Circular");
1576 GTUtilsTaskTreeView::waitTaskFinished(os);
1577
1578 // Expected state: layout changed, height slider is disabled
1579 const QImage circularImage = GTWidget::getImage(os, treeView);
1580 CHECK_SET_ERR(initImage != circularImage, "tree view not changed to circular");
1581 CHECK_SET_ERR(!heightSlider->isEnabled(), "heightSlider in enabled for circular layout");
1582
1583 // 4. Select unrooted layout
1584 GTComboBox::selectItemByText(os, layoutCombo, "Unrooted");
1585 GTUtilsTaskTreeView::waitTaskFinished(os);
1586
1587 // Expected state: layout changed, height slider is disabled
1588 const QImage unrootedImage = GTWidget::getImage(os, treeView);
1589 CHECK_SET_ERR(initImage != unrootedImage, "tree view not changed to unrooted");
1590 CHECK_SET_ERR(!heightSlider->isEnabled(), "heightSlider in enabled for unrooted layout");
1591
1592 // 5. Select rectangular layout
1593 GTComboBox::selectItemByText(os, layoutCombo, "Rectangular");
1594 GTUtilsTaskTreeView::waitTaskFinished(os);
1595
1596 // Expected state: tree is similar to the beginning, height slider is enabled
1597 const QImage rectangularImage = GTWidget::getImage(os, treeView);
1598 CHECK_SET_ERR(initImage == rectangularImage, "final image is not equal to initial");
1599 CHECK_SET_ERR(heightSlider->isEnabled(), "heightSlider in disabled for rectangular layout");
1600 }
1601
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0004)1602 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0004) {
1603 // Compare that 'Default'/'Cladogram'/'Phylogram' are stable within the type and are different between different types.
1604 // To check that images are stable capture 2 versions of each image.
1605
1606 // Open data/samples/CLUSTALW/COI.aln.
1607 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW/COI.aln");
1608 GTUtilsTaskTreeView::waitTaskFinished(os);
1609
1610 // Open tree settings option panel tab. build tree.
1611 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1612 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1613 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1614 GTUtilsTaskTreeView::waitTaskFinished(os);
1615
1616 QWidget *treeView = GTWidget::findWidget(os, "treeView");
1617 QComboBox *treeViewCombo = GTWidget::findExactWidget<QComboBox *>(os, "treeViewCombo");
1618
1619 QAbstractButton *syncModeButton = GTAction::button(os, "sync_msa_action");
1620 GTWidget::click(os, syncModeButton);
1621 CHECK_SET_ERR(!syncModeButton->isChecked(), "Sync mode must be OFF");
1622
1623 // Capture 2 variants of 'Phylogram', 'Default', 'Cladogram' images.
1624 GTComboBox::selectItemByText(os, treeViewCombo, "Phylogram");
1625 GTUtilsTaskTreeView::waitTaskFinished(os);
1626 const QImage phylogramImage1 = GTWidget::getImage(os, treeView);
1627
1628 GTComboBox::selectItemByText(os, treeViewCombo, "Default");
1629 GTUtilsTaskTreeView::waitTaskFinished(os);
1630 const QImage defaultImage1 = GTWidget::getImage(os, treeView);
1631
1632 GTComboBox::selectItemByText(os, treeViewCombo, "Cladogram");
1633 GTUtilsTaskTreeView::waitTaskFinished(os);
1634 const QImage cladogramImage1 = GTWidget::getImage(os, treeView);
1635
1636 GTComboBox::selectItemByText(os, treeViewCombo, "Phylogram");
1637 GTUtilsTaskTreeView::waitTaskFinished(os);
1638 const QImage phylogramImage2 = GTWidget::getImage(os, treeView);
1639
1640 GTComboBox::selectItemByText(os, treeViewCombo, "Cladogram");
1641 GTUtilsTaskTreeView::waitTaskFinished(os);
1642 const QImage cladogramImage2 = GTWidget::getImage(os, treeView);
1643
1644 GTComboBox::selectItemByText(os, treeViewCombo, "Default");
1645 GTUtilsTaskTreeView::waitTaskFinished(os);
1646 const QImage defaultImage2 = GTWidget::getImage(os, treeView);
1647
1648 CHECK_SET_ERR(defaultImage1 == defaultImage2, "Default images are not equal");
1649 CHECK_SET_ERR(cladogramImage1 == cladogramImage2, "Cladogram images are not equal");
1650 CHECK_SET_ERR(phylogramImage1 == phylogramImage1, "Phylogram images are not equal");
1651
1652 CHECK_SET_ERR(defaultImage1 != cladogramImage1, "Default image must not be equal to Cladogram");
1653 CHECK_SET_ERR(defaultImage1 != phylogramImage1, "Default image must not be equal to Phylogram");
1654 CHECK_SET_ERR(cladogramImage1 != phylogramImage1, "Cladogram image image must not be equal to Phylogram");
1655 }
1656
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0005)1657 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0005) {
1658 // 1. Open data/samples/CLUSTALW/COI.aln
1659 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1660 GTUtilsTaskTreeView::waitTaskFinished(os);
1661
1662 // 2. Open tree settings option panel tab. build tree
1663 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1664 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1665 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1666 GTUtilsTaskTreeView::waitTaskFinished(os);
1667
1668 QCheckBox *showNamesCheck = qobject_cast<QCheckBox *>(GTWidget::findWidget(os, "showNamesCheck"));
1669 CHECK_SET_ERR(showNamesCheck != nullptr, "showNamesCheck not found");
1670 QCheckBox *showDistancesCheck = qobject_cast<QCheckBox *>(GTWidget::findWidget(os, "showDistancesCheck"));
1671 CHECK_SET_ERR(showDistancesCheck != nullptr, "showDistancesCheck not found");
1672 QCheckBox *alignLabelsCheck = qobject_cast<QCheckBox *>(GTWidget::findWidget(os, "alignLabelsCheck"));
1673 CHECK_SET_ERR(alignLabelsCheck != nullptr, "alignLabelsCheck not found");
1674 QWidget *parent = GTWidget::findWidget(os, "COI [COI.aln]_SubWindow");
1675 QWidget *parent2 = GTWidget::findWidget(os, "COI [COI.aln]", parent);
1676 QGraphicsView *treeView = qobject_cast<QGraphicsView *>(GTWidget::findWidget(os, "treeView", parent2));
1677
1678 QList<QGraphicsSimpleTextItem *> initNames = GTUtilsPhyTree::getVisibleLabels(os, treeView);
1679 QList<QGraphicsSimpleTextItem *> initDistanses = GTUtilsPhyTree::getVisibleDistances(os, treeView);
1680 int initNamesNumber = initNames.count();
1681 int initDistansesNumber = initDistanses.count();
1682
1683 // 3. Uncheck "show names" checkbox.
1684 GTCheckBox::setChecked(os, showNamesCheck, false);
1685
1686 // Expected state: names are not shown, align labels checkbox is disabled
1687 QList<QGraphicsSimpleTextItem *> names = GTUtilsPhyTree::getVisibleLabels(os, treeView);
1688 CHECK_SET_ERR(names.count() == 0, QString("unexpected number of names: %1").arg(names.count()));
1689 CHECK_SET_ERR(!alignLabelsCheck->isEnabled(), "align labels checkbox is unexpectidly enabled");
1690
1691 // 4. Check "show names" checkbox.
1692 GTCheckBox::setChecked(os, showNamesCheck, true);
1693
1694 // Expected state: names are shown, align labels checkbox is enabled
1695 names = GTUtilsPhyTree::getVisibleLabels(os, treeView);
1696 CHECK_SET_ERR(names.count() == initNamesNumber, QString("unexpected number of names: %1").arg(names.count()));
1697 CHECK_SET_ERR(alignLabelsCheck->isEnabled(), "align labels checkbox is unexpectidly disabled");
1698
1699 // 5. Uncheck "show distanses" checkbox.
1700 GTCheckBox::setChecked(os, showDistancesCheck, false);
1701
1702 // Expected state: distanses are not shown
1703 QList<QGraphicsSimpleTextItem *> distanses = GTUtilsPhyTree::getVisibleDistances(os, treeView);
1704 CHECK_SET_ERR(distanses.count() == 0, QString("unexpected number of distanses: %1").arg(names.count()));
1705
1706 // 6. Check "show distanses" checkbox.
1707 GTCheckBox::setChecked(os, showDistancesCheck, true);
1708
1709 // Expected state: distanses are shown
1710 distanses = GTUtilsPhyTree::getVisibleDistances(os, treeView);
1711 CHECK_SET_ERR(distanses.count() == initDistansesNumber, QString("unexpected number of distanses: %1").arg(names.count()));
1712
1713 // 7. Check "align labels" checkbox.
1714 // saving init image
1715 GTCheckBox::setChecked(os, alignLabelsCheck, false);
1716 QWidget *w = GTWidget::findWidget(os, "treeView");
1717 CHECK_SET_ERR(w != nullptr, "tree view not found");
1718 QImage initImg = GTWidget::getImage(os, w); // initial state
1719
1720 GTCheckBox::setChecked(os, alignLabelsCheck, true);
1721
1722 // Expected state: labels are aligned
1723 QImage alignedImg = GTWidget::getImage(os, w);
1724 CHECK_SET_ERR(alignedImg != initImg, "labels not aligned");
1725
1726 // 8. Uncheck "align labels" checkbox.
1727 GTCheckBox::setChecked(os, alignLabelsCheck, false);
1728
1729 // Expected state: labels are not aligned
1730 QImage finalImg = GTWidget::getImage(os, w);
1731 CHECK_SET_ERR(finalImg == initImg, "tree ialigned");
1732 }
1733
1734 namespace {
expandFontSettings(HI::GUITestOpStatus & os)1735 void expandFontSettings(HI::GUITestOpStatus &os) {
1736 QWidget *labelsColorButton = GTWidget::findWidget(os, "labelsColorButton");
1737 CHECK_SET_ERR(labelsColorButton != nullptr, "labelsColorButton not found");
1738 if (!labelsColorButton->isVisible()) {
1739 GTWidget::click(os, GTWidget::findWidget(os, "lblFontSettings"));
1740 }
1741 }
1742
setLabelsColor(HI::GUITestOpStatus & os,int r,int g,int b)1743 void setLabelsColor(HI::GUITestOpStatus &os, int r, int g, int b) {
1744 expandFontSettings(os);
1745 GTUtilsDialog::waitForDialog(os, new ColorDialogFiller(os, r, g, b));
1746 QWidget *labelsColorButton = GTWidget::findWidget(os, "labelsColorButton");
1747 GTWidget::click(os, labelsColorButton);
1748 }
1749
checkLabelColor(HI::GUITestOpStatus & os,const QString & expectedColorName)1750 bool checkLabelColor(HI::GUITestOpStatus &os, const QString &expectedColorName) {
1751 QGraphicsView *w = qobject_cast<QGraphicsView *>(GTWidget::findWidget(os, "treeView"));
1752 CHECK_SET_ERR_RESULT(w != nullptr, "tree view not found", false);
1753 QList<QGraphicsSimpleTextItem *> labels = GTUtilsPhyTree::getVisibleLabels(os, w);
1754 CHECK_SET_ERR_RESULT(!labels.isEmpty(), "there are no visiable labels", false);
1755
1756 const QImage img = GTWidget::getImage(os, AppContext::getMainWindow()->getQMainWindow());
1757
1758 // hack
1759 foreach (QGraphicsSimpleTextItem *label, labels) {
1760 QRectF rect = label->boundingRect();
1761 w->ensureVisible(label);
1762 for (int i = 0; i < rect.right(); i++) {
1763 for (int j = 0; j < rect.bottom(); j++) {
1764 QPoint p(i, j);
1765 QPoint global = w->viewport()->mapToGlobal(w->mapFromScene(label->mapToScene(p)));
1766
1767 QRgb rgb = img.pixel(global);
1768 QColor c = QColor(rgb);
1769 QString name = c.name();
1770 if (name == expectedColorName) {
1771 return true;
1772 }
1773 }
1774 }
1775 }
1776 return false;
1777 }
1778 } // namespace
1779
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0006)1780 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0006) {
1781 // 1. Open data/samples/CLUSTALW/COI.aln
1782 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1783 GTUtilsTaskTreeView::waitTaskFinished(os);
1784 // 2. Open tree settings option panel tab. build tree
1785 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1786 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1787 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1788 // 3. Change labels color.
1789 #ifndef Q_OS_DARWIN
1790 setLabelsColor(os, 255, 0, 0);
1791 // Expected: color changed
1792 bool b = checkLabelColor(os, "#ff0000");
1793 CHECK_SET_ERR(b, "color not changed");
1794 #else
1795 expandFontSettings(os);
1796 #endif
1797 // 4. Change labels font
1798 QComboBox *fontComboBox = GTWidget::findExactWidget<QComboBox *>(os, "fontComboBox");
1799 QLineEdit *l = fontComboBox->findChild<QLineEdit *>();
1800 GTLineEdit::setText(os, l, "Serif");
1801 GTKeyboardDriver::keyClick(Qt::Key_Enter);
1802 // Expected: font changed
1803 QGraphicsSimpleTextItem *label = GTUtilsPhyTree::getVisibleLabels(os).at(0);
1804 QString family = label->font().family();
1805 CHECK_SET_ERR(family == "Serif", "unexpected style: " + family);
1806 // 5. Change labels size
1807 QWidget *fontSizeSpinBox = GTWidget::findWidget(os, "fontSizeSpinBox");
1808 CHECK_SET_ERR(fontSizeSpinBox != nullptr, "fontSizeSpinBox not found");
1809
1810 QLineEdit *fontLineedit = fontSizeSpinBox->findChild<QLineEdit *>();
1811 GTLineEdit::setText(os, fontLineedit, "20");
1812 GTKeyboardDriver::keyClick(Qt::Key_Enter);
1813 // Expected: size changed
1814 int pointSize = label->font().pointSize();
1815 CHECK_SET_ERR(pointSize == 20, QString("unexpected point size: %1").arg(pointSize));
1816 // check font settings buttons
1817 QWidget *boldAttrButton = GTWidget::findWidget(os, "boldAttrButton");
1818 QWidget *italicAttrButton = GTWidget::findWidget(os, "italicAttrButton");
1819 QWidget *underlineAttrButton = GTWidget::findWidget(os, "underlineAttrButton");
1820
1821 // bold
1822 GTWidget::click(os, boldAttrButton);
1823 CHECK_SET_ERR(label->font().bold(), "expected bold font");
1824 // not bold
1825 GTWidget::click(os, boldAttrButton);
1826 CHECK_SET_ERR(!label->font().bold(), "bold font not canceled");
1827
1828 // italic
1829 GTWidget::click(os, italicAttrButton);
1830 CHECK_SET_ERR(label->font().italic(), "expected italic font");
1831 // not italic
1832 GTWidget::click(os, italicAttrButton);
1833 CHECK_SET_ERR(!label->font().italic(), "italic font not canceled");
1834
1835 // underline
1836 GTWidget::click(os, underlineAttrButton);
1837 CHECK_SET_ERR(label->font().underline(), "expected underline font");
1838 // not underline
1839 GTWidget::click(os, underlineAttrButton);
1840 CHECK_SET_ERR(!label->font().underline(), "underline font not canceled");
1841 }
1842
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0007)1843 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0007) {
1844 // Open data/samples/CLUSTALW/COI.aln.
1845 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1846 GTUtilsMsaEditor::checkMsaEditorWindowIsActive(os);
1847
1848 // Open tree settings option panel tab. Build a tree.
1849 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1850
1851 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1852 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1853 GTUtilsTaskTreeView::waitTaskFinished(os);
1854
1855 // Disable sync mode to allow resize of the view.
1856
1857 GTUtilsProjectTreeView::toggleView(os); // Close opened project tree view to make all icons on the toolbar visible with no overflow.
1858 QAbstractButton *syncModeButton = GTAction::button(os, "sync_msa_action");
1859 CHECK_SET_ERR(syncModeButton->isChecked(), "Sync mode must be ON");
1860
1861 GTWidget::click(os, syncModeButton);
1862 GTUtilsTaskTreeView::waitTaskFinished(os);
1863 CHECK_SET_ERR(!syncModeButton->isChecked(), "Sync mode must be OFF");
1864
1865 auto treeView = GTWidget::findExactWidget<QGraphicsView *>(os, "treeView");
1866 QGraphicsScene *scene = treeView->scene();
1867
1868 // Change widthSlider value.
1869 int initialWidth = scene->width();
1870 auto widthSlider = GTWidget::findExactWidget<QSlider *>(os, "widthSlider");
1871 GTSlider::setValue(os, widthSlider, 50);
1872
1873 // Expected state: the tree became wider.
1874 int finalWidth = scene->width();
1875 CHECK_SET_ERR(initialWidth < finalWidth, QString("Width is not changed! Initial: %1, final: %2").arg(initialWidth).arg(finalWidth));
1876
1877 // Change heightSlider value.
1878 int initialHeight = scene->height();
1879 auto heightSlider = GTWidget::findExactWidget<QSlider *>(os, "heightSlider");
1880 GTSlider::setValue(os, heightSlider, 20);
1881
1882 // Expected state: the tree became wider.
1883 int finalHeight = scene->height();
1884 CHECK_SET_ERR(initialHeight < finalHeight, QString("Height is not changed! Initial: %1, final: %2").arg(initialHeight).arg(finalHeight));
1885 }
1886
1887 namespace {
1888
expandPenSettings(HI::GUITestOpStatus & os)1889 void expandPenSettings(HI::GUITestOpStatus &os) {
1890 QWidget *branchesColorButton = GTWidget::findWidget(os, "branchesColorButton");
1891 CHECK_SET_ERR(branchesColorButton != nullptr, "branchesColorButton not found");
1892 if (!branchesColorButton->isVisible()) {
1893 GTWidget::click(os, GTWidget::findWidget(os, "lblPenSettings"));
1894 }
1895 }
1896
setBranchColor(HI::GUITestOpStatus & os,int r,int g,int b)1897 void setBranchColor(HI::GUITestOpStatus &os, int r, int g, int b) {
1898 expandPenSettings(os);
1899 GTUtilsDialog::waitForDialog(os, new ColorDialogFiller(os, r, g, b));
1900 QWidget *branchesColorButton = GTWidget::findWidget(os, "branchesColorButton");
1901 GTWidget::click(os, branchesColorButton);
1902 }
1903
colorPercent(HI::GUITestOpStatus & os,QWidget * widget,const QString & colorName)1904 double colorPercent(HI::GUITestOpStatus &os, QWidget *widget, const QString &colorName) {
1905 int total = 0;
1906 int found = 0;
1907 const QImage img = GTWidget::getImage(os, widget);
1908 QRect r = widget->rect();
1909 int wid = r.width();
1910 int heig = r.height();
1911 for (int i = 0; i < wid; i++) {
1912 for (int j = 0; j < heig; j++) {
1913 total++;
1914 QPoint p(i, j);
1915 QRgb rgb = img.pixel(p);
1916 QColor color = QColor(rgb);
1917 QString name = color.name();
1918 if (name == colorName) {
1919 found++;
1920 }
1921 }
1922 }
1923 double result = static_cast<double>(found) / total;
1924 return result;
1925 }
1926
1927 } // namespace
1928
GUI_TEST_CLASS_DEFINITION(tree_settings_test_0008)1929 GUI_TEST_CLASS_DEFINITION(tree_settings_test_0008) {
1930 // 1. Open data/samples/CLUSTALW/COI.aln
1931 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1932 GTUtilsTaskTreeView::waitTaskFinished(os);
1933 // 2. Open tree settings option panel tab. build tree
1934 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
1935 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
1936 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
1937 // Click to empty space near the node to reset selection
1938 QList<GraphicsButtonItem *> nodes = GTUtilsPhyTree::getOrderedRectangularNodes(os);
1939 CHECK_SET_ERR(nodes.size() == 16,
1940 QString("Something goes wrong with building tree from COI.aln We are expect 16 nodes instead of: %1")
1941 .arg(QString::number(nodes.size())));
1942 GTThread::waitForMainThread();
1943 QGraphicsView *treeView = GTWidget::findExactWidget<QGraphicsView *>(os, "treeView");
1944 CHECK_SET_ERR(treeView, "treeView not found");
1945 QPointF sceneCoord = nodes[1]->mapToScene(nodes[1]->boundingRect().topLeft());
1946 QPoint viewCord = treeView->mapFromScene(sceneCoord);
1947 QPoint globalCoord = treeView->mapToGlobal(viewCord);
1948 globalCoord += QPoint(nodes[1]->boundingRect().width() / 2 + 8, nodes[1]->boundingRect().height() / 2 + 8);
1949 GTMouseDriver::moveTo(globalCoord);
1950 GTMouseDriver::click();
1951 // 3. change branch color
1952 #ifndef Q_OS_DARWIN
1953 setBranchColor(os, 255, 0, 0);
1954 #else
1955 expandPenSettings(os);
1956 #endif
1957 // Expected state: color changed
1958 CHECK_SET_ERR(treeView != nullptr, "tree view not found");
1959 QString colorName;
1960 #ifndef Q_OS_DARWIN
1961 colorName = "#ff0000";
1962 #else
1963 colorName = "#000000";
1964 #endif
1965 double initPercent = colorPercent(os, treeView, colorName);
1966 CHECK_SET_ERR(initPercent != 0, "color not changed");
1967
1968 // 4. change line Weight
1969 QSpinBox *lineWeightSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "lineWeightSpinBox");
1970 GTSpinBox::setValue(os, lineWeightSpinBox, 30, GTGlobals::UseKeyBoard);
1971 double finalPercent = colorPercent(os, treeView, colorName);
1972 CHECK_SET_ERR(finalPercent > initPercent * 10, "branches width changed not enough");
1973 }
1974
1975 namespace {
setConsensusOutputPath(HI::GUITestOpStatus & os,const QString & path)1976 void setConsensusOutputPath(HI::GUITestOpStatus &os, const QString &path) {
1977 QLineEdit *pathLe = GTWidget::findExactWidget<QLineEdit *>(os, "pathLe");
1978 CHECK_SET_ERR(pathLe != nullptr, "pathLe not found");
1979 GTLineEdit::setText(os, pathLe, path);
1980 }
1981 } // namespace
1982
GUI_TEST_CLASS_DEFINITION(export_consensus_test_0001)1983 GUI_TEST_CLASS_DEFINITION(export_consensus_test_0001) {
1984 const QString fileName = "export_consensus_test_0001.txt";
1985 // 1. Open data/samples/CLUSTALW/COI.aln
1986 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
1987 GTUtilsTaskTreeView::waitTaskFinished(os);
1988 // 2. Open export consensus option panel tab
1989 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::ExportConsensus);
1990 // 3. Select some existing file as output
1991 QString s = sandBoxDir + fileName;
1992 QFile f(s);
1993 bool created = f.open(QFile::ReadWrite);
1994 CHECK_SET_ERR(created, "file not created");
1995 f.close();
1996
1997 setConsensusOutputPath(os, sandBoxDir + fileName);
1998 // 4. Press export button
1999 GTWidget::click(os, GTWidget::findWidget(os, "exportBtn"));
2000 GTUtilsTaskTreeView::waitTaskFinished(os);
2001 // Expected state: file rewrited
2002 int size = GTFile::getSize(os, sandBoxDir + fileName);
2003 CHECK_SET_ERR(size == 604, QString("unexpected file size %1").arg(size));
2004 GTUtilsProjectTreeView::doubleClickItem(os, fileName);
2005 }
2006
GUI_TEST_CLASS_DEFINITION(export_consensus_test_0002)2007 GUI_TEST_CLASS_DEFINITION(export_consensus_test_0002) {
2008 GTLogTracer l;
2009 const QString fileName = "export_consensus_test_0002.aln";
2010 // 1. Open data/samples/CLUSTALW/COI.aln
2011 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2012 GTUtilsTaskTreeView::waitTaskFinished(os);
2013 // 2. Open export consensus option panel tab
2014 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::ExportConsensus);
2015 // 3. Select existing read-only file "export_consensus_test_0002.aln" as output
2016
2017 const QString dirPath = sandBoxDir + "export_consensus_test_0002";
2018 QDir().mkpath(dirPath);
2019
2020 const QString filePath = dirPath + "/" + fileName;
2021 QFile f(filePath);
2022 bool created = f.open(QFile::ReadWrite);
2023 CHECK_SET_ERR(created, "file not created");
2024 f.close();
2025
2026 GTFile::setReadOnly(os, filePath);
2027
2028 setConsensusOutputPath(os, filePath);
2029 // 4. Press export button
2030 GTWidget::click(os, GTWidget::findWidget(os, "exportBtn"));
2031 // Expected state: error in log: Task {Save document} finished with error: No permission to write to 'COI_transl.aln' file.
2032 QString error = l.getJoinedErrorString();
2033 const QString expectedFilePath = QFileInfo(filePath).absoluteFilePath();
2034 QString expected = QString("Task {Export consensus} finished with error: Subtask {Save document} is failed: No permission to write to \'%1\' file.").arg(expectedFilePath);
2035 CHECK_SET_ERR(error.contains(expected), QString("Unexpected error: %1").arg(error));
2036
2037 GTFile::setReadWrite(os, filePath);
2038 }
2039
GUI_TEST_CLASS_DEFINITION(export_consensus_test_0003)2040 GUI_TEST_CLASS_DEFINITION(export_consensus_test_0003) {
2041 GTLogTracer l;
2042 const QString fileName = "export_consensus_test_0003.aln";
2043 const QString dirName = "export_consensus_test_0003";
2044 // 1. Open data/samples/CLUSTALW/COI.aln
2045 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2046 GTUtilsMsaEditor::checkMsaEditorWindowIsActive(os);
2047
2048 // 2. Open export consensus option panel tab
2049 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::ExportConsensus);
2050
2051 // 3. Select some existing file in read-only directory as output
2052 QString dirPath = sandBoxDir + dirName;
2053 bool ok = QDir().mkpath(dirPath);
2054 CHECK_SET_ERR(ok, "subfolder not created");
2055 GTFile::setReadOnly(os, dirPath);
2056
2057 QString filePath = dirPath + '/' + fileName;
2058 setConsensusOutputPath(os, filePath);
2059
2060 // 4. Press export button
2061 GTWidget::click(os, GTWidget::findWidget(os, "exportBtn"));
2062 GTThread::waitForMainThread();
2063
2064 // Expected state: notification is shown that folder is read-only.
2065 QString error = l.getJoinedErrorString();
2066 QString expected = QString("Task {Export consensus} finished with error: Folder is read-only: %1").arg(QFileInfo(filePath).absolutePath());
2067 CHECK_SET_ERR(error == expected, QString("Unexpected error: '%1', expected: '%2'").arg(error).arg(expected));
2068 }
2069
GUI_TEST_CLASS_DEFINITION(export_consensus_test_0004)2070 GUI_TEST_CLASS_DEFINITION(export_consensus_test_0004) {
2071 // 0. Change Documents folder to sandbox
2072 class Custom : public CustomScenario {
2073 void run(HI::GUITestOpStatus &os) {
2074 QWidget *dialog = GTWidget::getActiveModalWidget(os);
2075 AppSettingsDialogFiller::setDocumentsDirPath(os, sandBoxDir);
2076 GTUtilsDialog::clickButtonBox(os, dialog, QDialogButtonBox::Ok);
2077 }
2078 };
2079
2080 GTUtilsDialog::waitForDialog(os, new AppSettingsDialogFiller(os, new Custom()));
2081 GTMenu::clickMainMenuItem(os, QStringList() << "Settings"
2082 << "Preferences...",
2083 GTGlobals::UseMouse);
2084 GTUtilsTaskTreeView::waitTaskFinished(os);
2085
2086 // 1. Open data/samples/CLUSTALW/COI.aln
2087 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2088 GTUtilsTaskTreeView::waitTaskFinished(os);
2089 // 2. Open export consensus option panel tab
2090 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::ExportConsensus);
2091 // 3. Set empty path
2092 setConsensusOutputPath(os, "");
2093
2094 class exportConsensusTest0004Filler : public CustomScenario {
2095 public:
2096 exportConsensusTest0004Filler() {
2097 }
2098 virtual void run(HI::GUITestOpStatus &os) {
2099 QWidget *dialog = GTWidget::getActiveModalWidget(os);
2100 GTUtilsDialog::clickButtonBox(os, dialog, QDialogButtonBox::Cancel);
2101 }
2102 };
2103 GTWidget::click(os, GTWidget::findWidget(os, "exportBtn"));
2104 GTUtilsTaskTreeView::waitTaskFinished(os);
2105
2106 QLineEdit *pathLe = GTWidget::findExactWidget<QLineEdit *>(os, "pathLe");
2107 QString pathLeText = pathLe->text();
2108 CHECK_SET_ERR(!pathLeText.isEmpty() && pathLeText.contains("COI_consensus_1.txt"), "wrong lineEdit text: " + pathLeText);
2109 }
2110
GUI_TEST_CLASS_DEFINITION(statistics_test_0001)2111 GUI_TEST_CLASS_DEFINITION(statistics_test_0001) {
2112 // 1. Open data/samples/CLUSTALW/COI.aln
2113 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2114 GTUtilsTaskTreeView::waitTaskFinished(os);
2115 // 2. Open export statistics option panel tab
2116 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Statistics);
2117 // 3. check showDistancesColumn checkbox
2118 QCheckBox *showDistancesColumnCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesColumnCheck");
2119 GTCheckBox::setChecked(os, showDistancesColumnCheck, true);
2120 // 4. Check reference hint
2121 QLabel *refSeqWarning = GTWidget::findExactWidget<QLabel *>(os, "refSeqWarning");
2122 CHECK_SET_ERR(refSeqWarning != nullptr, "refSeqWarning");
2123 CHECK_SET_ERR(refSeqWarning->text() == "Hint: select a reference above", QString("Unexpected hint: %1").arg(refSeqWarning->text()));
2124 // 5. Add Phaneroptera_falcata as reference
2125 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2126 // Expected state: similarity column appaered
2127 QString s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2128 CHECK_SET_ERR(s0 == "0%", QString("Unexpected similarity at line 1: %1").arg(s0));
2129 QString s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2130 CHECK_SET_ERR(s1 == "18%", QString("Unexpected similarity at line 2: %1").arg(s1));
2131
2132 // 6. Check counts mode
2133 QRadioButton *countsButton = GTWidget::findExactWidget<QRadioButton *>(os, "countsButton");
2134 GTRadioButton::click(os, countsButton);
2135
2136 s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2137 CHECK_SET_ERR(s0 == "0", QString("Unexpected similarity at line 1: %1").arg(s0));
2138 s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2139 CHECK_SET_ERR(s1 == "106", QString("Unexpected similarity at line 2: %1").arg(s1));
2140 // 7. Check exclude gabs mode
2141 QCheckBox *excludeGapsCheckBox = GTWidget::findExactWidget<QCheckBox *>(os, "excludeGapsCheckBox");
2142 GTCheckBox::setChecked(os, excludeGapsCheckBox, true);
2143
2144 s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 7);
2145 CHECK_SET_ERR(s0 == "110", QString("Unexpected similarity at line 8: %1").arg(s0));
2146 s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 8);
2147 CHECK_SET_ERR(s1 == "100", QString("Unexpected similarity at line 9: %1").arg(s1));
2148 }
2149
GUI_TEST_CLASS_DEFINITION(statistics_test_0002)2150 GUI_TEST_CLASS_DEFINITION(statistics_test_0002) {
2151 // 1. Open data/samples/CLUSTALW/COI.aln
2152 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2153 GTUtilsTaskTreeView::waitTaskFinished(os);
2154 // 2. Open export statistics option panel tab
2155 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Statistics);
2156 // 3. check showDistancesColumn checkbox
2157 QCheckBox *showDistancesColumnCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesColumnCheck");
2158 GTCheckBox::setChecked(os, showDistancesColumnCheck, true);
2159 // 4. Add Phaneroptera_falcata as reference
2160 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2161 // 5. Check identity algorithm
2162 QComboBox *algoComboBox = GTWidget::findExactWidget<QComboBox *>(os, "algoComboBox");
2163 GTComboBox::selectItemByText(os, algoComboBox, "Similarity");
2164 /*
2165 QString s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2166 CHECK_SET_ERR(s0 == "100%", QString("Unexpected similarity at line 1: %1").arg(s0));
2167 QString s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2168 CHECK_SET_ERR(s1 == "82%", QString("Unexpected similarity at line 2: %1").arg(s1));
2169 // 6. Check counts mode
2170 QRadioButton* countsButton = GTWidget::findExactWidget<QRadioButton*>(os, "countsButton");
2171 GTRadioButton::click(os, countsButton);
2172
2173 s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2174 CHECK_SET_ERR(s0 == "604", QString("Unexpected similarity at line 1: %1").arg(s0));
2175 s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2176 CHECK_SET_ERR(s1 == "498", QString("Unexpected similarity at line 2: %1").arg(s1));
2177 */
2178 }
GUI_TEST_CLASS_DEFINITION(statistics_test_0003)2179 GUI_TEST_CLASS_DEFINITION(statistics_test_0003) {
2180 // 1. Open data/samples/CLUSTALW/COI.aln
2181 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2182 GTUtilsTaskTreeView::waitTaskFinished(os);
2183 // 2. Open export statistics option panel tab
2184 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Statistics);
2185 // 3. check showDistancesColumn checkbox
2186 QCheckBox *showDistancesColumnCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesColumnCheck");
2187 GTCheckBox::setChecked(os, showDistancesColumnCheck, true);
2188 // 4. Add Phaneroptera_falcata as reference
2189 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2190 // 5. delete symbol at point (0,0)
2191 GTWidget::click(os, GTUtilsMdi::activeWindow(os));
2192 GTUtilsMSAEditorSequenceArea::click(os, QPoint(0, 0));
2193 GTKeyboardDriver::keyClick(Qt::Key_Delete);
2194 // Expected state: similarity changed, updateButton ins disablec
2195 QString s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2196 CHECK_SET_ERR(s0 == "0%", QString("(1)Unexpected similarity at line 1: %1").arg(s0));
2197 QString s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2198 CHECK_SET_ERR(s1 == "69%", QString("(1)Unexpected similarity at line 2: %1").arg(s1));
2199
2200 QWidget *updateButton = GTWidget::findWidget(os, "updateButton");
2201 CHECK_SET_ERR(updateButton != nullptr, "updateButton not found");
2202 CHECK_SET_ERR(!updateButton->isEnabled(), "updateButton is unexpectidly enabled");
2203 // 6. Undo. Uncheck automatic update checkbox
2204 GTWidget::click(os, GTAction::button(os, "msa_action_undo"));
2205 QCheckBox *autoUpdateCheck = GTWidget::findExactWidget<QCheckBox *>(os, "autoUpdateCheck");
2206 GTCheckBox::setChecked(os, autoUpdateCheck, false);
2207 // 5. delete symbol at point (0,0)
2208 GTWidget::click(os, GTUtilsMdi::activeWindow(os));
2209 GTUtilsMSAEditorSequenceArea::click(os, QPoint(0, 0));
2210 GTKeyboardDriver::keyClick(Qt::Key_Delete);
2211 // Expected state: similarity not changed
2212 s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2213 CHECK_SET_ERR(s0 == "0%", QString("(2)Unexpected similarity at line 1: %1").arg(s0));
2214 s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2215 CHECK_SET_ERR(s1 == "18%", QString("(2)Unexpected similarity at line 2: %1").arg(s1));
2216 // 6. Press autoUpdate button
2217 GTWidget::click(os, updateButton);
2218 // Expected state: similarity updated
2219 s0 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 0);
2220 CHECK_SET_ERR(s0 == "0%", QString("(3)Unexpected similarity at line 1: %1").arg(s0));
2221 s1 = GTUtilsMSAEditorSequenceArea::getSimilarityValue(os, 1);
2222 CHECK_SET_ERR(s1 == "69%", QString("(3)Unexpected similarity at line 2: %1").arg(s1));
2223 }
2224
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0001)2225 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0001) {
2226 // 1. Open data/samples/CLUSTALW/COI.aln
2227 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2228 GTUtilsTaskTreeView::waitTaskFinished(os);
2229 // 2. Open export general option panel tab
2230 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
2231 // Check saving parameters
2232 // find widgets
2233 QComboBox *consensusType = GTWidget::findExactWidget<QComboBox *>(os, "consensusType");
2234 QSpinBox *thresholdSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "thresholdSpinBox");
2235
2236 // set some parameters
2237 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2238 GTComboBox::selectItemByText(os, consensusType, "Strict");
2239 GTSpinBox::setValue(os, thresholdSpinBox, 50, GTGlobals::UseKeyBoard);
2240
2241 // close and open option panel
2242 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_GENERAL"));
2243 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_GENERAL"));
2244
2245 // checks
2246 QLineEdit *sequenceLineEdit = GTWidget::findExactWidget<QLineEdit *>(os, "sequenceLineEdit");
2247 consensusType = GTWidget::findExactWidget<QComboBox *>(os, "consensusType");
2248 thresholdSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "thresholdSpinBox");
2249
2250 CHECK_SET_ERR(sequenceLineEdit->text() == "Phaneroptera_falcata", QString("unexpected reference: %1").arg(sequenceLineEdit->text()));
2251 CHECK_SET_ERR(consensusType->currentText() == "Strict", QString("unexpected consensus: %1").arg(consensusType->currentText()));
2252 CHECK_SET_ERR(thresholdSpinBox->value() == 50, QString("unexpected threshold value: %1").arg(thresholdSpinBox->value()));
2253 }
2254
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0002)2255 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0002) {
2256 // 1. Open data/samples/CLUSTALW/COI.aln
2257 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2258 GTUtilsTaskTreeView::waitTaskFinished(os);
2259 // 2. Open export highlighting option panel tab
2260 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Highlighting);
2261
2262 // Check saving parameters
2263 // find widgets
2264 QComboBox *colorScheme = GTWidget::findExactWidget<QComboBox *>(os, "colorScheme");
2265 QComboBox *highlightingScheme = GTWidget::findExactWidget<QComboBox *>(os, "highlightingScheme");
2266 QCheckBox *useDots = GTWidget::findExactWidget<QCheckBox *>(os, "useDots");
2267
2268 // set some parameters
2269 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2270 GTComboBox::selectItemByText(os, colorScheme, "Jalview");
2271 GTComboBox::selectItemByText(os, highlightingScheme, "Agreements");
2272 GTCheckBox::setChecked(os, useDots, true);
2273
2274 // close and open option panel
2275 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_HIGHLIGHTING"));
2276 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_HIGHLIGHTING"));
2277
2278 // checks
2279 QLineEdit *sequenceLineEdit = GTWidget::findExactWidget<QLineEdit *>(os, "sequenceLineEdit");
2280 colorScheme = GTWidget::findExactWidget<QComboBox *>(os, "colorScheme");
2281 highlightingScheme = GTWidget::findExactWidget<QComboBox *>(os, "highlightingScheme");
2282 useDots = GTWidget::findExactWidget<QCheckBox *>(os, "useDots");
2283
2284 CHECK_SET_ERR(sequenceLineEdit->text() == "Phaneroptera_falcata", QString("unexpected reference: %1").arg(sequenceLineEdit->text()));
2285 CHECK_SET_ERR(colorScheme->currentText() == "Jalview", QString("uexpected color scheme: %1").arg(colorScheme->currentText()));
2286 CHECK_SET_ERR(highlightingScheme->currentText() == "Agreements", QString("uexpected highlighting: %1").arg(highlightingScheme->currentText()));
2287 CHECK_SET_ERR(useDots->isChecked(), "Use dots checkbox is not checked");
2288 }
2289
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0003)2290 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0003) {
2291 // KAlign settings
2292 // 1. Open data/samples/CLUSTALW/COI.aln
2293 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2294 GTUtilsTaskTreeView::waitTaskFinished(os);
2295 // 2. Open export highlighting option panel tab
2296 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
2297
2298 // Check saving parameters
2299 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
2300 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
2301
2302 // expand settings
2303 GTWidget::click(os, GTWidget::findWidget(os, "ArrowHeader_Algorithm settings"));
2304 GTWidget::click(os, GTWidget::findWidget(os, "ArrowHeader_Output settings"));
2305
2306 // find widgets
2307 QDoubleSpinBox *gapOpen = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapOpen");
2308 QDoubleSpinBox *gapExtd = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapExtd");
2309 QDoubleSpinBox *gapTerm = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapTerm");
2310 QDoubleSpinBox *bonusScore = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "bonusScore");
2311 QCheckBox *inNewWindowCheckBox = GTWidget::findExactWidget<QCheckBox *>(os, "inNewWindowCheckBox");
2312
2313 // set values
2314 GTDoubleSpinbox::setValue(os, gapOpen, 100, GTGlobals::UseKeyBoard);
2315 GTDoubleSpinbox::setValue(os, gapExtd, 100, GTGlobals::UseKeyBoard);
2316 GTDoubleSpinbox::setValue(os, gapTerm, 100, GTGlobals::UseKeyBoard);
2317 GTDoubleSpinbox::setValue(os, bonusScore, 100, GTGlobals::UseKeyBoard);
2318 GTCheckBox::setChecked(os, inNewWindowCheckBox, false);
2319
2320 // close and open option panel
2321 GTWidget::click(os, GTWidget::findWidget(os, "OP_PAIRALIGN"));
2322 GTWidget::click(os, GTWidget::findWidget(os, "OP_PAIRALIGN"));
2323
2324 // checks
2325 QLineEdit *l1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
2326 QLineEdit *l2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
2327 gapOpen = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapOpen");
2328 gapExtd = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapExtd");
2329 gapTerm = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "gapTerm");
2330 bonusScore = GTWidget::findExactWidget<QDoubleSpinBox *>(os, "bonusScore");
2331 inNewWindowCheckBox = GTWidget::findExactWidget<QCheckBox *>(os, "inNewWindowCheckBox");
2332
2333 CHECK_SET_ERR(l1->text() == "Phaneroptera_falcata", QString("unexpected seq1: %1").arg(l1->text()));
2334 CHECK_SET_ERR(l2->text() == "Isophya_altaica_EF540820", QString("unexpected seq2: %1").arg(l2->text()));
2335 CHECK_SET_ERR(gapOpen->value() == 100, QString("unexpected gapOpen value: %1").arg(gapOpen->value()));
2336 CHECK_SET_ERR(gapExtd->value() == 100, QString("unexpected gapExtd value: %1").arg(gapExtd->value()));
2337 CHECK_SET_ERR(gapTerm->value() == 100, QString("unexpected gapTerm value: %1").arg(gapTerm->value()));
2338 CHECK_SET_ERR(bonusScore->value() == 100, QString("unexpected bonusScore value: %1").arg(bonusScore->value()));
2339 CHECK_SET_ERR(!inNewWindowCheckBox->isChecked(), "inNewWindowCheckBox is unexpectidly checked");
2340 }
2341
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0003_1)2342 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0003_1) { //
2343 // smith-waterman settings
2344 // 1. Open data/samples/CLUSTALW/COI.aln
2345 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2346 GTUtilsTaskTreeView::waitTaskFinished(os);
2347 // 2. Open export highlighting option panel tab
2348 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::PairwiseAlignment);
2349
2350 // Check saving parameters
2351 GTUtilsOptionPanelMsa::addFirstSeqToPA(os, "Phaneroptera_falcata");
2352 GTUtilsOptionPanelMsa::addSecondSeqToPA(os, "Isophya_altaica_EF540820");
2353
2354 // expand settings
2355 GTWidget::click(os, GTWidget::findWidget(os, "ArrowHeader_Algorithm settings"));
2356
2357 // find widgets
2358 QComboBox *algorithmListComboBox = GTWidget::findExactWidget<QComboBox *>(os, "algorithmListComboBox");
2359 GTComboBox::selectItemByText(os, algorithmListComboBox, "Smith-Waterman");
2360
2361 QComboBox *algorithmVersion = GTWidget::findExactWidget<QComboBox *>(os, "algorithmVersion");
2362 QComboBox *scoringMatrix = GTWidget::findExactWidget<QComboBox *>(os, "scoringMatrix");
2363 QSpinBox *gapOpen = GTWidget::findExactWidget<QSpinBox *>(os, "gapOpen");
2364 QSpinBox *gapExtd = GTWidget::findExactWidget<QSpinBox *>(os, "gapExtd");
2365
2366 // setValues
2367 GTComboBox::selectItemByText(os, algorithmVersion, "SW_classic");
2368 GTComboBox::selectItemByText(os, scoringMatrix, "dna");
2369 GTSpinBox::setValue(os, gapOpen, 5);
2370 GTSpinBox::setValue(os, gapExtd, 5);
2371
2372 // close and open option panel
2373 GTWidget::click(os, GTWidget::findWidget(os, "OP_PAIRALIGN"));
2374 GTWidget::click(os, GTWidget::findWidget(os, "OP_PAIRALIGN"));
2375
2376 // checks
2377 QLineEdit *l1 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 1);
2378 QLineEdit *l2 = GTUtilsOptionPanelMsa::getSeqLineEdit(os, 2);
2379 algorithmListComboBox = GTWidget::findExactWidget<QComboBox *>(os, "algorithmListComboBox");
2380 algorithmVersion = GTWidget::findExactWidget<QComboBox *>(os, "algorithmVersion");
2381 scoringMatrix = GTWidget::findExactWidget<QComboBox *>(os, "scoringMatrix");
2382 gapOpen = GTWidget::findExactWidget<QSpinBox *>(os, "gapOpen");
2383 gapExtd = GTWidget::findExactWidget<QSpinBox *>(os, "gapExtd");
2384
2385 CHECK_SET_ERR(l1->text() == "Phaneroptera_falcata", QString("unexpected seq1: %1").arg(l1->text()));
2386 CHECK_SET_ERR(l2->text() == "Isophya_altaica_EF540820", QString("unexpected seq2: %1").arg(l2->text()));
2387 CHECK_SET_ERR(algorithmListComboBox->currentText() == "Smith-Waterman", QString("unexpected current text").arg(algorithmListComboBox->currentText()));
2388 CHECK_SET_ERR(algorithmVersion->currentText() == "SW_classic", QString("unexpected algorithm: %1").arg(algorithmVersion->currentText()));
2389 CHECK_SET_ERR(scoringMatrix->currentText().contains("dna"), QString("unexpected scoring matrix").arg(scoringMatrix->currentText()));
2390 CHECK_SET_ERR(gapOpen->value() == 5, QString("unexpected gap open value: %1").arg(gapOpen->value()));
2391 CHECK_SET_ERR(gapExtd->value() == 5, QString("unexpected gap ext value: %1").arg(gapExtd->value()));
2392 }
2393
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0004)2394 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0004) {
2395 // 1. Open data/samples/CLUSTALW/COI.aln
2396 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2397 GTUtilsTaskTreeView::waitTaskFinished(os);
2398 // 2. Open tree settings option panel tab
2399 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
2400 // 3. Press "build tree" button.
2401 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
2402 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
2403 GTUtilsTaskTreeView::waitTaskFinished(os);
2404
2405 // set some values
2406 expandFontSettings(os);
2407 QComboBox *layoutCombo = GTWidget::findExactWidget<QComboBox *>(os, "layoutCombo");
2408 GTComboBox::selectItemByText(os, layoutCombo, "Circular");
2409
2410 QComboBox *treeViewCombo = GTWidget::findExactWidget<QComboBox *>(os, "treeViewCombo");
2411 GTComboBox::selectItemByText(os, treeViewCombo, "Cladogram");
2412 setLabelsColor(os, 255, 255, 255);
2413 QString initialColor = GTWidget::getColor(os, GTWidget::findWidget(os, "labelsColorButton"), QPoint(10, 10)).name();
2414 QComboBox *fontComboBox = GTWidget::findExactWidget<QComboBox *>(os, "fontComboBox");
2415 QLineEdit *l = fontComboBox->findChild<QLineEdit *>();
2416 #ifdef Q_OS_LINUX
2417 QString fontName = "Serif";
2418 #else
2419 QString fontName = "Tahoma";
2420 #endif
2421 GTLineEdit::setText(os, l, fontName);
2422 GTKeyboardDriver::keyClick(Qt::Key_Enter);
2423
2424 QSpinBox *fontSizeSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "fontSizeSpinBox");
2425 GTSpinBox::setValue(os, fontSizeSpinBox, 14);
2426
2427 GTWidget::click(os, GTWidget::findWidget(os, "boldAttrButton"));
2428 GTWidget::click(os, GTWidget::findWidget(os, "italicAttrButton"));
2429 GTWidget::click(os, GTWidget::findWidget(os, "underlineAttrButton"));
2430
2431 // close and open option panel
2432 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_TREES_WIDGET"));
2433 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_TREES_WIDGET"));
2434
2435 // check settings
2436 layoutCombo = GTWidget::findExactWidget<QComboBox *>(os, "layoutCombo");
2437 treeViewCombo = GTWidget::findExactWidget<QComboBox *>(os, "treeViewCombo");
2438 QWidget *labelsColorButton = GTWidget::findWidget(os, "labelsColorButton");
2439 fontComboBox = GTWidget::findExactWidget<QComboBox *>(os, "fontComboBox");
2440 fontSizeSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "fontSizeSpinBox");
2441 QToolButton *boldAttrButton = GTWidget::findExactWidget<QToolButton *>(os, "boldAttrButton");
2442 QToolButton *italicAttrButton = GTWidget::findExactWidget<QToolButton *>(os, "italicAttrButton");
2443 QToolButton *underlineAttrButton = GTWidget::findExactWidget<QToolButton *>(os, "underlineAttrButton");
2444
2445 CHECK_SET_ERR(layoutCombo->currentText() == "Circular", QString("unexpected layout: %1").arg(layoutCombo->currentText()));
2446 CHECK_SET_ERR(treeViewCombo->currentText() == "Cladogram", QString("unexpected tree view: %1").arg(treeViewCombo->currentText()));
2447 CHECK_SET_ERR(GTWidget::hasPixelWithColor(os, labelsColorButton, initialColor), QString("Initial color is not found: %1").arg(initialColor));
2448 CHECK_SET_ERR(fontComboBox->currentText().contains(fontName), QString("unexpected font: %1").arg(fontComboBox->currentText()));
2449 CHECK_SET_ERR(fontSizeSpinBox->value() == 14, QString("unexpected font size: %1").arg(fontSizeSpinBox->value()));
2450 CHECK_SET_ERR(boldAttrButton->isChecked(), "boldAttrButton is not checked");
2451 CHECK_SET_ERR(italicAttrButton->isChecked(), "italicAttrButton is not checked");
2452 CHECK_SET_ERR(underlineAttrButton->isChecked(), "underlineAttrButton is not checked");
2453 }
2454
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0004_1)2455 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0004_1) {
2456 // 1. Open data/samples/CLUSTALW/COI.aln
2457 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2458 GTUtilsTaskTreeView::waitTaskFinished(os);
2459 // 2. Open tree settings option panel tab
2460 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::TreeSettings);
2461 // 3. Press "build tree" button.
2462 GTUtilsDialog::waitForDialog(os, new BuildTreeDialogFiller(os, "default", 0, 0, true));
2463 GTWidget::click(os, GTWidget::findWidget(os, "BuildTreeButton"));
2464 GTUtilsTaskTreeView::waitTaskFinished(os);
2465
2466 // find widgets
2467 QCheckBox *showNamesCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showNamesCheck");
2468 QCheckBox *showDistancesCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesCheck");
2469 QSlider *widthSlider = GTWidget::findExactWidget<QSlider *>(os, "widthSlider");
2470 QSlider *heightSlider = GTWidget::findExactWidget<QSlider *>(os, "heightSlider");
2471
2472 expandPenSettings(os);
2473 QSpinBox *lineWeightSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "lineWeightSpinBox");
2474
2475 // set some values
2476 GTCheckBox::setChecked(os, showNamesCheck, false);
2477 GTCheckBox::setChecked(os, showDistancesCheck, false);
2478 GTSlider::setValue(os, widthSlider, 50);
2479 GTSlider::setValue(os, heightSlider, 20);
2480 setBranchColor(os, 255, 255, 255);
2481 QString initialColor = GTWidget::getColor(os, GTWidget::findWidget(os, "branchesColorButton"), QPoint(10, 10)).name();
2482 GTSpinBox::setValue(os, lineWeightSpinBox, 2);
2483
2484 // close and open option panel
2485 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_TREES_WIDGET"));
2486 GTWidget::click(os, GTWidget::findWidget(os, "OP_MSA_TREES_WIDGET"));
2487
2488 // checks
2489 showNamesCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showNamesCheck");
2490 showDistancesCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesCheck");
2491 widthSlider = GTWidget::findExactWidget<QSlider *>(os, "widthSlider");
2492 heightSlider = GTWidget::findExactWidget<QSlider *>(os, "heightSlider");
2493 lineWeightSpinBox = GTWidget::findExactWidget<QSpinBox *>(os, "lineWeightSpinBox");
2494 QWidget *branchesColorButton = GTWidget::findWidget(os, "branchesColorButton");
2495
2496 CHECK_SET_ERR(!showNamesCheck->isChecked(), "show names checkbox is unexpectedly checked");
2497 CHECK_SET_ERR(!showDistancesCheck->isChecked(), "show distances checkbox is unexpectedly checked");
2498 CHECK_SET_ERR(widthSlider->value() == 50, QString("unexpected width slider value: %1").arg(widthSlider->value()));
2499 CHECK_SET_ERR(heightSlider->value() == 20, QString("unexpected height slider value: %1").arg(heightSlider->value()));
2500 CHECK_SET_ERR(lineWeightSpinBox->value() == 2, QString("unexpected line width: %1").arg(lineWeightSpinBox->value()));
2501 CHECK_SET_ERR(GTWidget::hasPixelWithColor(os, branchesColorButton, initialColor), QString("Initial color is not found: %1").arg(initialColor));
2502 }
2503
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0005)2504 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0005) {
2505 // 1. Open data/samples/CLUSTALW/COI.aln
2506 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2507 GTUtilsTaskTreeView::waitTaskFinished(os);
2508 // 2. Set strict consensus
2509 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::General);
2510 QComboBox *consensusType = GTWidget::findExactWidget<QComboBox *>(os, "consensusType");
2511 GTComboBox::selectItemByText(os, consensusType, "Strict");
2512 // 3. Open export consensus tab
2513 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::ExportConsensus);
2514
2515 // find widgets
2516 QLineEdit *pathLe = GTWidget::findExactWidget<QLineEdit *>(os, "pathLe");
2517 QComboBox *formatCb = GTWidget::findExactWidget<QComboBox *>(os, "formatCb");
2518 QCheckBox *keepGapsChb = GTWidget::findExactWidget<QCheckBox *>(os, "keepGapsChb");
2519
2520 // set some values
2521 GTLineEdit::setText(os, pathLe, "some_path");
2522 GTComboBox::selectItemByText(os, formatCb, "GenBank");
2523 GTCheckBox::setChecked(os, keepGapsChb, true);
2524
2525 // close and open option panel
2526 GTWidget::click(os, GTWidget::findWidget(os, "OP_EXPORT_CONSENSUS"));
2527 GTWidget::click(os, GTWidget::findWidget(os, "OP_EXPORT_CONSENSUS"));
2528
2529 // checks
2530 pathLe = GTWidget::findExactWidget<QLineEdit *>(os, "pathLe");
2531 formatCb = GTWidget::findExactWidget<QComboBox *>(os, "formatCb");
2532 keepGapsChb = GTWidget::findExactWidget<QCheckBox *>(os, "keepGapsChb");
2533
2534 CHECK_SET_ERR(pathLe->text().contains("some_path"), QString("unexpected path: %1").arg(pathLe->text()));
2535 CHECK_SET_ERR(formatCb->currentText() == "GenBank", QString("unexpected format: %1").arg(formatCb->currentText()));
2536 CHECK_SET_ERR(keepGapsChb->isChecked(), "keep gaps checkBox is unexpectedly unchecked");
2537 }
2538
GUI_TEST_CLASS_DEFINITION(save_parameters_test_0006)2539 GUI_TEST_CLASS_DEFINITION(save_parameters_test_0006) {
2540 // 1. Open data/samples/CLUSTALW/COI.aln
2541 GTFileDialog::openFile(os, dataDir + "samples/CLUSTALW", "COI.aln");
2542 GTUtilsTaskTreeView::waitTaskFinished(os);
2543 // 2. Set strict consensus
2544 GTUtilsOptionPanelMsa::openTab(os, GTUtilsOptionPanelMsa::Statistics);
2545 GTUtilsOptionPanelMsa::addReference(os, "Phaneroptera_falcata");
2546
2547 // find widgets
2548 QCheckBox *showDistancesColumnCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesColumnCheck");
2549 QComboBox *algoComboBox = GTWidget::findExactWidget<QComboBox *>(os, "algoComboBox");
2550 QRadioButton *countsButton = GTWidget::findExactWidget<QRadioButton *>(os, "countsButton");
2551 QCheckBox *excludeGapsCheckBox = GTWidget::findExactWidget<QCheckBox *>(os, "excludeGapsCheckBox");
2552 QCheckBox *autoUpdateCheck = GTWidget::findExactWidget<QCheckBox *>(os, "autoUpdateCheck");
2553
2554 // set some parameters
2555 GTCheckBox::setChecked(os, showDistancesColumnCheck, true);
2556 GTComboBox::selectItemByText(os, algoComboBox, "Similarity");
2557 GTRadioButton::click(os, countsButton);
2558 GTCheckBox::setChecked(os, excludeGapsCheckBox, true);
2559 GTCheckBox::setChecked(os, autoUpdateCheck, false);
2560
2561 // close and open option panel
2562 GTWidget::click(os, GTWidget::findWidget(os, "OP_SEQ_STATISTICS_WIDGET"));
2563 GTWidget::click(os, GTWidget::findWidget(os, "OP_SEQ_STATISTICS_WIDGET"));
2564
2565 // checks
2566 showDistancesColumnCheck = GTWidget::findExactWidget<QCheckBox *>(os, "showDistancesColumnCheck");
2567 algoComboBox = GTWidget::findExactWidget<QComboBox *>(os, "algoComboBox");
2568 countsButton = GTWidget::findExactWidget<QRadioButton *>(os, "countsButton");
2569 excludeGapsCheckBox = GTWidget::findExactWidget<QCheckBox *>(os, "excludeGapsCheckBox");
2570 autoUpdateCheck = GTWidget::findExactWidget<QCheckBox *>(os, "autoUpdateCheck");
2571
2572 CHECK_SET_ERR(showDistancesColumnCheck->isChecked(), "show distances is unexpectedly unchecked");
2573 CHECK_SET_ERR(algoComboBox->currentText() == "Similarity", QString("unexpected algorithm: %1").arg(algoComboBox->currentText()));
2574 CHECK_SET_ERR(countsButton->isChecked(), "counts radio is not checked");
2575 CHECK_SET_ERR(excludeGapsCheckBox->isChecked(), "exclude gaps not checked");
2576 CHECK_SET_ERR(!autoUpdateCheck->isChecked(), "auto update is unexpectedly checked");
2577 }
2578 } // namespace GUITest_common_scenarios_options_panel_MSA
2579 } // namespace U2
2580