diff options
Diffstat (limited to 'tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp')
-rw-r--r-- | tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index 1a4eda3bcc..31ea4e5914 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -185,7 +185,7 @@ void tst_TestCore::initTestCase() QFutureInterface<void> result; QmlJS::PathsAndLanguages lPaths; - lPaths.maybeInsert(Utils::FileName::fromString(basePaths.first()), QmlJS::Dialect::Qml); + lPaths.maybeInsert(Utils::FilePath::fromString(basePaths.first()), QmlJS::Dialect::Qml); QmlJS::ModelManagerInterface::importScan(result, QmlJS::ModelManagerInterface::workingCopy(), lPaths, QmlJS::ModelManagerInterface::instance(), false); @@ -1017,6 +1017,44 @@ void tst_TestCore::testRewriterUnicodeChars() QCOMPARE(textEdit.toPlainText(), unicodeChar); } +void tst_TestCore::testRewriterTransactionAddingAfterReparenting() +{ + const QLatin1String qmlString("\n" + "import QtQuick 2.0\n" + "\n" + "Item {\n" + "}\n"); + + QPlainTextEdit textEdit; + textEdit.setPlainText(qmlString); + NotIndentingTextEditModifier modifier(&textEdit); + + QScopedPointer<Model> model(Model::create("QtQuick.Rectangle")); + + QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView(0, RewriterView::Amend)); + testRewriterView->setTextModifier(&modifier); + model->attachView(testRewriterView.data()); + + QVERIFY(testRewriterView->errors().isEmpty()); + + ModelNode rootModelNode = testRewriterView->rootModelNode(); + QVERIFY(rootModelNode.isValid()); + + { + /* Regression test + * If a node is not a direct child node of the root item we did get an exception when adding properties + * after the reparent */ + + RewriterTransaction transaction = testRewriterView->beginRewriterTransaction("TEST"); + ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle", 2, 0); + rootModelNode.nodeListProperty("data").reparentHere(rectangle); + ModelNode rectangle2 = testRewriterView->createModelNode("QtQuick.Rectangle", 2, 0); + rectangle.nodeListProperty("data").reparentHere(rectangle2); + + rectangle2.variantProperty("width").setValue(100); + } +} + void tst_TestCore::testRewriterForGradientMagic() { const QLatin1String qmlString("\n" |