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 "CInterfaceSasTests.h"
23 
24 #include <QFileInfo>
25 
26 #include <U2Core/AppContext.h>
27 #include <U2Core/GAutoDeleteList.h>
28 #include <U2Core/Log.h>
29 #include <U2Core/U2OpStatusUtils.h>
30 #include <U2Core/global.h>
31 
32 #include <U2Lang/ActorModel.h>
33 #include <U2Lang/ActorPrototypeRegistry.h>
34 #include <U2Lang/WorkflowEnv.h>
35 
36 #include "SchemeSimilarityUtils.h"
37 
getCommonDataDir()38 static QString getCommonDataDir() {
39     QString commonDataDir = qgetenv("COMMON_DATA_DIR");
40     QString defaultCommonDataDir = U2::AppContext::getWorkingDirectoryPath() +
41                                    (isOsMac() ? "/../../../../../../test/_common_data" : "/../../test/_common_data");
42     if (commonDataDir.isEmpty()) {
43         commonDataDir = defaultCommonDataDir;
44     } else if (!QFileInfo::exists(commonDataDir)) {
45         U2::coreLog.error(QString("COMMON_DATA_DIR doesn't exist: '%1'. The default path is set: '%2'.").arg(commonDataDir).arg(defaultCommonDataDir));
46         commonDataDir = defaultCommonDataDir;
47     }
48     return commonDataDir + (commonDataDir.endsWith("/") ? "" : "/");
49 }
50 
51 static const QString WD_SCHEMES_PATH = getCommonDataDir() + "cmdline/wd-sas-schemes/";
52 
getActorDisplayName(const QString & actorId,QString & actorName)53 static U2ErrorType getActorDisplayName(const QString &actorId, QString &actorName) {
54     U2::Workflow::ActorPrototypeRegistry *prototypeRegistry = U2::Workflow::WorkflowEnv::getProtoRegistry();
55     CHECK(nullptr != prototypeRegistry, U2_INVALID_CALL);
56     U2::Workflow::ActorPrototype *prototype = prototypeRegistry->getProto(actorId);
57     CHECK(nullptr != prototype, U2_UNKNOWN_ELEMENT);
58     actorName = prototype->getDisplayName();
59     return U2_OK;
60 }
61 
toDisposableWString(const QString & source)62 static wchar_t *toDisposableWString(const QString &source) {
63     CHECK(!source.isEmpty(), nullptr);
64     wchar_t *result = new wchar_t[source.size() + 1];
65     source.toWCharArray(result);
66     result[source.size()] = '\0';
67     return result;
68 }
69 
70 namespace U2 {
71 
72 /////////////   TESTS IMPLEMENTATION   ///////////////////////////////////////////////////////
73 
IMPLEMENT_TEST(CInterfaceSasTests,align_with_clustalO_sas)74 IMPLEMENT_TEST(CInterfaceSasTests, align_with_clustalO_sas) {
75     SchemeHandle scheme = nullptr;
76     U2ErrorType error = createSas(L"ClustalO", nullptr, nullptr, &scheme);
77     CHECK_U2_ERROR(error);
78     QString readerName;
79     error = getActorDisplayName("read-msa", readerName);
80     CHECK_U2_ERROR(error);
81     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
82     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
83     CHECK_U2_ERROR(error);
84 
85     U2OpStatusImpl stateInfo;
86     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
87                                                   WD_SCHEMES_PATH + "align_with_clustalO.uwl",
88                                                   stateInfo);
89     CHECK_NO_ERROR(stateInfo);
90 
91     releaseScheme(scheme);
92 }
IMPLEMENT_TEST(CInterfaceSasTests,align_with_clustalW_sas)93 IMPLEMENT_TEST(CInterfaceSasTests, align_with_clustalW_sas) {
94     SchemeHandle scheme = nullptr;
95     U2ErrorType error = createSas(L"clustalw", nullptr, nullptr, &scheme);
96     CHECK_U2_ERROR(error);
97     QString readerName;
98     error = getActorDisplayName("read-msa", readerName);
99     CHECK_U2_ERROR(error);
100     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
101     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
102     CHECK_U2_ERROR(error);
103 
104     U2OpStatusImpl stateInfo;
105     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
106                                                   WD_SCHEMES_PATH + "align_with_clustalW.uwl",
107                                                   stateInfo);
108     CHECK_NO_ERROR(stateInfo);
109 
110     releaseScheme(scheme);
111 }
IMPLEMENT_TEST(CInterfaceSasTests,align_with_kalign_sas)112 IMPLEMENT_TEST(CInterfaceSasTests, align_with_kalign_sas) {
113     SchemeHandle scheme = nullptr;
114     U2ErrorType error = createSas(L"kalign", nullptr, nullptr, &scheme);
115     CHECK_U2_ERROR(error);
116     QString readerName;
117     error = getActorDisplayName("read-msa", readerName);
118     CHECK_U2_ERROR(error);
119     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
120     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
121     CHECK_U2_ERROR(error);
122 
123     U2OpStatusImpl stateInfo;
124     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
125                                                   WD_SCHEMES_PATH + "align_with_kalign.uwl",
126                                                   stateInfo);
127     CHECK_NO_ERROR(stateInfo);
128 
129     releaseScheme(scheme);
130 }
IMPLEMENT_TEST(CInterfaceSasTests,align_with_mafft_sas)131 IMPLEMENT_TEST(CInterfaceSasTests, align_with_mafft_sas) {
132     SchemeHandle scheme = nullptr;
133     U2ErrorType error = createSas(L"mafft", nullptr, nullptr, &scheme);
134     CHECK_U2_ERROR(error);
135     QString readerName;
136     error = getActorDisplayName("read-msa", readerName);
137     CHECK_U2_ERROR(error);
138     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
139     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
140     CHECK_U2_ERROR(error);
141 
142     U2OpStatusImpl stateInfo;
143     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
144                                                   WD_SCHEMES_PATH + "align_with_mafft.uwl",
145                                                   stateInfo);
146     CHECK_NO_ERROR(stateInfo);
147 
148     releaseScheme(scheme);
149 }
IMPLEMENT_TEST(CInterfaceSasTests,align_with_muscle_sas)150 IMPLEMENT_TEST(CInterfaceSasTests, align_with_muscle_sas) {
151     SchemeHandle scheme = nullptr;
152     U2ErrorType error = createSas(L"muscle", nullptr, nullptr, &scheme);
153     CHECK_U2_ERROR(error);
154     QString readerName;
155     error = getActorDisplayName("read-msa", readerName);
156     CHECK_U2_ERROR(error);
157     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
158     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
159     CHECK_U2_ERROR(error);
160 
161     U2OpStatusImpl stateInfo;
162     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
163                                                   WD_SCHEMES_PATH + "align_with_muscle.uwl",
164                                                   stateInfo);
165     CHECK_NO_ERROR(stateInfo);
166 
167     releaseScheme(scheme);
168 }
IMPLEMENT_TEST(CInterfaceSasTests,align_with_tcoffee_sas)169 IMPLEMENT_TEST(CInterfaceSasTests, align_with_tcoffee_sas) {
170     SchemeHandle scheme = nullptr;
171     U2ErrorType error = createSas(L"tcoffee", nullptr, nullptr, &scheme);
172     CHECK_U2_ERROR(error);
173     QString readerName;
174     error = getActorDisplayName("read-msa", readerName);
175     CHECK_U2_ERROR(error);
176     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
177     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
178     CHECK_U2_ERROR(error);
179 
180     U2OpStatusImpl stateInfo;
181     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
182                                                   WD_SCHEMES_PATH + "align_with_tcoffee.uwl",
183                                                   stateInfo);
184     CHECK_NO_ERROR(stateInfo);
185 
186     releaseScheme(scheme);
187 }
IMPLEMENT_TEST(CInterfaceSasTests,annotate_with_uql_sas)188 IMPLEMENT_TEST(CInterfaceSasTests, annotate_with_uql_sas) {
189     SchemeHandle scheme = nullptr;
190     U2ErrorType error = createSas(L"query", nullptr, nullptr, &scheme);
191     CHECK_U2_ERROR(error);
192     QString readerName;
193     error = getActorDisplayName("read-sequence", readerName);
194     CHECK_U2_ERROR(error);
195     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
196     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
197     CHECK_U2_ERROR(error);
198 
199     U2OpStatusImpl stateInfo;
200     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
201                                                   WD_SCHEMES_PATH + "annotate_with_uql.uwl",
202                                                   stateInfo);
203     CHECK_NO_ERROR(stateInfo);
204 
205     releaseScheme(scheme);
206 }
207 
IMPLEMENT_TEST(CInterfaceSasTests,basic_align_sas)208 IMPLEMENT_TEST(CInterfaceSasTests, basic_align_sas) {
209     SchemeHandle scheme = nullptr;
210     U2ErrorType error = createSas(L"muscle", nullptr, nullptr, &scheme);
211     CHECK_U2_ERROR(error);
212     QString writerName;
213     error = getActorDisplayName("write-msa", writerName);
214     CHECK_U2_ERROR(error);
215     gauto_array<wchar_t> wWriterName(toDisposableWString(writerName));
216     error = setSchemeElementAttribute(scheme, wWriterName.get(), L"document-format", L"stockholm");
217     CHECK_U2_ERROR(error);
218 
219     U2OpStatusImpl stateInfo;
220     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
221                                                   WD_SCHEMES_PATH + "basic_align.uwl",
222                                                   stateInfo);
223     CHECK_NO_ERROR(stateInfo);
224 
225     releaseScheme(scheme);
226 }
227 
IMPLEMENT_TEST(CInterfaceSasTests,build_weight_matrix_sas)228 IMPLEMENT_TEST(CInterfaceSasTests, build_weight_matrix_sas) {
229     SchemeHandle scheme = nullptr;
230     U2ErrorType error = createSas(L"wmatrix-build", nullptr, nullptr, &scheme);
231     CHECK_U2_ERROR(error);
232     QString readerName;
233     error = getActorDisplayName("read-msa", readerName);
234     CHECK_U2_ERROR(error);
235     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
236     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
237     CHECK_U2_ERROR(error);
238 
239     U2OpStatusImpl stateInfo;
240     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
241                                                   WD_SCHEMES_PATH + "build_weight_matrix.uwl",
242                                                   stateInfo);
243     CHECK_NO_ERROR(stateInfo);
244 
245     releaseScheme(scheme);
246 }
IMPLEMENT_TEST(CInterfaceSasTests,cd_search_sas)247 IMPLEMENT_TEST(CInterfaceSasTests, cd_search_sas) {
248     SchemeHandle scheme = nullptr;
249     U2ErrorType error = createSas(L"cd-search", nullptr, nullptr, &scheme);
250     CHECK_U2_ERROR(error);
251     QString readerName;
252     error = getActorDisplayName("read-sequence", readerName);
253     CHECK_U2_ERROR(error);
254     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
255     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
256     CHECK_U2_ERROR(error);
257 
258     U2OpStatusImpl stateInfo;
259     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
260                                                   WD_SCHEMES_PATH + "cd_search.uwl",
261                                                   stateInfo);
262     CHECK_NO_ERROR(stateInfo);
263 
264     releaseScheme(scheme);
265 }
IMPLEMENT_TEST(CInterfaceSasTests,dna_statistics_sas)266 IMPLEMENT_TEST(CInterfaceSasTests, dna_statistics_sas) {
267     SchemeHandle scheme = nullptr;
268     U2ErrorType error = createSas(L"dna-stats", nullptr, nullptr, &scheme);
269     CHECK_U2_ERROR(error);
270     QString readerName;
271     error = getActorDisplayName("read-sequence", readerName);
272     CHECK_U2_ERROR(error);
273     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
274     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
275     CHECK_U2_ERROR(error);
276 
277     U2OpStatusImpl stateInfo;
278     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
279                                                   WD_SCHEMES_PATH + "dna_statistics.uwl",
280                                                   stateInfo);
281     CHECK_NO_ERROR(stateInfo);
282 
283     releaseScheme(scheme);
284 }
285 
IMPLEMENT_TEST(CInterfaceSasTests,faqual2fastq_sas)286 IMPLEMENT_TEST(CInterfaceSasTests, faqual2fastq_sas) {
287     SchemeHandle scheme = nullptr;
288     U2ErrorType error = createSas(L"import-phred-qualities", nullptr, nullptr, &scheme);
289     CHECK_U2_ERROR(error);
290     QString readerName;
291     error = getActorDisplayName("write-sequence", readerName);
292     CHECK_U2_ERROR(error);
293     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
294     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"document-format", L"fastq");
295     CHECK_U2_ERROR(error);
296 
297     U2OpStatusImpl stateInfo;
298     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
299                                                   WD_SCHEMES_PATH + "faqual2fastq.uwl",
300                                                   stateInfo);
301     CHECK_NO_ERROR(stateInfo);
302 
303     releaseScheme(scheme);
304 }
305 
IMPLEMENT_TEST(CInterfaceSasTests,filter_annotations_by_name_sas)306 IMPLEMENT_TEST(CInterfaceSasTests, filter_annotations_by_name_sas) {
307     SchemeHandle scheme = nullptr;
308     U2ErrorType error = createSas(L"filter-annotations", nullptr, nullptr, &scheme);
309     CHECK_U2_ERROR(error);
310     QString readerName;
311     error = getActorDisplayName("read-annotations", readerName);
312     CHECK_U2_ERROR(error);
313     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
314     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
315     CHECK_U2_ERROR(error);
316 
317     U2OpStatusImpl stateInfo;
318     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
319                                                   WD_SCHEMES_PATH + "filter_annotations_by_name.uwl",
320                                                   stateInfo);
321     CHECK_NO_ERROR(stateInfo);
322 
323     releaseScheme(scheme);
324 }
IMPLEMENT_TEST(CInterfaceSasTests,find_repeats_sas)325 IMPLEMENT_TEST(CInterfaceSasTests, find_repeats_sas) {
326     SchemeHandle scheme = nullptr;
327     U2ErrorType error = createSas(L"repeats-search", nullptr, nullptr, &scheme);
328     CHECK_U2_ERROR(error);
329     QString readerName;
330     error = getActorDisplayName("read-sequence", readerName);
331     CHECK_U2_ERROR(error);
332     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
333     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
334     CHECK_U2_ERROR(error);
335     QString algoName;
336     error = getActorDisplayName("repeats-search", algoName);
337     CHECK_U2_ERROR(error);
338     gauto_array<wchar_t> wAlgoName(toDisposableWString(algoName));
339     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"algorithm", L"0");
340     CHECK_U2_ERROR(error);
341     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"exclude-tandems", L"false");
342     CHECK_U2_ERROR(error);
343     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"filter-algorithm", L"0");
344     CHECK_U2_ERROR(error);
345     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"identity", L"100");
346     CHECK_U2_ERROR(error);
347     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"inverted", L"false");
348     CHECK_U2_ERROR(error);
349     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"max-distance", L"5000");
350     CHECK_U2_ERROR(error);
351     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"min-distance", L"0");
352     CHECK_U2_ERROR(error);
353     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"min-length", L"5");
354     CHECK_U2_ERROR(error);
355     error = setSchemeElementAttribute(scheme, wAlgoName.get(), L"threads", L"0");
356     CHECK_U2_ERROR(error);
357 
358     U2OpStatusImpl stateInfo;
359     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
360                                                   WD_SCHEMES_PATH + "find_repeats.uwl",
361                                                   stateInfo);
362     CHECK_NO_ERROR(stateInfo);
363 
364     releaseScheme(scheme);
365 }
IMPLEMENT_TEST(CInterfaceSasTests,hmm2_build_sas)366 IMPLEMENT_TEST(CInterfaceSasTests, hmm2_build_sas) {
367     SchemeHandle scheme = nullptr;
368     U2ErrorType error = createSas(L"hmm2-build", nullptr, nullptr, &scheme);
369     CHECK_U2_ERROR(error);
370     QString readerName;
371     error = getActorDisplayName("read-msa", readerName);
372     CHECK_U2_ERROR(error);
373     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
374     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
375     CHECK_U2_ERROR(error);
376 
377     U2OpStatusImpl stateInfo;
378     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
379                                                   WD_SCHEMES_PATH + "hmm2_build.uwl",
380                                                   stateInfo);
381     CHECK_NO_ERROR(stateInfo);
382 
383     releaseScheme(scheme);
384 }
IMPLEMENT_TEST(CInterfaceSasTests,import_phred_qualities_sas)385 IMPLEMENT_TEST(CInterfaceSasTests, import_phred_qualities_sas) {
386     SchemeHandle scheme = nullptr;
387     U2ErrorType error = createSas(L"import-phred-qualities", nullptr, nullptr, &scheme);
388     CHECK_U2_ERROR(error);
389     QString readerName;
390     CHECK_U2_ERROR(error);
391     error = getActorDisplayName("read-sequence", readerName);
392     CHECK_U2_ERROR(error);
393     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
394     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
395     CHECK_U2_ERROR(error);
396 
397     U2OpStatusImpl stateInfo;
398     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
399                                                   WD_SCHEMES_PATH + "import_phred_qualities.uwl",
400                                                   stateInfo);
401     CHECK_NO_ERROR(stateInfo);
402 
403     releaseScheme(scheme);
404 }
405 
IMPLEMENT_TEST(CInterfaceSasTests,join_sequences_into_alignment_sas)406 IMPLEMENT_TEST(CInterfaceSasTests, join_sequences_into_alignment_sas) {
407     SchemeHandle scheme = nullptr;
408     U2ErrorType error = createSas(L"sequences-to-msa", nullptr, nullptr, &scheme);
409     CHECK_U2_ERROR(error);
410     QString readerName;
411     error = getActorDisplayName("read-sequence", readerName);
412     CHECK_U2_ERROR(error);
413     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
414     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
415     CHECK_U2_ERROR(error);
416 
417     U2OpStatusImpl stateInfo;
418     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
419                                                   WD_SCHEMES_PATH + "join_sequences_into_alignment.uwl",
420                                                   stateInfo);
421     CHECK_NO_ERROR(stateInfo);
422 
423     releaseScheme(scheme);
424 }
425 
IMPLEMENT_TEST(CInterfaceSasTests,local_blast_plus_search_sas)426 IMPLEMENT_TEST(CInterfaceSasTests, local_blast_plus_search_sas) {
427     SchemeHandle scheme = nullptr;
428     U2ErrorType error = createSas(L"blast-plus", nullptr, nullptr, &scheme);
429     CHECK_U2_ERROR(error);
430     QString readerName;
431     error = getActorDisplayName("read-sequence", readerName);
432     CHECK_U2_ERROR(error);
433     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
434     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
435     CHECK_U2_ERROR(error);
436 
437     U2OpStatusImpl stateInfo;
438     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
439                                                   WD_SCHEMES_PATH + "local_blast_plus_search.uwl",
440                                                   stateInfo);
441     CHECK_NO_ERROR(stateInfo);
442 
443     releaseScheme(scheme);
444 }
IMPLEMENT_TEST(CInterfaceSasTests,merge_annotations_sas)445 IMPLEMENT_TEST(CInterfaceSasTests, merge_annotations_sas) {
446     SchemeHandle scheme = nullptr;
447     U2ErrorType error = createSas(L"import-annotations", nullptr, nullptr, &scheme);
448     CHECK_U2_ERROR(error);
449     QString readerName;
450     error = getActorDisplayName("read-annotations", readerName);
451     CHECK_U2_ERROR(error);
452     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
453     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
454     CHECK_U2_ERROR(error);
455 
456     U2OpStatusImpl stateInfo;
457     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
458                                                   WD_SCHEMES_PATH + "merge_annotations.uwl",
459                                                   stateInfo);
460     CHECK_NO_ERROR(stateInfo);
461 
462     releaseScheme(scheme);
463 }
IMPLEMENT_TEST(CInterfaceSasTests,merge_assemblies_with_cuffmerge_sas)464 IMPLEMENT_TEST(CInterfaceSasTests, merge_assemblies_with_cuffmerge_sas) {
465     SchemeHandle scheme = nullptr;
466     U2ErrorType error = createSas(L"cuffmerge", nullptr, nullptr, &scheme);
467     CHECK_U2_ERROR(error);
468     QString readerName;
469     error = getActorDisplayName("read-annotations", readerName);
470     CHECK_U2_ERROR(error);
471     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
472     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
473     CHECK_U2_ERROR(error);
474 
475     U2OpStatusImpl stateInfo;
476     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
477                                                   WD_SCHEMES_PATH + "merge_assemblies_with_cuffmerge.uwl",
478                                                   stateInfo);
479     CHECK_NO_ERROR(stateInfo);
480 
481     releaseScheme(scheme);
482 }
IMPLEMENT_TEST(CInterfaceSasTests,orf_marker_sas)483 IMPLEMENT_TEST(CInterfaceSasTests, orf_marker_sas) {
484     SchemeHandle scheme = nullptr;
485     U2ErrorType error = createSas(L"orf-search", nullptr, nullptr, &scheme);
486     CHECK_U2_ERROR(error);
487     QString readerName;
488     error = getActorDisplayName("read-sequence", readerName);
489     CHECK_U2_ERROR(error);
490     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
491     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
492     CHECK_U2_ERROR(error);
493 
494     U2OpStatusImpl stateInfo;
495     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
496                                                   WD_SCHEMES_PATH + "orf_marker.uwl",
497                                                   stateInfo);
498     CHECK_NO_ERROR(stateInfo);
499 
500     releaseScheme(scheme);
501 }
IMPLEMENT_TEST(CInterfaceSasTests,remote_blast_sas)502 IMPLEMENT_TEST(CInterfaceSasTests, remote_blast_sas) {
503     SchemeHandle scheme = nullptr;
504     U2ErrorType error = createSas(L"blast-ncbi", nullptr, nullptr, &scheme);
505     CHECK_U2_ERROR(error);
506     QString readerName;
507     error = getActorDisplayName("read-sequence", readerName);
508     CHECK_U2_ERROR(error);
509     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
510     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
511     CHECK_U2_ERROR(error);
512 
513     U2OpStatusImpl stateInfo;
514     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
515                                                   WD_SCHEMES_PATH + "remote_blast.uwl",
516                                                   stateInfo);
517     CHECK_NO_ERROR(stateInfo);
518 
519     releaseScheme(scheme);
520 }
IMPLEMENT_TEST(CInterfaceSasTests,reverse_complement_sas)521 IMPLEMENT_TEST(CInterfaceSasTests, reverse_complement_sas) {
522     SchemeHandle scheme = nullptr;
523     U2ErrorType error = createSas(L"reverse-complement", nullptr, nullptr, &scheme);
524     CHECK_U2_ERROR(error);
525     QString readerName;
526     error = getActorDisplayName("read-sequence", readerName);
527     CHECK_U2_ERROR(error);
528     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
529     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
530     CHECK_U2_ERROR(error);
531 
532     U2OpStatusImpl stateInfo;
533     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
534                                                   WD_SCHEMES_PATH + "reverse_complement.uwl",
535                                                   stateInfo);
536     CHECK_NO_ERROR(stateInfo);
537 
538     releaseScheme(scheme);
539 }
IMPLEMENT_TEST(CInterfaceSasTests,split_alignment_into_sequences_sas)540 IMPLEMENT_TEST(CInterfaceSasTests, split_alignment_into_sequences_sas) {
541     SchemeHandle scheme = nullptr;
542     U2ErrorType error = createSas(L"convert-alignment-to-sequence", nullptr, nullptr, &scheme);
543     CHECK_U2_ERROR(error);
544     QString readerName;
545     error = getActorDisplayName("read-msa", readerName);
546     CHECK_U2_ERROR(error);
547     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
548     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
549     CHECK_U2_ERROR(error);
550 
551     U2OpStatusImpl stateInfo;
552     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
553                                                   WD_SCHEMES_PATH + "split_alignment_into_sequences.uwl",
554                                                   stateInfo);
555     CHECK_NO_ERROR(stateInfo);
556 
557     releaseScheme(scheme);
558 }
IMPLEMENT_TEST(CInterfaceSasTests,split_assembly_into_sequences_sas)559 IMPLEMENT_TEST(CInterfaceSasTests, split_assembly_into_sequences_sas) {
560     SchemeHandle scheme = nullptr;
561     U2ErrorType error = createSas(L"assembly-to-sequences", nullptr, nullptr, &scheme);
562     CHECK_U2_ERROR(error);
563     QString readerName;
564     error = getActorDisplayName("read-assembly", readerName);
565     CHECK_U2_ERROR(error);
566     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
567     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
568     CHECK_U2_ERROR(error);
569 
570     U2OpStatusImpl stateInfo;
571     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
572                                                   WD_SCHEMES_PATH + "split_assembly_into_sequences.uwl",
573                                                   stateInfo);
574     CHECK_NO_ERROR(stateInfo);
575 
576     releaseScheme(scheme);
577 }
IMPLEMENT_TEST(CInterfaceSasTests,text2sequence_sas)578 IMPLEMENT_TEST(CInterfaceSasTests, text2sequence_sas) {
579     SchemeHandle scheme = nullptr;
580     U2ErrorType error = createSas(L"convert-text-to-sequence", nullptr, nullptr, &scheme);
581     CHECK_U2_ERROR(error);
582     QString readerName;
583     error = getActorDisplayName("read-text", readerName);
584     CHECK_U2_ERROR(error);
585     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
586     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
587     CHECK_U2_ERROR(error);
588 
589     U2OpStatusImpl stateInfo;
590     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
591                                                   WD_SCHEMES_PATH + "text2sequence.uwl",
592                                                   stateInfo);
593     CHECK_NO_ERROR(stateInfo);
594 
595     releaseScheme(scheme);
596 }
IMPLEMENT_TEST(CInterfaceSasTests,extract_consensus_sas)597 IMPLEMENT_TEST(CInterfaceSasTests, extract_consensus_sas) {
598     SchemeHandle scheme = nullptr;
599     U2ErrorType error = createSas(L"extract-consensus", nullptr, nullptr, &scheme);
600     CHECK_U2_ERROR(error);
601     QString readerName;
602     error = getActorDisplayName("read-assembly", readerName);
603     CHECK_U2_ERROR(error);
604     gauto_array<wchar_t> wReaderName(toDisposableWString(readerName));
605     error = setSchemeElementAttribute(scheme, wReaderName.get(), L"url-in.dataset", L"Dataset 1");
606     CHECK_U2_ERROR(error);
607 
608     U2OpStatusImpl stateInfo;
609     SchemeSimilarityUtils::checkSchemesSimilarity(scheme,
610                                                   WD_SCHEMES_PATH + "consensus.uwl",
611                                                   stateInfo);
612     CHECK_NO_ERROR(stateInfo);
613 
614     releaseScheme(scheme);
615 }
616 
617 }  // namespace U2
618