File indexing completed on 2024-05-12 16:45:20
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file is a test script. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgtestmacro.h" 0012 #include "skgbankincludes.h" 0013 0014 /** 0015 * The main function of the unit test 0016 * @param argc the number of arguments 0017 * @param argv the list of arguments 0018 */ 0019 int main(int argc, char** argv) 0020 { 0021 Q_UNUSED(argc) 0022 Q_UNUSED(argv) 0023 0024 // Init test 0025 SKGINITTEST(true) 0026 0027 { 0028 // Test category 0029 SKGDocumentBank document1; 0030 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0031 SKGError err; 0032 SKGCategoryObject parent2; 0033 { 0034 // Scope of the transaction 0035 SKGBEGINTRANSACTION(document1, QStringLiteral("CAT_T1"), err) 0036 0037 // Create category 0 0038 SKGCategoryObject cat0(&document1); 0039 SKGTESTERROR(QStringLiteral("CAT:setName+invalid name"), cat0.setName('a' % OBJECTSEPARATOR % 'b'), false) 0040 SKGTESTBOOL("CAT:exist", cat0.exist(), false) 0041 SKGTESTERROR(QStringLiteral("CAT:save"), cat0.save(), false) 0042 0043 // Create category 1 0044 SKGCategoryObject cat1(&document1); 0045 0046 SKGCategoryObject cat1_1; 0047 SKGTESTERROR(QStringLiteral("CAT:addCategory"), cat1.addCategory(cat1_1), false) 0048 SKGTESTERROR(QStringLiteral("CAT:setParentCategory"), cat1.setParentCategory(cat1_1), false) 0049 0050 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1.setName(QStringLiteral("root1")), true) 0051 SKGTESTBOOL("CAT:getFullName", cat1.isBookmarked(), false) 0052 SKGTESTERROR(QStringLiteral("CAT:bookmark"), cat1.bookmark(true), true) 0053 SKGTESTBOOL("CAT:getFullName", cat1.isBookmarked(), true) 0054 SKGTESTERROR(QStringLiteral("CAT:save"), cat1.save(), true) 0055 SKGTEST(QStringLiteral("CAT:getFullName"), cat1.getFullName(), QStringLiteral("root1")) 0056 SKGTESTERROR(QStringLiteral("CAT:load"), cat1.load(), true) 0057 SKGTEST(QStringLiteral("CAT:getFullName"), cat1.getFullName(), QStringLiteral("root1")) 0058 0059 SKGTESTBOOL("REF:isClosed", cat1.isClosed(), false) 0060 SKGTESTERROR(QStringLiteral("REF:setClosed"), cat1.setClosed(true), true) 0061 SKGTESTBOOL("REF:isClosed", cat1.isClosed(), true) 0062 0063 SKGObjectBase obj1 = static_cast<SKGObjectBase>(cat1); 0064 SKGCategoryObject cat11(obj1); 0065 0066 // Update with bad name 0067 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1.setName("root1" % OBJECTSEPARATOR % 'A'), false) 0068 SKGTESTERROR(QStringLiteral("CAT:load"), cat1.load(), true) 0069 SKGTEST(QStringLiteral("CAT:getFullName"), cat1.getFullName(), QStringLiteral("root1")) 0070 0071 // Create category 1.1 0072 SKGTESTERROR(QStringLiteral("CAT:addCategory"), cat1.addCategory(cat1_1), true) 0073 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1_1.setName(QStringLiteral("cat1")), true) 0074 SKGTESTERROR(QStringLiteral("CAT:save"), cat1_1.save(), true) 0075 SKGTEST(QStringLiteral("CAT:getFullName"), cat1_1.getFullName(), "root1" % OBJECTSEPARATOR % "cat1") 0076 0077 // Update cat1_1 0078 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1_1.setName(QStringLiteral("CAT1")), true) 0079 SKGTESTERROR(QStringLiteral("CAT:save"), cat1_1.save(), true) 0080 SKGTEST(QStringLiteral("CAT:getFullName"), cat1_1.getFullName(), "root1" % OBJECTSEPARATOR % "CAT1") 0081 0082 // Update cat1 0083 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1.setName(QStringLiteral("ROOT1")), true) 0084 SKGTESTERROR(QStringLiteral("CAT:save"), cat1.save(), true) 0085 SKGTEST(QStringLiteral("CAT:getFullName"), cat1.getFullName(), QStringLiteral("ROOT1")) 0086 0087 SKGTESTERROR(QStringLiteral("CAT:load"), cat1_1.load(), true) 0088 SKGTEST(QStringLiteral("CAT:getFullName"), cat1_1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT1") 0089 0090 // Create category 1.2 0091 SKGCategoryObject cat1_2; 0092 SKGTESTERROR(QStringLiteral("CAT:addCategory"), cat1.addCategory(cat1_2), true) 0093 SKGTESTERROR(QStringLiteral("CAT:setName"), cat1_2.setName(QStringLiteral("CAT2")), true) 0094 SKGTESTERROR(QStringLiteral("CAT:save"), cat1_2.save(), true) 0095 SKGTEST(QStringLiteral("CAT:getFullName"), cat1_2.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT2") 0096 0097 // Create category end 0098 SKGCategoryObject end1; 0099 SKGTESTERROR(QStringLiteral("CAT:addCategory"), cat1_1.addCategory(end1), true) 0100 SKGTESTERROR(QStringLiteral("CAT:setName"), end1.setName(QStringLiteral("END")), true) 0101 SKGTESTERROR(QStringLiteral("CAT:save"), end1.save(), true) 0102 SKGTEST(QStringLiteral("CAT:getFullName"), end1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT1" % OBJECTSEPARATOR % "END") 0103 0104 // Create category end 0105 SKGCategoryObject end2; 0106 SKGTESTERROR(QStringLiteral("CAT:addCategory"), cat1_2.addCategory(end2), true) 0107 SKGTESTERROR(QStringLiteral("CAT:setName"), end2.setName(QStringLiteral("END")), true) 0108 SKGTESTERROR(QStringLiteral("CAT:save"), end2.save(), true) 0109 SKGTEST(QStringLiteral("CAT:getFullName"), end2.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT2" % OBJECTSEPARATOR % "END") 0110 0111 SKGCategoryObject end2_1; 0112 SKGTESTERROR(QStringLiteral("CAT:addCategory"), end2.addCategory(end2_1), true) 0113 SKGTESTERROR(QStringLiteral("CAT:setName"), end2_1.setName(QStringLiteral("REALEND")), true) 0114 SKGTESTERROR(QStringLiteral("CAT:save"), end2_1.save(), true) 0115 SKGTEST(QStringLiteral("CAT:getFullName"), end2_1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT2" % OBJECTSEPARATOR % "END" % OBJECTSEPARATOR % "REALEND") 0116 0117 // Get parent 0118 SKGCategoryObject parent1; 0119 SKGTESTERROR(QStringLiteral("CAT:getParentCategory"), end2.getParentCategory(parent1), true) 0120 SKGTEST(QStringLiteral("CAT:getFullName"), parent1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "CAT2") 0121 0122 // Get parent 0123 SKGTESTERROR(QStringLiteral("CAT:getParentCategory"), parent1.getParentCategory(parent2), true) 0124 SKGTEST(QStringLiteral("CAT:getFullName"), parent2.getFullName(), QStringLiteral("ROOT1")) 0125 0126 SKGCategoryObject root; 0127 SKGTESTERROR(QStringLiteral("CAT:getRootCategory"), end2_1.getRootCategory(root), true) 0128 SKGTEST(QStringLiteral("CAT:getFullName"), root.getFullName(), QStringLiteral("ROOT1")) 0129 0130 // Get children 0131 SKGObjectBase::SKGListSKGObjectBase CategoryList; 0132 SKGTESTERROR(QStringLiteral("CAT:getCategories"), parent2.getCategories(CategoryList), true) 0133 SKGTEST(QStringLiteral("CAT:nb categories"), CategoryList.size(), 2) 0134 0135 // Simple delete 0136 SKGTESTERROR(QStringLiteral("CAT:delete"), end1.remove(), true) 0137 QStringList oResult; 0138 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0139 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 5) 0140 } 0141 { 0142 // Scope of the transaction 0143 SKGBEGINTRANSACTION(document1, QStringLiteral("CAT_T2"), err) 0144 0145 // Cascading delete 0146 SKGTESTERROR(QStringLiteral("CAT:delete"), parent2.remove(), true) 0147 QStringList oResult; 0148 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0149 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 0) 0150 } 0151 0152 // Undo 0153 SKGTESTERROR(QStringLiteral("CAT:undoRedoTransaction"), document1.undoRedoTransaction(), true) 0154 QStringList oResult; 0155 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0156 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 5) 0157 0158 SKGTESTERROR(QStringLiteral("CAT:undoRedoTransaction"), document1.undoRedoTransaction(), true) 0159 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0160 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 0) 0161 0162 // Redo 0163 SKGTESTERROR(QStringLiteral("CAT:undoRedoTransaction(SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0164 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0165 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 5) 0166 0167 SKGTESTERROR(QStringLiteral("CAT:undoRedoTransaction(SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0168 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0169 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 0) 0170 } 0171 0172 { 0173 SKGDocumentBank document1; 0174 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0175 SKGError err; 0176 { 0177 // Scope of the transaction 0178 SKGBEGINTRANSACTION(document1, QStringLiteral("CAT_T1"), err) 0179 0180 SKGCategoryObject cat; 0181 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QLatin1String(""), cat), true) 0182 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'A', cat, true), true) 0183 SKGTEST(QStringLiteral("CAT:getName"), cat.getName(), QStringLiteral("A")) 0184 0185 QStringList oResult; 0186 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0187 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 2) 0188 0189 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'B', cat, true, true), true) 0190 SKGTEST(QStringLiteral("CAT:getName"), cat.getName(), QStringLiteral("B")) 0191 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'B', cat, true, true), true) 0192 SKGTEST(QStringLiteral("CAT:getName"), cat.getName(), QStringLiteral("B (2)")) 0193 0194 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QStringLiteral("C"), cat, true, true), true) 0195 SKGTEST(QStringLiteral("CAT:getName"), cat.getName(), QStringLiteral("C")) 0196 SKGTESTERROR(QStringLiteral("CAT:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QStringLiteral("C"), cat, true, true), true) 0197 SKGTEST(QStringLiteral("CAT:getName"), cat.getName(), QStringLiteral("C (2)")) 0198 } 0199 } 0200 0201 { 0202 SKGDocumentBank document1; 0203 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0204 SKGError err; 0205 { 0206 // Scope of the transaction 0207 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0208 0209 SKGCategoryObject categoryB; 0210 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'B', categoryB), true) 0211 SKGCategoryObject categoryC; 0212 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QStringLiteral("C"), categoryC), true) 0213 SKGCategoryObject categoryA; 0214 SKGTESTERROR(QStringLiteral("NOD:getParentCategory"), categoryB.getParentCategory(categoryA), true) 0215 0216 SKGTESTERROR(QStringLiteral("NOD:setParentCategory"), categoryA.setParentCategory(categoryB), false) 0217 SKGTESTERROR(QStringLiteral("NOD:setParentCategory"), categoryA.setParentCategory(categoryA), false) 0218 SKGTESTERROR(QStringLiteral("NOD:setParentCategory"), categoryB.setParentCategory(categoryB), false) 0219 SKGTESTERROR(QStringLiteral("NOD:setParentCategory"), categoryC.setParentCategory(categoryB), true) 0220 SKGTESTERROR(QStringLiteral("NOD:removeParentCategory"), categoryB.removeParentCategory(), true) 0221 } 0222 } 0223 0224 // Bug 245254 0225 { 0226 SKGDocumentBank document1; 0227 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0228 SKGError err; 0229 { 0230 // Scope of the transaction 0231 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0232 0233 SKGCategoryObject categoryB; 0234 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'B', categoryB), true) 0235 SKGCategoryObject categoryC; 0236 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QStringLiteral("C"), categoryC), true) 0237 SKGCategoryObject categoryA; 0238 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'C' % OBJECTSEPARATOR % 'A', categoryA), true) 0239 0240 QStringList oResult; 0241 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0242 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 4) 0243 0244 // Merge 0245 SKGTESTERROR(QStringLiteral("CAT:merge"), categoryB.merge(categoryA), true) 0246 } 0247 } 0248 0249 // Cascading delete 0250 { 0251 SKGDocumentBank document1; 0252 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0253 SKGError err; 0254 { 0255 // Scope of the transaction 0256 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0257 0258 SKGCategoryObject categoryA; 0259 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, QStringLiteral("A"), categoryA), true) 0260 SKGCategoryObject categoryC; 0261 SKGTESTERROR(QStringLiteral("NOD:createPathCategory"), SKGCategoryObject::createPathCategory(&document1, 'A' % OBJECTSEPARATOR % 'B' % OBJECTSEPARATOR % 'C', categoryC), true) 0262 0263 QStringList oResult; 0264 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0265 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 3) 0266 0267 // Delete 0268 SKGTESTERROR(QStringLiteral("CAT:remove"), categoryA.remove(), true) 0269 0270 SKGTESTERROR(QStringLiteral("CAT:getDistinctValues"), document1.getDistinctValues(QStringLiteral("category"), QStringLiteral("id"), oResult), true) 0271 SKGTEST(QStringLiteral("CAT:oResult.size"), oResult.size(), 0) 0272 } 0273 } 0274 // End test 0275 SKGENDTEST() 0276 }