void TestKernel::nodeDynamicProperties() { GraphDocumentPtr document = GraphDocument::create(); NodeTypePtr type = document->nodeTypes().first(); NodePtr node = Node::create(document); type->addDynamicProperty("propertyA"); type->addDynamicProperty("propertyB"); type->addDynamicProperty("propertyC"); // test nodes Kernel kernel; QString script; QScriptValue result; // property read-access from script node->setDynamicProperty("propertyA", "1"); script = "Document.nodes()[0].propertyA;"; result = kernel.execute(document, script); QCOMPARE(result.toString().toInt(), 1); // property local write/read-access in script script = "Document.nodes()[0].propertyB = 2; Document.nodes()[0].propertyB"; kernel.execute(document, script); QCOMPARE(node->dynamicProperty("propertyB").toInt(), 2); // property write-access from script script = "Document.nodes()[0].propertyC = 3"; kernel.execute(document, script); QCOMPARE(node->dynamicProperty("propertyC").toInt(), 3); // cleanup document->destroy(); }
void TestKernel::automaticScriptObjectPropertyGeneration() { GraphDocumentPtr document = GraphDocument::create(); NodePtr nodeA = Node::create(document); NodePtr nodeB = Node::create(document); EdgePtr edge = Edge::create(nodeA, nodeB); Kernel kernel; QString script; QScriptValue result; // For edges/nodes we can assign arbitrary dynamic properties during // script execution. However, they exist only during execution and are removed // at the end of the execution. script = "Document.nodes()[0].nonRegProp=1; Document.nodes()[0].nonRegProp;"; result = kernel.execute(document, script); QCOMPARE(result.toString().toInt(), 1); QCOMPARE(nodeA->dynamicProperty("nonRegProp").toInt(), 0); script = "Document.edges()[0].nonRegProp=1; Document.edges()[0].nonRegProp;"; result = kernel.execute(document, script); QCOMPARE(result.toString().toInt(), 1); QCOMPARE(edge->dynamicProperty("nonRegProp").toInt(), 0); // cleanup document->destroy(); }
foreach(const NodePtr &node, nodes) { QString name = node->dynamicProperty("name").toString(); int index = nodeNames.indexOf(name); if (index == -1) { qCDebug(GRAPHTHEORY_FILEFORMAT) << "Node "<< name << " was created unnecessarily."; } QVERIFY(index != -1); nodeNames.removeAt(index); }