File indexing completed on 2024-05-12 16:45:28
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 * The main function of the unit test 0015 * @param argc the number of arguments 0016 * @param argv the list of arguments 0017 */ 0018 int main(int argc, char** argv) 0019 { 0020 Q_UNUSED(argc) 0021 Q_UNUSED(argv) 0022 0023 // Init test 0024 SKGINITTEST(true) 0025 0026 { 0027 // Test node 0028 SKGDocument document1; 0029 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0030 SKGError err; 0031 SKGNodeObject parent2; 0032 { 0033 // Scope of the transaction 0034 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0035 0036 // Create node 0 0037 SKGNodeObject nod0(&document1); 0038 SKGTESTERROR(QStringLiteral("NOD:setName+invalid name"), nod0.setName('a' % OBJECTSEPARATOR % 'b'), false) 0039 SKGTESTERROR(QStringLiteral("NOD:save"), nod0.save(), false) 0040 0041 // Create node 1 0042 SKGNodeObject nod1(&document1); 0043 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1.setName(QStringLiteral("root1")), true) 0044 SKGTESTERROR(QStringLiteral("NOD:setData"), nod1.setData(QStringLiteral("data1")), true) 0045 SKGTESTERROR(QStringLiteral("NOD:setOrder"), nod1.setOrder(12), true) 0046 SKGTESTERROR(QStringLiteral("NOD:setAutoStart"), nod1.setAutoStart(true), true) 0047 SKGTESTBOOL("NOD:exist", nod1.exist(), false) 0048 SKGTESTERROR(QStringLiteral("NOD:save"), nod1.save(), true) 0049 SKGTESTBOOL("NOD:exist", nod1.exist(), true) 0050 SKGTEST(QStringLiteral("NOD:getFullName"), nod1.getFullName(), QStringLiteral("root1")) 0051 SKGTEST(QStringLiteral("NOD:getData"), nod1.getData(), QStringLiteral("data1")) 0052 SKGTEST(QStringLiteral("NOD:getOrder"), nod1.getOrder(), 12) 0053 SKGTESTBOOL("NOD:isFolder", nod1.isFolder(), false) 0054 SKGTESTBOOL("NOD:isAutoStart", nod1.isAutoStart(), true) 0055 nod1.getIcon(); 0056 0057 // Update with bad name 0058 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1.setName("root1" % OBJECTSEPARATOR % 'A'), false) 0059 SKGTESTERROR(QStringLiteral("NOD:load"), nod1.load(), true) 0060 SKGTEST(QStringLiteral("NOD:getFullName"), nod1.getFullName(), QStringLiteral("root1")) 0061 0062 // Create node 1.1 0063 SKGNodeObject nod1_1; 0064 SKGTESTERROR(QStringLiteral("NOD:addNode"), nod1.addNode(nod1_1), true) 0065 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1_1.setName(QStringLiteral("nod1")), true) 0066 SKGTESTERROR(QStringLiteral("NOD:setOrder"), nod1_1.setOrder(1), true) 0067 SKGTESTERROR(QStringLiteral("NOD:save"), nod1_1.save(), true) 0068 SKGTEST(QStringLiteral("NOD:getFullName"), nod1_1.getFullName(), "root1" % OBJECTSEPARATOR % "nod1") 0069 0070 // Update nod1_1 0071 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1_1.setName(QStringLiteral("NODE1")), true) 0072 SKGTESTERROR(QStringLiteral("NOD:save"), nod1_1.save(), true) 0073 SKGTEST(QStringLiteral("NOD:getFullName"), nod1_1.getFullName(), "root1" % OBJECTSEPARATOR % "NODE1") 0074 0075 // Update nod1 0076 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1.setName(QStringLiteral("ROOT1")), true) 0077 SKGTESTERROR(QStringLiteral("NOD:save"), nod1.save(), true) 0078 SKGTEST(QStringLiteral("NOD:getFullName"), nod1.getFullName(), QStringLiteral("ROOT1")) 0079 0080 SKGTESTERROR(QStringLiteral("NOD:load"), nod1_1.load(), true) 0081 SKGTEST(QStringLiteral("NOD:getFullName"), nod1_1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE1") 0082 0083 // Create node 1.2 0084 SKGNodeObject nod1_2; 0085 SKGTESTERROR(QStringLiteral("NOD:addNode"), nod1.addNode(nod1_2), true) 0086 SKGTESTERROR(QStringLiteral("NOD:setName"), nod1_2.setName(QStringLiteral("NODE2")), true) 0087 SKGTESTERROR(QStringLiteral("NOD:setOrder"), nod1_2.setOrder(2), true) 0088 SKGTESTERROR(QStringLiteral("NOD:save"), nod1_2.save(), true) 0089 SKGTEST(QStringLiteral("NOD:getFullName"), nod1_2.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE2") 0090 SKGTESTBOOL("NOD:<", (nod1_1 < nod1_2), true) 0091 SKGTESTBOOL("NOD:>", (nod1_1 > nod1_2), false) 0092 SKGTESTBOOL("NOD:<", (nod1_1 < nod1_1), false) 0093 SKGTESTBOOL("NOD:>", (nod1_1 > nod1_1), false) 0094 0095 // Create node end 0096 SKGNodeObject end1; 0097 SKGTESTERROR(QStringLiteral("NOD:addNode"), nod1_1.addNode(end1), true) 0098 SKGTESTERROR(QStringLiteral("NOD:setName"), end1.setName(QStringLiteral("END")), true) 0099 SKGTESTERROR(QStringLiteral("NOD:save"), end1.save(), true) 0100 SKGTEST(QStringLiteral("NOD:getFullName"), end1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE1" % OBJECTSEPARATOR % "END") 0101 0102 // Create node end 0103 SKGNodeObject end2; 0104 SKGTESTERROR(QStringLiteral("NOD:addNode"), nod1_2.addNode(end2), true) 0105 SKGTESTERROR(QStringLiteral("NOD:setName"), end2.setName(QStringLiteral("END")), true) 0106 SKGTESTERROR(QStringLiteral("NOD:save"), end2.save(), true) 0107 SKGTEST(QStringLiteral("NOD:getFullName"), end2.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE2" % OBJECTSEPARATOR % "END") 0108 0109 SKGNodeObject end2_1; 0110 SKGTESTERROR(QStringLiteral("NOD:addNode"), end2.addNode(end2_1), true) 0111 SKGTESTERROR(QStringLiteral("NOD:setName"), end2_1.setName(QStringLiteral("REALEND")), true) 0112 SKGTESTERROR(QStringLiteral("NOD:save"), end2_1.save(), true) 0113 SKGTEST(QStringLiteral("NOD:getFullName"), end2_1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE2" % OBJECTSEPARATOR % "END" % OBJECTSEPARATOR % "REALEND") 0114 0115 // Get parent 0116 SKGNodeObject parent1; 0117 SKGTESTERROR(QStringLiteral("NOD:addNode"), end2.getParentNode(parent1), true) 0118 SKGTEST(QStringLiteral("NOD:getFullName"), parent1.getFullName(), "ROOT1" % OBJECTSEPARATOR % "NODE2") 0119 0120 // Get parent 0121 SKGTESTERROR(QStringLiteral("NOD:addNode"), parent1.getParentNode(parent2), true) 0122 SKGTEST(QStringLiteral("NOD:getFullName"), parent2.getFullName(), QStringLiteral("ROOT1")) 0123 0124 // Get children 0125 SKGObjectBase::SKGListSKGObjectBase NodeList; 0126 SKGTESTERROR(QStringLiteral("NOD:getNodes"), parent2.getNodes(NodeList), true) 0127 SKGTEST(QStringLiteral("NOD:nb nodegories"), NodeList.size(), 2) 0128 0129 // Simple delete 0130 SKGTESTERROR(QStringLiteral("NOD:delete"), end1.remove(), true) 0131 QStringList oResult; 0132 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0133 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 5) 0134 0135 SKGNodeObject nodeROOT1BC; 0136 SKGTESTERROR(QStringLiteral("NOD:addNode"), SKGNodeObject::createPathNode(&document1, "ROOT1" % OBJECTSEPARATOR % 'B' % OBJECTSEPARATOR % 'C', nodeROOT1BC), true) 0137 0138 SKGNodeObject nodeROOT1DE; 0139 SKGTESTERROR(QStringLiteral("NOD:addNode"), SKGNodeObject::createPathNode(&document1, "ROOT1" % OBJECTSEPARATOR % 'D' % OBJECTSEPARATOR % 'E', nodeROOT1DE), true) 0140 } 0141 { 0142 // Scope of the transaction 0143 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T2"), err) 0144 0145 // Cascading delete 0146 SKGTESTERROR(QStringLiteral("NOD:delete"), parent2.remove(), true) 0147 QStringList oResult; 0148 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0149 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 0) 0150 } 0151 0152 // Undo 0153 SKGTESTERROR(QStringLiteral("NOD:undoRedoTransaction"), document1.undoRedoTransaction(), true) 0154 QStringList oResult; 0155 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0156 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 9) 0157 0158 SKGTESTERROR(QStringLiteral("NOD:undoRedoTransaction"), document1.undoRedoTransaction(), true) 0159 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0160 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 0) 0161 0162 // Redo 0163 SKGTESTERROR(QStringLiteral("NOD:undoRedoTransaction(SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0164 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0165 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 9) 0166 0167 SKGTESTERROR(QStringLiteral("NOD:undoRedoTransaction(SKGDocument::REDO)"), document1.undoRedoTransaction(SKGDocument::REDO), true) 0168 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0169 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 0) 0170 } 0171 0172 { 0173 SKGDocument document1; 0174 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0175 SKGError err; 0176 { 0177 // Scope of the transaction 0178 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0179 0180 SKGNodeObject node; 0181 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % "B1" % OBJECTSEPARATOR % 'C', node), true) 0182 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % "B1" % OBJECTSEPARATOR % 'D', node), true) 0183 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % "B2" % OBJECTSEPARATOR % 'E', node), true) 0184 QStringList oResult; 0185 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0186 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 6) 0187 } 0188 } 0189 0190 { 0191 SKGDocument document1; 0192 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0193 SKGError err; 0194 { 0195 // Scope of the transaction 0196 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0197 0198 SKGNodeObject node; 0199 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % "B1" % OBJECTSEPARATOR % 'C', node), true) 0200 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % "B2" % OBJECTSEPARATOR % 'C', node), true) 0201 QStringList oResult; 0202 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0203 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 5) 0204 } 0205 } 0206 0207 { 0208 SKGDocument document1; 0209 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0210 SKGError err; 0211 { 0212 // Scope of the transaction 0213 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0214 0215 SKGNodeObject node; 0216 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % 'A', node), true) 0217 QStringList oResult; 0218 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0219 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 2) 0220 } 0221 } 0222 0223 { 0224 SKGDocument document1; 0225 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0226 SKGError err; 0227 { 0228 // Scope of the transaction 0229 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0230 0231 SKGNodeObject nodeB; 0232 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % 'B', nodeB), true) 0233 SKGNodeObject nodeC; 0234 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("C"), nodeC), true) 0235 SKGNodeObject nodeA; 0236 SKGTESTERROR(QStringLiteral("NOD:getParentNode"), nodeB.getParentNode(nodeA), true) 0237 0238 SKGNamedObject nameB = static_cast<SKGNamedObject>(nodeB); // For coverage 0239 SKGNodeObject nodeC2(static_cast<SKGObjectBase>(nodeC)); // For coverage 0240 0241 SKGTESTERROR(QStringLiteral("NOD:setParentNode"), nodeA.setParentNode(nodeB), false) 0242 SKGTESTERROR(QStringLiteral("NOD:setParentNode"), nodeA.setParentNode(nodeA), false) 0243 SKGTESTERROR(QStringLiteral("NOD:setParentNode"), nodeB.setParentNode(nodeB), false) 0244 SKGTESTERROR(QStringLiteral("NOD:setParentNode"), nodeC.setParentNode(nodeB), true) 0245 SKGTESTERROR(QStringLiteral("NOD:removeParentNode"), nodeB.removeParentNode(), true) 0246 } 0247 } 0248 0249 { 0250 SKGDocument document1; 0251 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0252 SKGError err; 0253 { 0254 // Scope of the transaction 0255 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0256 0257 SKGNodeObject nodeB1; 0258 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % 'B', nodeB1, true), true) 0259 SKGNodeObject nodeB2; 0260 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, 'A' % OBJECTSEPARATOR % 'B', nodeB2, true), true) 0261 document1.dump(DUMPALL); 0262 0263 QStringList oResult; 0264 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0265 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 3) 0266 } 0267 } 0268 0269 { 0270 SKGDocument document1; 0271 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0272 SKGError err; 0273 { 0274 // Scope of the transaction 0275 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0276 0277 SKGNodeObject nodeB1; 0278 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("B"), nodeB1, true), true) 0279 SKGNodeObject nodeB2; 0280 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("B"), nodeB2, true), true) 0281 0282 QStringList oResult; 0283 SKGTESTERROR(QStringLiteral("NOD:getDistinctValues"), document1.getDistinctValues(QStringLiteral("node"), QStringLiteral("id"), oResult), true) 0284 SKGTEST(QStringLiteral("NOD:oResult.size"), oResult.size(), 2) 0285 } 0286 } 0287 0288 // Test properties 0289 { 0290 SKGDocument document1; 0291 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0292 SKGError err; 0293 { 0294 // Scope of the transaction 0295 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0296 0297 SKGNodeObject node1; 0298 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("1"), node1, true), true) 0299 SKGNodeObject node2; 0300 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("2"), node2, true), true) 0301 0302 SKGTESTERROR(QStringLiteral("NOD:setProperty"), node1.setProperty(QStringLiteral("prop"), QStringLiteral("val1")), true) 0303 SKGTESTERROR(QStringLiteral("NOD:setProperty"), node2.setProperty(QStringLiteral("prop"), QStringLiteral("val2")), true) 0304 0305 SKGTEST(QStringLiteral("NOD:getProperty"), node1.getProperty(QStringLiteral("prop")), QStringLiteral("val1")) 0306 SKGTEST(QStringLiteral("NOD:getProperty"), node2.getProperty(QStringLiteral("prop")), QStringLiteral("val2")) 0307 0308 SKGTESTERROR(QStringLiteral("NOD:setProperty"), node1.setProperty(QStringLiteral("prop"), QStringLiteral("val3")), true) 0309 0310 SKGTEST(QStringLiteral("NOD:getProperty"), node1.getProperty(QStringLiteral("prop")), QStringLiteral("val3")) 0311 SKGTEST(QStringLiteral("NOD:getProperty"), node2.getProperty(QStringLiteral("prop")), QStringLiteral("val2")) 0312 } 0313 } 0314 0315 // Test setAttribute 0316 { 0317 SKGDocument document1; 0318 SKGTESTERROR(QStringLiteral("document1.initialize()"), document1.initialize(), true) 0319 SKGError err; 0320 { 0321 // Scope of the transaction 0322 SKGBEGINTRANSACTION(document1, QStringLiteral("NODE_T1"), err) 0323 0324 SKGNodeObject node1; 0325 SKGTESTERROR(QStringLiteral("NOD:save"), node1.save(), false) 0326 SKGTESTERROR(QStringLiteral("NOD:remove"), node1.remove(), false) 0327 0328 SKGNodeObject node2; 0329 SKGTESTERROR(QStringLiteral("NOD:addNode"), node1.addNode(node2), false) 0330 SKGTESTERROR(QStringLiteral("NOD:setParentNode"), node1.setParentNode(node2), false) 0331 0332 SKGTESTERROR(QStringLiteral("NOD:createPathNode"), SKGNodeObject::createPathNode(&document1, QStringLiteral("ABC DEF "), node1, true), true) 0333 0334 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node1.setAttribute(QStringLiteral("t_name"), QStringLiteral("=lower")), true) 0335 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("t_name")), QStringLiteral("abc def ")) 0336 0337 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node1.setAttribute(QStringLiteral("t_name"), QStringLiteral("=upper")), true) 0338 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("t_name")), QStringLiteral("ABC DEF ")) 0339 0340 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node1.setAttribute(QStringLiteral("t_name"), QStringLiteral("=capwords")), true) 0341 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("t_name")), QStringLiteral("Abc Def ")) 0342 0343 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node1.setAttribute(QStringLiteral("t_name"), QStringLiteral("=capitalize")), true) 0344 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("t_name")), QStringLiteral("Abc def ")) 0345 0346 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node1.setAttribute(QStringLiteral("t_name"), QStringLiteral("=trim")), true) 0347 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("t_name")), QStringLiteral("Abc def")) 0348 0349 SKGTESTERROR(QStringLiteral("NOD:setProperty"), node1.setProperty(QStringLiteral("prop"), QStringLiteral("prop on node 1")), true) 0350 SKGTEST(QStringLiteral("NOD:getProperty"), node1.getProperty(QStringLiteral("prop")), QStringLiteral("prop on node 1")) 0351 SKGTEST(QStringLiteral("NOD:getAttribute"), node1.getAttribute(QStringLiteral("p_prop")), QStringLiteral("prop on node 1")) 0352 0353 SKGTESTERROR(QStringLiteral("NOD:save"), node1.save(), true) 0354 0355 SKGTESTERROR(QStringLiteral("NOD:addNode"), node1.addNode(node2), true) 0356 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node2.setAttribute(QStringLiteral("t_name"), QStringLiteral("node2")), true) 0357 SKGTESTERROR(QStringLiteral("NOD:save"), node2.save(), true) 0358 0359 SKGTEST(QStringLiteral("NOD:getAttribute"), node2.getAttribute(QStringLiteral("rd_node_id.(v_node)t_name")), QStringLiteral("Abc def")) 0360 SKGTEST(QStringLiteral("NOD:getAttribute"), node2.getAttribute(QStringLiteral("rd_node_id.(v_node)p_prop")), QStringLiteral("prop on node 1")) 0361 0362 SKGTEST(QStringLiteral("NOD:getAttribute"), node2.getAttribute(QStringLiteral("rd_node_id.t_name")), QStringLiteral("Abc def")) 0363 SKGTEST(QStringLiteral("NOD:getAttribute"), node2.getAttribute(QStringLiteral("rd_node_id.p_prop")), QStringLiteral("prop on node 1")) 0364 0365 SKGNodeObject node3; 0366 SKGTESTERROR(QStringLiteral("NOD:addNode"), node2.addNode(node3), true) 0367 SKGTESTERROR(QStringLiteral("NOD:setAttribute"), node3.setAttribute(QStringLiteral("t_name"), QStringLiteral("node3")), true) 0368 SKGTESTERROR(QStringLiteral("NOD:save"), node3.save(), true) 0369 0370 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.(v_node)t_name")), QStringLiteral("node2")) 0371 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.(v_node)p_prop")), QLatin1String("")) 0372 0373 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.t_name")), QStringLiteral("node2")) 0374 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.p_prop")), QLatin1String("")) 0375 0376 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.(v_node)rd_node_id.(v_node)t_name")), QStringLiteral("Abc def")) 0377 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.(v_node)rd_node_id.(v_node)p_prop")), QStringLiteral("prop on node 1")) 0378 0379 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.rd_node_id.t_name")), QStringLiteral("Abc def")) 0380 SKGTEST(QStringLiteral("NOD:getAttribute"), node3.getAttribute(QStringLiteral("rd_node_id.rd_node_id.p_prop")), QStringLiteral("prop on node 1")) 0381 } 0382 } 0383 // End test 0384 SKGENDTEST() 0385 }