1 /**009
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 "GTTestsTrimmomaticElement.h"
23 #include <drivers/GTMouseDriver.h>
24 #include <primitives/GTTableView.h>
25 #include <primitives/GTWidget.h>
26
27 #include "../../workflow_designer/src/WorkflowViewItems.h"
28 #include "GTUtilsWorkflowDesigner.h"
29 #include "runnables/ugene/plugins/external_tools/TrimmomaticDialogFiller.h"
30
31 namespace U2 {
32
33 namespace GUITest_common_scenarios_trimmomatic_element {
34 using namespace HI;
35
36 using TrimmomaticAddSettings = QPair<TrimmomaticDialogFiller::TrimmomaticSteps, QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant>>;
37 using TrimmomaticMoveSettings = QPair<QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int>, TrimmomaticDialogFiller::TrimmomaticDirection>;
38
GUI_TEST_CLASS_DEFINITION(test_0001)39 GUI_TEST_CLASS_DEFINITION(test_0001) {
40 // 1. Open WD
41 GTUtilsWorkflowDesigner::openWorkflowDesigner(os);
42
43 // 2. Add "Improve Reads with Trimmomatic" to the scene
44 const QString trimmomaticName = "Improve Reads with Trimmomatic";
45 WorkflowProcessItem *trimmomaticElement = GTUtilsWorkflowDesigner::addElement(os, trimmomaticName);
46
47 // 3. Click on the element, open the "Trimmomatic steps" dialog
48 // 4. Add the "AVGQUAL" step and set "Quality Threshold" to 25
49 // 5. Add the "CROP" step and set "Length" to 10
50 // 6. Add the "HEADCROP" step and set "Length" to 15
51 // 7. Add the "ILLUMINACLIP" step and set "AdapterSequence" to "adapters/illumina/TruSeq3-SE.fa",
52 // "Seed Mismatches" to 5, "Palindrome Clip Threshold" to 25, "Simple Clip Threshold" to 8,
53 // check "Provide Optional Settings", "Min Adapter Length" to 6 and "Keep Both Reads" to True
54 // 8. Add the "LEADING" step and set "Strictness" to 0.60 and "Target Length" to 35.
55 // 9. Add the "MAXINFO" step and set "Length" to 10
56 // 10. Add the "MINLEN" step and set "Window Size" to 5 and "Quality Threshold" to 25
57 // 11. Add the "TOPHRED33" step
58 // 12. Add the "TOPHRED64" step
59 // 13. Add the "TRAILING" step and set "Quality Threshold" to 25
60 // 14. Accept the dialog
61
62 QList<TrimmomaticAddSettings> steps;
63 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "25"}};
64 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual));
65 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> crop = {{TrimmomaticDialogFiller::TrimmomaticValues::Length, "10"}};
66 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::CROP, crop));
67 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> headcrop = {{TrimmomaticDialogFiller::TrimmomaticValues::Length, "15"}};
68 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::HEADCROP, headcrop));
69 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> illuminaclip = {{TrimmomaticDialogFiller::TrimmomaticValues::AdapterSequence, dataDir + "adapters/illumina/TruSeq3-SE.fa"},
70 {TrimmomaticDialogFiller::TrimmomaticValues::SeedMismatches, "5"},
71 {TrimmomaticDialogFiller::TrimmomaticValues::PalindromeClipThreshold, "25"},
72 {TrimmomaticDialogFiller::TrimmomaticValues::SimpleClipThreshold, "8"},
73 {TrimmomaticDialogFiller::TrimmomaticValues::ProvideOptionalSettings, true},
74 {TrimmomaticDialogFiller::TrimmomaticValues::MinAdapterLength, "6"},
75 {TrimmomaticDialogFiller::TrimmomaticValues::KeepBothReads, "True"}};
76 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::ILLUMINACLIP, illuminaclip));
77 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> leading = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "15"}};
78 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::LEADING, leading));
79 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> maxinfo = {{TrimmomaticDialogFiller::TrimmomaticValues::TargetLength, "35"},
80 {TrimmomaticDialogFiller::TrimmomaticValues::Strictness, "0.60"}};
81 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::MAXINFO, maxinfo));
82 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> minlen = {{TrimmomaticDialogFiller::TrimmomaticValues::Length, "10"}};
83 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::MINLEN, minlen));
84 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> slidingwindow = {{TrimmomaticDialogFiller::TrimmomaticValues::WindowSize, "5"},
85 {TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "25"}};
86 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::SLIDINGWINDOW, slidingwindow));
87 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> tophred;
88 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::TOPHRED33, tophred));
89 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::TOPHRED64, tophred));
90 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> trailing = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "25"}};
91 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::TRAILING, trailing));
92
93 TrimmomaticDialogFiller *filler = new TrimmomaticDialogFiller(os, steps);
94
95 GTUtilsDialog::waitForDialog(os, filler);
96 TrimmomaticDialogFiller::openDialog(os, trimmomaticElement);
97 }
98
GUI_TEST_CLASS_DEFINITION(test_0002)99 GUI_TEST_CLASS_DEFINITION(test_0002) {
100 // 1. Open WD
101 GTUtilsWorkflowDesigner::openWorkflowDesigner(os);
102
103 // 2. Add "Improve Reads with Trimmomatic" to the scene
104 const QString trimmomaticName = "Improve Reads with Trimmomatic";
105 WorkflowProcessItem *trimmomaticElement = GTUtilsWorkflowDesigner::addElement(os, trimmomaticName);
106
107 // 3. Click on the element, open the "Trimmomatic steps" dialog
108 // 4. Add the "AVGQUAL" step and set "Quality Threshold" to 1
109 // 5. Add the "AVGQUAL" step and set "Quality Threshold" to 2
110 // 6. Add the "AVGQUAL" step and set "Quality Threshold" to 3
111 // 7. Accept the dialog
112 QList<TrimmomaticAddSettings> steps;
113 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual1 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "1"}};
114 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual1));
115 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual2 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "2"}};
116 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual2));
117 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual3 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "3"}};
118 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual3));
119 TrimmomaticDialogFiller *addFiller = new TrimmomaticDialogFiller(os, steps);
120
121 GTUtilsDialog::waitForDialog(os, addFiller);
122 TrimmomaticDialogFiller::openDialog(os, trimmomaticElement);
123
124 // 8. Click on the element, open the "Trimmomatic steps" dialog
125 // 9. Click on the "AVGQUAL" step 1 and move it down
126 // 10. Click on the "AVGQUAL" step 2 and move it down
127 // 11. Click on the "AVGQUAL" step 2 and move it up
128 // 12. Accept the dialog
129 QList<TrimmomaticMoveSettings> moveSteps;
130 TrimmomaticMoveSettings step1(QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int>(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, 0), TrimmomaticDialogFiller::TrimmomaticDirection::Down);
131 moveSteps.append(step1);
132 TrimmomaticMoveSettings step2(QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int>(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, 1), TrimmomaticDialogFiller::TrimmomaticDirection::Down);
133 moveSteps.append(step2);
134 TrimmomaticMoveSettings step3(QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int>(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, 1), TrimmomaticDialogFiller::TrimmomaticDirection::Up);
135 moveSteps.append(step3);
136 TrimmomaticDialogFiller *moveFiller = new TrimmomaticDialogFiller(os, moveSteps);
137
138 GTUtilsDialog::waitForDialog(os, moveFiller);
139 TrimmomaticDialogFiller::openDialog(os, trimmomaticElement);
140 }
141
GUI_TEST_CLASS_DEFINITION(test_0003)142 GUI_TEST_CLASS_DEFINITION(test_0003) {
143 // 1. Open WD
144 GTUtilsWorkflowDesigner::openWorkflowDesigner(os);
145
146 // 2. Add "Improve Reads with Trimmomatic" to the scene
147 const QString trimmomaticName = "Improve Reads with Trimmomatic";
148 WorkflowProcessItem *trimmomaticElement = GTUtilsWorkflowDesigner::addElement(os, trimmomaticName);
149
150 // 3. Click on the element, open the "Trimmomatic steps" dialog
151 // 4. Add the "AVGQUAL" step and set "Quality Threshold" to 1
152 // 5. Add the "AVGQUAL" step and set "Quality Threshold" to 2
153 // 6. Add the "AVGQUAL" step and set "Quality Threshold" to 3
154 // 7. Accept the dialog
155 QList<TrimmomaticAddSettings> steps;
156 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual1 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "1"}};
157 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual1));
158 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual2 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "2"}};
159 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual2));
160 QMap<TrimmomaticDialogFiller::TrimmomaticValues, QVariant> avgqual3 = {{TrimmomaticDialogFiller::TrimmomaticValues::QualityThreshold, "3"}};
161 steps.append(TrimmomaticAddSettings(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, avgqual3));
162 TrimmomaticDialogFiller *addFiller = new TrimmomaticDialogFiller(os, steps);
163
164 GTUtilsDialog::waitForDialog(os, addFiller);
165 TrimmomaticDialogFiller::openDialog(os, trimmomaticElement);
166 // 8. Click on the element, open the "Trimmomatic steps" dialog
167 // 9. Click on the "AVGQUAL" step 2 and remove it
168 // 10. Click on the "AVGQUAL" step 1 and remove it
169 // 11. Accept the dialog
170 QList<QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int>> removeValues;
171 QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int> step1(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, 2);
172 removeValues.append(step1);
173 QPair<TrimmomaticDialogFiller::TrimmomaticSteps, int> step2(TrimmomaticDialogFiller::TrimmomaticSteps::AVGQUAL, 0);
174 removeValues.append(step2);
175 TrimmomaticDialogFiller *removeFiller = new TrimmomaticDialogFiller(os, removeValues);
176
177 GTUtilsDialog::waitForDialog(os, removeFiller);
178 TrimmomaticDialogFiller::openDialog(os, trimmomaticElement);
179 }
180
181 } // namespace GUITest_common_scenarios_trimmomatic_element
182
183 } // namespace U2
184