diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2022-07-01 11:19:21 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2022-07-01 09:22:10 +0000 |
commit | 56bcad81adb7268773b902ece0fc065d01f3db27 (patch) | |
tree | ad19b5f8f6bbeeedffcde2549bd83ab0ac0d25d1 /tests | |
parent | a920bbf59fb071af2e6bfb306dec07bb8ba94924 (diff) | |
parent | 234958a47a6edcd17bae255411a5b0f0bbaea6c7 (diff) | |
download | qt-creator-56bcad81adb7268773b902ece0fc065d01f3db27.tar.gz |
Merge remote-tracking branch 'origin/7.0' into 8.0
Change-Id: I7cd5d3808007ef739212f4347ba9b16e7b298943
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp | 96 | ||||
-rw-r--r-- | tests/auto/qml/qmldesigner/coretests/tst_testcore.h | 1 |
2 files changed, 97 insertions, 0 deletions
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index ac0440b65d..1c0239b542 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -1152,6 +1152,102 @@ void tst_TestCore::testRewriterTransactionAddingAfterReparenting() } } +void tst_TestCore::testRewriterReparentToNewNode() +{ + const QLatin1String qmlString("\n" + "import QtQuick 2.0\n" + "\n" + "Item {\n" + " Item {}\n" + " Item {}\n" + " Item {}\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()); + + const QList<ModelNode> children = rootModelNode.directSubModelNodes(); + + ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle"); + rootModelNode.nodeListProperty("data").reparentHere(rectangle); + + rectangle.setIdWithoutRefactoring("newParent"); + + QVERIFY(rectangle.isValid()); + + for (const ModelNode &child : children) + rectangle.nodeListProperty("data").reparentHere(child); + + { + RewriterTransaction transaction = testRewriterView->beginRewriterTransaction("TEST"); + ModelNode rectangle = testRewriterView->createModelNode("QtQuick.Rectangle"); + rootModelNode.nodeListProperty("data").reparentHere(rectangle); + + rectangle.setIdWithoutRefactoring("newParent2"); + + for (const ModelNode &child : children) + rectangle.nodeListProperty("data").reparentHere(child); + } + + QCOMPARE(testRewriterView->allModelNodes().count(), 7); + + const QLatin1String expectedOutcome("\nimport QtQuick 2.0\n\n" + "Item {\n\n" + " Rectangle {\n" + " id: newParent\n" + " }\n\n" + " Rectangle {\n" + " id: newParent2\n" + " Item {\n" + " }\n\n" + " Item {\n" + " }\n\n" + " Item {\n" + " }\n\n" + " Item {\n" + " }\n" + " }\n}\n"); + + + QCOMPARE(textEdit.toPlainText(), expectedOutcome); + + rectangle.destroy(); + + QCOMPARE(testRewriterView->allModelNodes().count(), 6); + + { + RewriterTransaction transaction = testRewriterView->beginRewriterTransaction("TEST"); + + ModelNode newChild = testRewriterView->createModelNode("QtQuick.Rectangle"); + rootModelNode.nodeListProperty("data").reparentHere(newChild); + newChild.setIdWithoutRefactoring("newChild"); + ModelNode newParent = testRewriterView->createModelNode("QtQuick.Rectangle"); + rootModelNode.nodeListProperty("data").reparentHere(newParent); + + newParent.setIdWithoutRefactoring("newParent3"); + + for (const ModelNode &child : children) + newParent.nodeListProperty("data").reparentHere(child); + + newParent.nodeListProperty("data").reparentHere(newChild); + } + + QCOMPARE(testRewriterView->allModelNodes().count(), 8); +} + void tst_TestCore::testRewriterForGradientMagic() { const QLatin1String qmlString("\n" diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.h b/tests/auto/qml/qmldesigner/coretests/tst_testcore.h index 9a8aeb6450..5248763fef 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.h +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.h @@ -144,6 +144,7 @@ private slots: void testRewriterChangeImports(); void testRewriterUnicodeChars(); void testRewriterTransactionAddingAfterReparenting(); + void testRewriterReparentToNewNode(); // // unit tests QmlModelNodeFacade/QmlModelState |