File indexing completed on 2024-05-12 16:45:29
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 0013 /** 0014 * To check the progress 0015 */ 0016 static int previousProgress = 0; 0017 0018 /** 0019 * To test progress 0020 * @param iPos the current position 0021 * @return 0 0022 */ 0023 int progress1(int iPos, qint64 /*iTime*/, const QString& /*iName*/, void* /*iData*/) 0024 { 0025 if (previousProgress > iPos) { 0026 return 1; 0027 } 0028 previousProgress = iPos; 0029 return 0; 0030 } 0031 0032 /** 0033 * To test progress 0034 * @param iPos the current position 0035 * @return 1 0036 */ 0037 int progress2(int iPos, qint64 /*iTime*/, const QString& /*iName*/, void* /*iData*/) 0038 { 0039 if (iPos > 50) { 0040 return 1; 0041 } 0042 return 0; 0043 } 0044 /** 0045 * The main function of the unit test 0046 * @param argc the number of arguments 0047 * @param argv the list of arguments 0048 */ 0049 int main(int argc, char** argv) 0050 { 0051 Q_UNUSED(argc) 0052 Q_UNUSED(argv) 0053 0054 // Init test 0055 SKGINITTEST(true) 0056 0057 // test class SKGDocument / COMMIT / ROLLBACK 0058 { 0059 SKGDocument document1; 0060 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0061 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction(transaction1)"), document1.beginTransaction(QStringLiteral("transaction1")), false) 0062 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0063 SKGTESTERROR(QStringLiteral("TRANS.initialize"), document1.initialize(), true) 0064 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0065 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction(transaction1)"), document1.beginTransaction(QStringLiteral("transaction1")), true) 0066 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 1) 0067 SKGTESTERROR(QStringLiteral("TRANS.endTransaction"), document1.endTransaction(false), true) 0068 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0069 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction(transaction2)"), document1.beginTransaction(QStringLiteral("transaction2")), true) 0070 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 1) 0071 SKGTESTERROR(QStringLiteral("TRANS.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true) 0072 SKGTESTERROR(QStringLiteral("TRANS.endTransaction"), document1.endTransaction(true), true) 0073 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0074 SKGTESTERROR(QStringLiteral("TRANS.endTransaction TOO MANY !"), document1.endTransaction(true), false) 0075 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0076 0077 // Test rollback 0078 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction"), document1.beginTransaction(QStringLiteral("transaction3")), true) 0079 SKGTESTERROR(QStringLiteral("TRANS.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true) 0080 SKGTESTERROR(QStringLiteral("TRANS.endTransaction"), document1.endTransaction(false), true) 0081 SKGTEST(QStringLiteral("TRANS.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0082 0083 // Test multi transaction in cascade 0084 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0085 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction"), document1.beginTransaction(QStringLiteral("transaction4")), true) 0086 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 1) 0087 SKGTESTERROR(QStringLiteral("TRANS.beginTransaction"), document1.beginTransaction(QStringLiteral("transaction'5")), true) 0088 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 2) 0089 SKGTESTERROR(QStringLiteral("TRANS.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true) 0090 SKGTESTERROR(QStringLiteral("TRANS.endTransaction"), document1.endTransaction(false), true) 0091 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 1) 0092 SKGTEST(QStringLiteral("TRANS.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2")) 0093 SKGTESTERROR(QStringLiteral("TRANS.endTransaction"), document1.endTransaction(false), true) 0094 SKGTEST(QStringLiteral("TRANS.getDepthTransaction"), document1.getDepthTransaction(), 0) 0095 SKGTEST(QStringLiteral("TRANS.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0096 0097 SKGPropertyObject prop(&document1); 0098 SKGTESTERROR(QStringLiteral("PROP.getParameter"), prop.setName(QStringLiteral("ATT1")), true) 0099 SKGTESTERROR(QStringLiteral("PROP.load"), prop.load(), true) 0100 SKGTEST(QStringLiteral("PROP.getValue"), prop.getValue(), QStringLiteral("VAL1")) 0101 prop.getParentId(); 0102 0103 SKGPropertyObject prop2(prop); 0104 SKGPropertyObject prop3(static_cast<SKGObjectBase>(prop)); 0105 SKGPropertyObject prop4; 0106 prop4 = static_cast<SKGObjectBase>(prop); 0107 } 0108 0109 // test class SKGDocument / COMMIT / ROLLBACK with SKGTransactionMng 0110 { 0111 // Test with a succeeded transaction 0112 SKGError err; 0113 SKGDocument document1; 0114 SKGTESTERROR(QStringLiteral("TRANSMNG.initialize()"), document1.initialize(), true) 0115 SKGTEST(QStringLiteral("TRANSMNG.getNbTransaction"), document1.getNbTransaction(), 0) { 0116 // Scope of the transaction 0117 SKGBEGINTRANSACTION(document1, QStringLiteral("T1"), err) 0118 0119 // The code here 0120 IFOK(err) { 0121 SKGTEST(QStringLiteral("TRANSMNG.getDepthTransaction"), document1.getDepthTransaction(), 1) 0122 0123 // Example; an error is generated 0124 err = SKGError(1, QStringLiteral("Error1")); 0125 } 0126 0127 // A rollback is done here because the scope is close 0128 } 0129 SKGTESTERROR(QStringLiteral("TRANSMNG.err"), err, false) 0130 SKGTEST(QStringLiteral("TRANSMNG.getNbTransaction"), document1.getNbTransaction(), 0) 0131 SKGTEST(QStringLiteral("TRANSMNG.getDepthTransaction"), document1.getDepthTransaction(), 0) 0132 } 0133 0134 { 0135 // Test with a succeeded transaction 0136 SKGError err; 0137 SKGDocument document1; 0138 SKGTESTERROR(QStringLiteral("TRANSMNG.initialize()"), document1.initialize(), true) 0139 SKGTEST(QStringLiteral("TRANSMNG.getNbTransaction"), document1.getNbTransaction(), 0) { 0140 // Scope of the transaction 0141 SKGBEGINTRANSACTION(document1, QStringLiteral("T1"), err) 0142 0143 // The code here 0144 IFOK(err) { 0145 SKGTEST(QStringLiteral("TRANSMNG.getDepthTransaction"), document1.getDepthTransaction(), 1) 0146 0147 // Example; transaction succeeded 0148 SKGTESTERROR(QStringLiteral("TRANS.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true) 0149 } 0150 0151 // A commit is done here because the scope is close 0152 } 0153 SKGTESTERROR(QStringLiteral("TRANSMNG.err"), err, true) 0154 SKGTEST(QStringLiteral("TRANSMNG.getNbTransaction"), document1.getNbTransaction(), 1) 0155 SKGTEST(QStringLiteral("TRANSMNG.getDepthTransaction"), document1.getDepthTransaction(), 0) 0156 } 0157 0158 { 0159 // Test undo on parameters 0160 SKGDocument document1; 0161 SKGTESTERROR(QStringLiteral("TRANSUNDO.initialize()"), document1.initialize(), true) 0162 SKGError err; 0163 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QLatin1String("")) 0164 0165 { 0166 // In a scope to the then endTransaction automatically 0167 SKGBEGINTRANSACTION(document1, QStringLiteral("T1"), err) 0168 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1_1")), true) // To test undo on more than one modification of an object in a transaction 0169 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1_2")), true) // To test undo on more than one modification of an object in a transaction 0170 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL1")), true) 0171 } 0172 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0173 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 1) 0174 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 0) 0175 0176 { 0177 // In a scope to the then endTransaction automatically 0178 SKGBEGINTRANSACTION(document1, QStringLiteral("T2"), err) 0179 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2_1")), true) // To test undo on more than one modification of an object in a transaction 0180 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2_2")), true) // To test undo on more than one modification of an object in a transaction 0181 0182 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT1"), QStringLiteral("VAL2")), true) 0183 } 0184 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2")) 0185 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 2) 0186 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 0) 0187 0188 QStringList oResult; 0189 int nbitemexpected = 6; 0190 SKGTESTERROR(QStringLiteral("TRANSUNDO.getDistinctValues"), document1.getDistinctValues(QStringLiteral("doctransactionitem"), QStringLiteral("id"), oResult), true) 0191 SKGTEST(QStringLiteral("TRANSUNDO.oResult.size"), oResult.size(), nbitemexpected) 0192 0193 SKGTESTERROR(QStringLiteral("TRANSUNDO.undoRedoTransaction(T2, SKGDocument::UNDO)"), document1.undoRedoTransaction(), true) 0194 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0195 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 1) 0196 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 1) 0197 0198 SKGTESTERROR(QStringLiteral("TRANSUNDO.getDistinctValues"), document1.getDistinctValues(QStringLiteral("doctransactionitem"), QStringLiteral("id"), oResult), true) 0199 SKGTEST(QStringLiteral("TRANSUNDO.oResult.size"), oResult.size(), nbitemexpected) 0200 0201 SKGTESTERROR(QStringLiteral("TRANSUNDO.undoRedoTransaction(T1, SKGDocument::UNDO)"), document1.undoRedoTransaction(), true) 0202 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QLatin1String("")) 0203 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 0) 0204 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 2) 0205 0206 SKGTESTERROR(QStringLiteral("TRANSUNDO.getDistinctValues"), document1.getDistinctValues(QStringLiteral("doctransactionitem"), QStringLiteral("id"), oResult), true) 0207 SKGTEST(QStringLiteral("TRANSUNDO.oResult.size"), oResult.size(), nbitemexpected) 0208 0209 SKGTESTERROR(QStringLiteral("TRANSUNDO.undoRedoTransaction(T1, SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0210 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL1")) 0211 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 1) 0212 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 1) 0213 0214 SKGTESTERROR(QStringLiteral("TRANSUNDO.getDistinctValues"), document1.getDistinctValues(QStringLiteral("doctransactionitem"), QStringLiteral("id"), oResult), true) 0215 SKGTEST(QStringLiteral("TRANSUNDO.oResult.size"), oResult.size(), nbitemexpected) 0216 0217 SKGTESTERROR(QStringLiteral("TRANSUNDO.undoRedoTransaction(T2, SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0218 SKGTEST(QStringLiteral("TRANSUNDO.getParameter"), document1.getParameter(QStringLiteral("ATT1")), QStringLiteral("VAL2")) 0219 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction"), document1.getNbTransaction(), 2) 0220 SKGTEST(QStringLiteral("TRANSUNDO.getNbTransaction(SKGDocument::REDO))"), document1.getNbTransaction(SKGDocument::REDO), 0) 0221 SKGTESTERROR(QStringLiteral("TRANSUNDO.getDistinctValues"), document1.getDistinctValues(QStringLiteral("doctransactionitem"), QStringLiteral("id"), oResult), true) 0222 SKGTEST(QStringLiteral("TRANSUNDO.oResult.size"), oResult.size(), nbitemexpected) 0223 } 0224 0225 { 0226 // Test max depth for transaction 0227 SKGDocument document1; 0228 SKGTESTERROR(QStringLiteral("MAXDEPTH.initialize()"), document1.initialize(), true) 0229 SKGError err; 0230 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 0) { 0231 SKGBEGINTRANSACTION(document1, QStringLiteral("MAXDEPTH 1"), err) 0232 SKGTESTERROR(QStringLiteral("MAXDEPTH.setParameter"), document1.setParameter(QStringLiteral("SKG_UNDO_MAX_DEPTH"), QStringLiteral("3")), true) 0233 } 0234 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 1) { 0235 SKGBEGINTRANSACTION(document1, QStringLiteral("MAXDEPTH 2"), err) 0236 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0237 } 0238 SKGTESTERROR(QStringLiteral("MAXDEPTH.endTransaction"), err, true) 0239 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 2) { 0240 SKGBEGINTRANSACTION(document1, QStringLiteral("MAXDEPTH 3"), err) 0241 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0242 } 0243 SKGTESTERROR(QStringLiteral("MAXDEPTH.endTransaction"), err, true) 0244 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 3) { 0245 SKGBEGINTRANSACTION(document1, QStringLiteral("MAXDEPTH 4"), err) 0246 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0247 } 0248 SKGTESTERROR(QStringLiteral("MAXDEPTH.endTransaction"), err, true) 0249 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 3) { 0250 SKGBEGINTRANSACTION(document1, QStringLiteral("MAXDEPTH 5"), err) 0251 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0252 SKGTESTERROR(QStringLiteral("TRANSUNDO.setParameter"), document1.setParameter(QStringLiteral("ATT5"), QStringLiteral("VAL")), true) 0253 } 0254 SKGTESTERROR(QStringLiteral("MAXDEPTH.endTransaction"), err, true) 0255 SKGTEST(QStringLiteral("MAXDEPTH.getNbTransaction"), document1.getNbTransaction(), 3) 0256 0257 SKGDocument::SKGObjectModificationList oModifications; 0258 SKGTESTERROR(QStringLiteral("MAXDEPTH.getModifications"), document1.getModifications(document1.getTransactionToProcess(SKGDocument::UNDO), oModifications), true) 0259 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.count"), oModifications.count(), 2) 0260 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.id"), oModifications[0].id, 7) 0261 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.table"), oModifications[0].table, QStringLiteral("parameters")) 0262 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.type"), static_cast<unsigned int>(oModifications[0].type), static_cast<unsigned int>(SKGDocument::U)) 0263 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.id"), oModifications[1].id, 8) 0264 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.table"), oModifications[1].table, QStringLiteral("parameters")) 0265 SKGTEST(QStringLiteral("MAXDEPTH.oModifications.type"), static_cast<unsigned int>(oModifications[1].type), static_cast<unsigned int>(SKGDocument::I)) 0266 } 0267 0268 { 0269 // Redo delete after new transaction 0270 SKGDocument document1; 0271 SKGTESTERROR(QStringLiteral("REDO.initialize()"), document1.initialize(), true) 0272 SKGError err; 0273 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 0) { 0274 SKGBEGINTRANSACTION(document1, QStringLiteral("SKGDocument::REDO 1"), err) 0275 SKGTESTERROR(QStringLiteral("REDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0276 } 0277 { 0278 SKGBEGINTRANSACTION(document1, QStringLiteral("SKGDocument::REDO 2"), err) 0279 SKGTESTERROR(QStringLiteral("REDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0280 } 0281 { 0282 SKGBEGINTRANSACTION(document1, QStringLiteral("SKGDocument::REDO 3"), err) 0283 SKGTESTERROR(QStringLiteral("REDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0284 } 0285 { 0286 SKGBEGINTRANSACTION(document1, QStringLiteral("SKGDocument::REDO 4"), err) 0287 SKGTESTERROR(QStringLiteral("REDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0288 } 0289 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 4) 0290 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 0) 0291 0292 SKGTESTERROR(QStringLiteral("REDO.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0293 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 3) 0294 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 1) 0295 0296 SKGTESTERROR(QStringLiteral("REDO.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0297 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 2) 0298 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 2) 0299 0300 SKGTESTERROR(QStringLiteral("REDO.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0301 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 3) 0302 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 1) 0303 0304 SKGTESTERROR(QStringLiteral("REDO.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0305 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 2) 0306 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 2) 0307 0308 { 0309 SKGBEGINTRANSACTION(document1, QStringLiteral("SKGDocument::REDO 5"), err) 0310 SKGTESTERROR(QStringLiteral("REDO.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0311 } 0312 0313 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 3) 0314 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 0) 0315 0316 SKGTESTERROR(QStringLiteral("REDO.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::UNDOLASTSAVE), true) 0317 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(), 0) 0318 SKGTEST(QStringLiteral("REDO.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 1) 0319 } 0320 0321 { 0322 // Test progress 0323 SKGDocument document1; 0324 SKGTESTERROR(QStringLiteral("PROGRESS.initialize()"), document1.initialize(), true) 0325 SKGTESTERROR(QStringLiteral("PROGRESS.setProgressCallback"), document1.setProgressCallback(&progress1, nullptr), true) 0326 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("PROGRESS1"), 5), true) 0327 for (int i = 1; i <= 5; ++i) { 0328 SKGTESTERROR(QStringLiteral("PROGRESS.stepForward"), document1.stepForward(i), true) 0329 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("PROGRESS2"), 3), true) 0330 for (int j = 1; j <= 3; j++) { 0331 SKGTESTERROR(QStringLiteral("PROGRESS.stepForward"), document1.stepForward(j), true) 0332 } 0333 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0334 } 0335 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0336 0337 SKGTESTERROR(QStringLiteral("PROGRESS.setProgressCallback"), document1.setProgressCallback(&progress2, nullptr), true) 0338 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("PROGRESS1"), 5), true) 0339 for (int i = 1; i <= 5; ++i) { 0340 SKGTESTERROR(QStringLiteral("PROGRESS.stepForward"), document1.stepForward(i), (i < 3)) 0341 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("PROGRESS2"), 3), (i < 3)) 0342 for (int j = 1; j <= 3; j++) { 0343 SKGTESTERROR(QStringLiteral("PROGRESS.stepForward"), document1.stepForward(j), (3 * i + j - 3 < 5)) 0344 } 0345 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0346 } 0347 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0348 } 0349 0350 { 0351 // Test progress 0352 SKGDocument document1; 0353 SKGTESTERROR(QStringLiteral("PROGRESS.initialize()"), document1.initialize(), true) 0354 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0355 SKGTESTERROR(QStringLiteral("PROGRESS.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0356 0357 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0358 SKGTEST(QStringLiteral("PROGRESS.getNbTransaction"), document1.getNbTransaction(), 1) 0359 0360 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0361 SKGTESTERROR(QStringLiteral("PROGRESS.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0362 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(true), true) 0363 SKGTEST(QStringLiteral("PROGRESS.getNbTransaction"), document1.getNbTransaction(), 2) 0364 0365 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("T3")), true) 0366 SKGTESTERROR(QStringLiteral("PROGRESS.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0367 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(false), true) 0368 SKGTEST(QStringLiteral("PROGRESS.getNbTransaction"), document1.getNbTransaction(), 2) 0369 0370 // Transaction failed with existing name 0371 SKGTESTERROR(QStringLiteral("PROGRESS.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0372 SKGTESTERROR(QStringLiteral("PROGRESS.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0373 SKGTESTERROR(QStringLiteral("PROGRESS.endTransaction"), document1.endTransaction(false), true) 0374 SKGTEST(QStringLiteral("PROGRESS.getNbTransaction"), document1.getNbTransaction(), 2) 0375 } 0376 0377 { 0378 // Test group of transactions on U 0379 SKGDocument document1; 0380 SKGTESTERROR(QStringLiteral("GROUP.initialize()"), document1.initialize(), true) 0381 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0382 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL1")), true) 0383 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0384 0385 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0386 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL2")), true) 0387 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0388 0389 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T3")), true) 0390 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL3")), true) 0391 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0392 0393 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T4")), true) 0394 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL4")), true) 0395 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0396 0397 SKGTESTERROR(QStringLiteral("GROUP.groupTransactions("), document1.groupTransactions(3, 5), true) 0398 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(), 2) 0399 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0400 SKGTEST(QStringLiteral("GROUP.getParameter"), document1.getParameter(QStringLiteral("ATT")), QStringLiteral("VAL1")) 0401 0402 // Remove all transaction 0403 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::UNDO), 1) 0404 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 1) 0405 SKGTESTERROR(QStringLiteral("GROUP.removeAllTransactions"), document1.removeAllTransactions(), true) 0406 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::UNDO), 0) 0407 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 0) 0408 } 0409 0410 { 0411 // Test group of transactions on R 0412 SKGDocument document1; 0413 SKGTESTERROR(QStringLiteral("GROUP.initialize()"), document1.initialize(), true) 0414 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0415 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL1")), true) 0416 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0417 0418 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0419 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL2")), true) 0420 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0421 0422 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T3")), true) 0423 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL3")), true) 0424 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0425 0426 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T4")), true) 0427 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL4")), true) 0428 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0429 0430 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0431 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0432 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0433 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0434 0435 SKGTESTERROR(QStringLiteral("GROUP.groupTransactions("), document1.groupTransactions(7, 9), true) 0436 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 2) 0437 // document1.dump(DUMPTRANSACTIONS); 0438 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0439 SKGTEST(QStringLiteral("GROUP.getParameter"), document1.getParameter(QStringLiteral("ATT")), QStringLiteral("VAL3")) 0440 } 0441 0442 { 0443 // Test group of transactions on U and R 0444 SKGDocument document1; 0445 SKGTESTERROR(QStringLiteral("GROUP.initialize()"), document1.initialize(), true) 0446 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0447 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL1")), true) 0448 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0449 0450 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0451 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL2")), true) 0452 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0453 0454 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T3")), true) 0455 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL3")), true) 0456 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0457 0458 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T4")), true) 0459 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL4")), true) 0460 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0461 0462 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0463 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(), true) 0464 0465 SKGTESTERROR(QStringLiteral("GROUP.groupTransactions("), document1.groupTransactions(3, 6), false) 0466 // document1.dump(DUMPTRANSACTIONS); 0467 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::UNDO), 2) 0468 SKGTEST(QStringLiteral("GROUP.getNbTransaction"), document1.getNbTransaction(SKGDocument::REDO), 2) 0469 } 0470 0471 { 0472 // Test group of transactions on R 0473 SKGDocument document1; 0474 SKGTESTERROR(QStringLiteral("GROUP.initialize()"), document1.initialize(), true) 0475 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0476 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL1")), true) 0477 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0478 0479 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0480 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL2")), true) 0481 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0482 0483 QString filename1 = SKGTest::getTestPath(QStringLiteral("OUT")) % "/filename1.skg"; 0484 SKGTESTERROR(QStringLiteral("GROUP.saveAs"), document1.saveAs(filename1, true), true) 0485 0486 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T3")), true) 0487 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL3")), true) 0488 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0489 0490 SKGTESTERROR(QStringLiteral("GROUP.beginTransaction"), document1.beginTransaction(QStringLiteral("T4")), true) 0491 SKGTESTERROR(QStringLiteral("GROUP.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL4")), true) 0492 SKGTESTERROR(QStringLiteral("GROUP.endTransaction"), document1.endTransaction(true), true) 0493 0494 document1.dump(DUMPTRANSACTIONS); 0495 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::UNDOLASTSAVE), true) 0496 SKGTEST(QStringLiteral("GROUP.getParameter"), document1.getParameter(QStringLiteral("ATT")), QStringLiteral("VAL2")) 0497 SKGTESTERROR(QStringLiteral("GROUP.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0498 SKGTEST(QStringLiteral("GROUP.getParameter"), document1.getParameter(QStringLiteral("ATT")), QStringLiteral("VAL4")) 0499 0500 QStringList oResult; 0501 SKGTESTERROR(QStringLiteral("SKGServices::dumpSelectSqliteOrder"), document1.dumpSelectSqliteOrder(QStringLiteral("SELECT * from doctransaction"), oResult), true) 0502 SKGTESTERROR(QStringLiteral("SKGServices::dumpSelectSqliteOrder"), document1.dumpSelectSqliteOrder(QStringLiteral("SELECT * from doctransaction")), true) 0503 } 0504 0505 { 0506 // Test error 0507 SKGDocument document1; 0508 SKGTESTERROR(QStringLiteral("ERROR.initialize()"), document1.initialize(), true) 0509 SKGTESTERROR(QStringLiteral("ERROR.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::UNDO), false) // No transaction 0510 0511 SKGTESTERROR(QStringLiteral("ERROR.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0512 SKGTEST(QStringLiteral("ERROR.getCurrentTransaction"), document1.getCurrentTransaction(), 2) 0513 0514 SKGTESTERROR(QStringLiteral("ERROR.groupTransactions"), document1.groupTransactions(1, 1), false) // Not authorized into a transaction 0515 SKGTESTERROR(QStringLiteral("ERROR.undoRedoTransaction"), document1.undoRedoTransaction(SKGDocument::UNDO), false) // Not authorized into a transaction 0516 SKGTESTERROR(QStringLiteral("ERROR.saveAs"), document1.saveAs(SKGTest::getTestPath(QStringLiteral("OUT")) % "/filename1.skg", true), false) // Not authorized into a transaction 0517 0518 SKGTESTERROR(QStringLiteral("ERROR.endTransaction"), document1.endTransaction(true), true) 0519 } 0520 0521 { 0522 // Test messages 0523 SKGDocument document1; 0524 SKGTESTERROR(QStringLiteral("MSG.initialize()"), document1.initialize(), true) 0525 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Information"), SKGDocument::Information), true) 0526 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Warning"), SKGDocument::Warning), true) 0527 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Positive"), SKGDocument::Positive), true) 0528 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Error"), SKGDocument::Error), true) 0529 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Hidden"), SKGDocument::Hidden), true) 0530 0531 SKGTESTERROR(QStringLiteral("MSG.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0532 SKGTESTERROR(QStringLiteral("MSG.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL")), true) 0533 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("Hello")), true) 0534 SKGTESTERROR(QStringLiteral("MSG.sendMessage"), document1.sendMessage(QStringLiteral("World")), true) 0535 SKGTESTERROR(QStringLiteral("MSG.endTransaction"), document1.endTransaction(true), true) 0536 0537 SKGDocument::SKGMessageList msg; 0538 SKGTESTERROR(QStringLiteral("MSG.getMessages"), document1.getMessages(document1.getTransactionToProcess(SKGDocument::UNDO), msg), true) 0539 SKGTEST(QStringLiteral("MSG.msg.count"), msg.count(), 6) 0540 SKGTEST(QStringLiteral("MSG.msg"), msg.at(0).Text, QStringLiteral("Information")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(0).Type), static_cast<unsigned int>(SKGDocument::Information)) 0541 SKGTEST(QStringLiteral("MSG.msg"), msg.at(1).Text, QStringLiteral("Warning")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(1).Type), static_cast<unsigned int>(SKGDocument::Warning)) 0542 SKGTEST(QStringLiteral("MSG.msg"), msg.at(2).Text, QStringLiteral("Positive")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(2).Type), static_cast<unsigned int>(SKGDocument::Positive)) 0543 SKGTEST(QStringLiteral("MSG.msg"), msg.at(3).Text, QStringLiteral("Error")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(3).Type), static_cast<unsigned int>(SKGDocument::Error)) 0544 SKGTEST(QStringLiteral("MSG.msg"), msg.at(4).Text, QStringLiteral("Hello")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(4).Type), static_cast<unsigned int>(SKGDocument::Information)) 0545 SKGTEST(QStringLiteral("MSG.msg"), msg.at(5).Text, QStringLiteral("World")); SKGTEST(QStringLiteral("MSG.type"), static_cast<unsigned int>(msg.at(5).Type), static_cast<unsigned int>(SKGDocument::Information)) 0546 } 0547 0548 { 0549 // Test clean after save 0550 SKGDocument document1; 0551 SKGTESTERROR(QStringLiteral("CLEAN.initialize()"), document1.initialize(), true) 0552 0553 SKGTESTERROR(QStringLiteral("CLEAN.beginTransaction"), document1.beginTransaction(QStringLiteral("T1")), true) 0554 SKGTESTERROR(QStringLiteral("CLEAN.setParameter"), document1.setParameter(QStringLiteral("SKG_UNDO_CLEAN_AFTER_SAVE"), QStringLiteral("Y")), true) 0555 SKGTESTERROR(QStringLiteral("CLEAN.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL1")), true) 0556 SKGTESTERROR(QStringLiteral("CLEAN.endTransaction"), document1.endTransaction(true), true) 0557 0558 SKGTESTERROR(QStringLiteral("CLEAN.beginTransaction"), document1.beginTransaction(QStringLiteral("T2")), true) 0559 SKGTESTERROR(QStringLiteral("CLEAN.setParameter"), document1.setParameter(QStringLiteral("ATT"), QStringLiteral("VAL2")), true) 0560 SKGTESTERROR(QStringLiteral("CLEAN.endTransaction"), document1.endTransaction(true), true) 0561 0562 SKGTEST(QStringLiteral("CLEAN.getNbTransaction"), document1.getNbTransaction(SKGDocument::UNDO), 2) 0563 0564 QString filename1 = SKGTest::getTestPath(QStringLiteral("OUT")) % "/filename1.skg"; 0565 SKGTESTERROR(QStringLiteral("CLEAN.saveAs"), document1.saveAs(filename1, true), true) 0566 SKGTEST(QStringLiteral("CLEAN.getNbTransaction"), document1.getNbTransaction(SKGDocument::UNDO), 0) 0567 } 0568 // End test 0569 SKGENDTEST() 0570 }