summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2022-07-01 11:19:21 +0200
committerTim Jenssen <tim.jenssen@qt.io>2022-07-01 09:22:10 +0000
commit56bcad81adb7268773b902ece0fc065d01f3db27 (patch)
treead19b5f8f6bbeeedffcde2549bd83ab0ac0d25d1 /tests
parenta920bbf59fb071af2e6bfb306dec07bb8ba94924 (diff)
parent234958a47a6edcd17bae255411a5b0f0bbaea6c7 (diff)
downloadqt-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.cpp96
-rw-r--r--tests/auto/qml/qmldesigner/coretests/tst_testcore.h1
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