1 /***************************************************************************
2 * SPDX-FileCopyrightText: 2021 S. MANKOWSKI stephane@mankowski.fr
3 * SPDX-FileCopyrightText: 2021 G. DE BURE support@mankowski.fr
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 ***************************************************************************/
6 /** @file
7 * This file is a test script.
8 *
9 * @author Stephane MANKOWSKI / Guillaume DE BURE
10 */
11 #include <qfile.h>
12 #include <qsqldatabase.h>
13
14 #include "skgtestmacro.h"
15
16 /**
17 * The main function of the unit test
18 * @param argc the number of arguments
19 * @param argv the list of arguments
20 */
main(int argc,char ** argv)21 int main(int argc, char** argv)
22 {
23 Q_UNUSED(argc)
24 Q_UNUSED(argv)
25
26 // Init test
27 SKGINITTEST(true) {
28 SKGTESTBOOL("QSQLITE:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("QSQLITE")), true)
29 SKGTESTBOOL("SKGSQLCIPHER:isDriverAvailable", QSqlDatabase::isDriverAvailable(QStringLiteral("SKGSQLCIPHER")), true)
30 }
31 {
32 // test class SKGDocument / LOAD / SAVE
33 QString filename1 = SKGTest::getTestPath(QStringLiteral("IN")) % QStringLiteral("/filename1_e.skg");
34 qDebug("filename1=%s", filename1.toUtf8().constData());
35 {
36 SKGDocument document1;
37 QFile(filename1).remove();
38 SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
39 SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("en")), true)
40 SKGTESTERROR(QStringLiteral("DOC:setLanguage"), document1.setLanguage(QStringLiteral("fr")), true)
41 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
42
43 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
44 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
45 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
46 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(false), true)
47 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
48
49 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
50 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
51 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
52 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
53 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
54
55 document1.setFileNotModified();
56 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
57
58 SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("t_name")), QStringLiteral("Name"))
59 SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("node.t_name")), QStringLiteral("Name"))
60 SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.t_name")), QStringLiteral("Name"))
61 SKGTEST(QStringLiteral("DOC:getDisplay"), document1.getDisplay(QStringLiteral("v_node.unknown")), QStringLiteral("v_node.unknown"))
62
63 QString oResult;
64 SKGTESTERROR(QStringLiteral("DOC:isFileModified"), document1.dumpSelectSqliteOrder(QStringLiteral("select * from parameters"), oResult), true)
65 }
66 {
67 SKGDocument document1;
68 QFile(filename1).remove();
69 SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
70 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
71
72 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
73 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
74 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false) // because the transaction is empty
75 }
76 {
77 SKGDocument document1;
78 QFile(filename1).remove();
79 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
80 SKGTESTERROR(QStringLiteral("DOC:saveAs+invalid path"), document1.saveAs(QStringLiteral("/notfound/file.skg"), true), false)
81 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
82 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
83 SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
84 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
85 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
86 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
87 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
88 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), QLatin1String(""))
89 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true) // due to the beginTransaction
90 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QLatin1String(""))
91 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true)
92 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
93 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
94 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
95 SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), true)
96 SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
97 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
98 SKGTESTERROR(QStringLiteral("DOC:saveAs+overwrite=false"), document1.saveAs(filename1, false), false)
99 SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
100 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
101 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
102 SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
103 SKGTEST(QStringLiteral("DOC:getCurrentFileName"), document1.getCurrentFileName(), filename1)
104
105 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t1")), true)
106 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true) // due to the beginTransaction
107 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
108 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true)
109 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2"))
110 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), true)
111 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
112
113 SKGTESTBOOL("DOC:exist", QFile(filename1).exists(), true)
114 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
115 SKGTESTBOOL("DOC:isFileModified", document1.isFileModified(), false)
116 SKGTESTBOOL("DOC:getCurrentFileName", (!document1.getCurrentFileName().isEmpty()), true)
117 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1"))
118 }
119
120 {
121 SKGDocument document1;
122 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
123 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("t3")), true)
124 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("ATT3"), QStringLiteral("VAL3")), true)
125 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
126 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
127
128 SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
129 SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd")), true)
130 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
131 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
132 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
133
134 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
135 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
136 }
137 {
138 SKGDocument document1;
139 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), false)
140 SKGTEST(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("wrong pwd")).getReturnCode(), ERR_ENCRYPTION)
141 }
142 {
143 SKGDocument document1;
144 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QStringLiteral("pwd")), true)
145 SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QStringLiteral("pwd1")), true)
146 SKGTESTERROR(QStringLiteral("DOC:changePassword"), document1.changePassword(QLatin1String("")), true)
147 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
148 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
149 }
150
151 {
152 SKGDocument document1;
153 QFile(filename1).remove();
154 SKGTESTERROR(QStringLiteral("DOC:initialize"), document1.initialize(), true)
155 document1.setBackupParameters(QLatin1String(""), QStringLiteral("/invalid suffix"));
156 SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
157 SKGTESTERROR(QStringLiteral("DOC:saveAs"), document1.saveAs(filename1, true), true)
158
159 document1.setBackupParameters(QStringLiteral("."), QStringLiteral(".old"));
160 SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/.file.skg.old"))
161
162 document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.backup"));
163 SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".backup")
164
165 document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<DATE>.skg"));
166 SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file_") % SKGServices::dateToSqlString(QDateTime::currentDateTime().date()) % ".skg")
167
168 document1.setBackupParameters(QLatin1String(""), QStringLiteral("_<TIME>.backup"));
169 SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/tmp/file.skg")), QStringLiteral("/tmp/file.skg_") % SKGServices::timeToString(QDateTime::currentDateTime()) % ".backup")
170
171 document1.setBackupParameters(QStringLiteral("/tmp/"), QStringLiteral(".old"));
172 SKGTEST(QStringLiteral("DOC:getBackupFile"), document1.getBackupFile(QStringLiteral("/home/user1/file.skg")), QStringLiteral("/tmp/file.skg.old"))
173 }
174
175 {
176 SKGDocument document1;
177 SKGTESTERROR(QStringLiteral("DOC:load"), document1.load(filename1, QLatin1String("")), true)
178 SKGTESTERROR(QStringLiteral("DOC:beginTransaction"), document1.beginTransaction(QStringLiteral("tt")), true)
179 SKGTESTERROR(QStringLiteral("DOC:setParameter"), document1.setParameter(QStringLiteral("SAVE"), QStringLiteral("1")), true)
180 SKGTEST(QStringLiteral("DOC:getParameter"), document1.getParameter(QStringLiteral("SAVE")), QStringLiteral("1"))
181 SKGTESTERROR(QStringLiteral("DOC:endTransaction"), document1.endTransaction(true), true)
182 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), true)
183
184 // Check save when file system is full
185 qputenv("SKGFILESYSTEMFULL", "Y");
186 SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
187 SKGTESTERROR(QStringLiteral("DOC:save"), document1.save(), false)
188 SKGTEST(QStringLiteral("DOC:getParameter"), static_cast<unsigned int>(QFile(filename1).exists()), static_cast<unsigned int>(true))
189 }
190
191 QFile(filename1).remove();
192 QFile(filename1 % ".old").remove();
193 }
194 // End test
195 SKGENDTEST()
196 }
197