From 6b09a506ac3c84f84e3bceb05f2bfe8d86d9c81a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Fri, 23 Apr 2010 13:09:53 +0200 Subject: [PATCH] QmlDesigner: auto test for BAUHAUS-631 --- .../qml/qmldesigner/coretests/testcore.cpp | 118 ++++++++++++++++++ .../auto/qml/qmldesigner/coretests/testcore.h | 1 + 2 files changed, 119 insertions(+) diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.cpp b/tests/auto/qml/qmldesigner/coretests/testcore.cpp index 93266f344ea..11963857bde 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/testcore.cpp @@ -583,6 +583,124 @@ void TestCore::testRewriterGroupedProperties() QCOMPARE(textEdit.toPlainText(), expected); } +void TestCore::testRewriterPreserveOrder() +{ + const QLatin1String qmlString1("\n" + "import Qt 4.7\n" + "\n" + "Rectangle {\n" + "width: 640\n" + "height: 480\n" + "\n" + "states: [\n" + "State {\n" + "name: \"State1\"\n" + "}\n" + "]\n" + "\n" + "Rectangle {\n" + "id: rectangle1\n" + "x: 18\n" + "y: 19\n" + "width: 100\n" + "height: 100\n" + "}\n" + "}\n"); + const QLatin1String qmlString2("\n" + "import Qt 4.7\n" + "\n" + "Rectangle {\n" + "width: 640\n" + "height: 480\n" + "\n" + "Rectangle {\n" + "id: rectangle1\n" + "x: 18\n" + "y: 19\n" + "width: 100\n" + "height: 100\n" + "}\n" + "states: [\n" + "State {\n" + "name: \"State1\"\n" + "}\n" + "]\n" + "\n" + "}\n"); + + { + QPlainTextEdit textEdit; + textEdit.setPlainText(qmlString2); + NotIndentingTextEditModifier modifier(&textEdit); + + QScopedPointer<Model> model(Model::create("Qt/Text")); + + QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); + testRewriterView->setTextModifier(&modifier); + model->attachView(testRewriterView.data()); + + QVERIFY(testRewriterView->errors().isEmpty()); + + ModelNode rootModelNode = testRewriterView->rootModelNode(); + QVERIFY(rootModelNode.isValid()); + + RewriterTransaction transaction = testRewriterView->beginRewriterTransaction(); + + ModelNode newModelNode = testRewriterView->createModelNode("Qt/Rectangle", 4, 7); + + newModelNode.setParentProperty(rootModelNode.nodeAbstractProperty("data")); + + newModelNode.setId("rectangle2"); + QCOMPARE(newModelNode.id(), QString("rectangle2")); + + newModelNode.variantProperty("x") = 10; + newModelNode.variantProperty("y") = 10; + newModelNode.variantProperty("width") = 100; + newModelNode.variantProperty("height") = 100; + + transaction.commit(); + + QCOMPARE(newModelNode.id(), QString("rectangle2")); + } + + QSKIP("See BAUHAUS-631", SkipAll); + + { + QPlainTextEdit textEdit; + textEdit.setPlainText(qmlString1); + NotIndentingTextEditModifier modifier(&textEdit); + + QScopedPointer<Model> model(Model::create("Qt/Text")); + + QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); + testRewriterView->setTextModifier(&modifier); + model->attachView(testRewriterView.data()); + + QVERIFY(testRewriterView->errors().isEmpty()); + + ModelNode rootModelNode = testRewriterView->rootModelNode(); + QVERIFY(rootModelNode.isValid()); + + RewriterTransaction transaction = testRewriterView->beginRewriterTransaction(); + + ModelNode newModelNode = testRewriterView->createModelNode("Qt/Rectangle", 4, 7); + + newModelNode.setParentProperty(rootModelNode.nodeAbstractProperty("data")); + + newModelNode.setId("rectangle2"); + QCOMPARE(newModelNode.id(), QString("rectangle2")); + + newModelNode.variantProperty("x") = 10; + newModelNode.variantProperty("y") = 10; + newModelNode.variantProperty("width") = 100; + newModelNode.variantProperty("height") = 100; + + transaction.commit(); + + QCOMPARE(newModelNode.id(), QString("rectangle2")); + } +} + void TestCore::loadSubItems() { QFile file(QString(QTCREATORDIR) + "/tests/auto/qml/qmldesigner/data/fx/topitem.qml"); diff --git a/tests/auto/qml/qmldesigner/coretests/testcore.h b/tests/auto/qml/qmldesigner/coretests/testcore.h index cb1b73660a5..525d555ea7d 100644 --- a/tests/auto/qml/qmldesigner/coretests/testcore.h +++ b/tests/auto/qml/qmldesigner/coretests/testcore.h @@ -120,6 +120,7 @@ private slots: void testRewriterExceptionHandling(); void testRewriterDynamicProperties(); void testRewriterGroupedProperties(); + void testRewriterPreserveOrder(); // -- GitLab