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 #ifndef _U2_SEQUENCE_DBI_SQLITE_SPECIFIC_UNIT_TESTS_H_
23 #define _U2_SEQUENCE_DBI_SQLITE_SPECIFIC_UNIT_TESTS_H_
24 
25 #include <unittest.h>
26 
27 #include "core/dbi/DbiTest.h"
28 
29 namespace U2 {
30 
31 class SQLiteDbi;
32 class U2SequenceDbi;
33 
34 class SequenceSQLiteSpecificTestData {
35 public:
36     static void init();
37     static void shutdown();
38 
39     static SQLiteDbi *getSQLiteDbi();
40 
41     static U2DataId createTestSequence(bool enableModTracking, qint64 seqLength, U2OpStatus &os);
42     static U2DataId createTestSequence(bool enableModTracking, const QByteArray &seqData, U2OpStatus &os);
43 
44     static qint64 getModStepsNum(const U2DataId &objId, U2OpStatus &os);
45 
46     static const QString TEST_SEQUENCE_NAME;
47 
48 private:
49     static TestDbiProvider dbiProvider;
50     static const QString &SQLITE_SEQUENCE_DB_URL;
51     static SQLiteDbi *sqliteDbi;
52 };
53 
54 ///////////////////////////////////////////////////////////////
55 // Tests for U2SequenceDbi API that assume that SQLiteDbi was used.
56 // The tests verify the correct structure of the SQLiteDbi
57 // after some operations.
58 ///////////////////////////////////////////////////////////////
59 
60 /**
61  * Update a sequence data:
62  *     ^ noModTrack      - update the sequence with disabled modification tracking,
63  *                         there are no modSteps.
64  *     ^ empty           - the sequence is empty.
65  *     ^ clearHint       - the sequence is not empty, all data is removed, an appropriate hint is used.
66  *     ^ clearNoHint     - the sequence is not empty, all data is removed, there are no hints.
67  *     ^ begin           - the part at the beginning of the sequence is updated.
68  *     ^ middle          - the part in the middle of the sequence is updated.
69  *     ^ middleNoLength  - the part in the middle of the sequence is updated,
70  *                         length is not changed, an appropriate hint is used.
71  *     ^ end             - the part at the end of the sequence is updated.
72  */
73 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack);
74 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint);
75 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint);
76 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear);
77 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin);
78 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle);
79 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength);
80 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end);
81 
82 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack_undo);
83 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint_undo);
84 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint_undo);
85 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear_undo);
86 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin_undo);
87 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_undo);
88 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength_undo);
89 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end_undo);
90 
91 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack_redo);
92 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint_redo);
93 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint_redo);
94 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear_redo);
95 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin_redo);
96 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_redo);
97 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength_redo);
98 DECLARE_TEST(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end_redo);
99 
100 }  // namespace U2
101 
102 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack);
103 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint);
104 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint);
105 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear);
106 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin);
107 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle);
108 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength);
109 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end);
110 
111 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack_undo);
112 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint_undo);
113 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint_undo);
114 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear_undo);
115 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin_undo);
116 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_undo);
117 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength_undo);
118 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end_undo);
119 
120 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_noModTrack_redo);
121 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyHint_redo);
122 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_emptyNoHint_redo);
123 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_clear_redo);
124 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_begin_redo);
125 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_redo);
126 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_middle_middleNoLength_redo);
127 DECLARE_METATYPE(SequenceDbiSQLiteSpecificUnitTests, updateSeqData_end_redo);
128 
129 #endif  // _U2_SEQUENCE_DBI_SQLITE_SPECIFIC_UNIT_TESTS_H_
130