aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-03-13 11:25:38 +0100
committerEike Ziller <eike.ziller@qt.io>2018-03-13 11:25:38 +0100
commit0b10ecc718accd8c4d472ba8f3ed5ea6f1856e51 (patch)
tree67f63d2b4aa20195910728659cd3c0ba2cb580eb /tests/auto
parentf1985df55dfa81f184c9d29df6cfbb353bf77ffc (diff)
parent0bcc983cdbb74baebccfdb09f7d2ffb22ebf950d (diff)
Merge remote-tracking branch 'origin/4.6'
Conflicts: src/plugins/cmakeprojectmanager/cmakeproject.h src/plugins/debugger/debuggerplugin.cpp src/plugins/ios/iosrunfactories.cpp src/plugins/nim/project/nimproject.h src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp src/plugins/qmlprojectmanager/qmlproject.h src/plugins/qnx/qnxrunconfigurationfactory.cpp src/plugins/qtsupport/exampleslistmodel.cpp src/plugins/winrt/winrtrunfactories.cpp Change-Id: Ib029fdbaa65270426332f5edd6e90264be5fb539
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qml/qmldesigner/coretests/testrewriterview.h2
-rw-r--r--tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp119
-rw-r--r--tests/auto/qml/qmldesigner/coretests/tst_testcore.h4
3 files changed, 125 insertions, 0 deletions
diff --git a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
index 74b5fa384ac..46f7e1078f8 100644
--- a/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
+++ b/tests/auto/qml/qmldesigner/coretests/testrewriterview.h
@@ -57,6 +57,8 @@ public:
bool isModificationGroupActive() const;
void setModificationGroupActive(bool active);
void applyModificationGroupChanges();
+
+ using RewriterView::auxiliaryDataAsQML;
};
} // QmlDesigner
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
index 25eca2c3ce8..6f8e390a05a 100644
--- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
+++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp
@@ -59,6 +59,7 @@
#include <utils/fileutils.h>
#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljssimplereader.h>
#include <extensionsystem/pluginmanager.h>
#include <QPlainTextEdit>
@@ -8208,5 +8209,123 @@ void tst_TestCore::changeGradientId()
}
}
+static void checkNode(QmlJS::SimpleReaderNode::Ptr node, TestRewriterView *view);
+
+static void checkChildNodes(QmlJS::SimpleReaderNode::Ptr node, TestRewriterView *view)
+{
+ for (auto child : node->children())
+ checkNode(child, view);
+}
+
+static void checkNode(QmlJS::SimpleReaderNode::Ptr node, TestRewriterView *view)
+{
+ QVERIFY(node);
+ QVERIFY(node->propertyNames().contains("i"));
+ const int internalId = node->property("i").toInt();
+ const ModelNode modelNode = view->modelNodeForInternalId(internalId);
+ QVERIFY(modelNode.isValid());
+ auto properties = node->properties();
+
+ for (auto i = properties.begin(); i != properties.end(); ++i) {
+ if (i.key() != "i")
+ QCOMPARE(i.value(), modelNode.auxiliaryData(i.key().toUtf8()));
+ }
+
+ checkChildNodes(node, view);
+}
+
+void tst_TestCore::writeAnnotations()
+{
+ const QLatin1String qmlCode("\n"
+ "import QtQuick 2.1\n"
+ "\n"
+ "Rectangle {\n"
+ " Item {\n"
+ " }\n"
+ "\n"
+ " MouseArea {\n"
+ " x: 3\n"
+ " y: 3\n"
+ " }\n"
+ "}");
+
+ const QLatin1String metaCode("\n/*##^## Designer {\n D{i:0;x:10}D{i:1;test:true;x:10;test2:\"string\"}"
+ "D{i:2;test:true;x:10;test2:\"string\"}\n}\n ##^##*/\n");
+
+ QPlainTextEdit textEdit;
+ textEdit.setPlainText(qmlCode);
+ NotIndentingTextEditModifier textModifier(&textEdit);
+
+ QScopedPointer<Model> model(Model::create("QtQuick.Item", 2, 1));
+ QVERIFY(model.data());
+
+ QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView());
+ testRewriterView->setTextModifier(&textModifier);
+ model->attachView(testRewriterView.data());
+
+ QVERIFY(model.data());
+ ModelNode rootModelNode(testRewriterView->rootModelNode());
+ QVERIFY(rootModelNode.isValid());
+
+ rootModelNode.setAuxiliaryData("x", 10);
+ for (const auto child : rootModelNode.allSubModelNodes()) {
+ child.setAuxiliaryData("x", 10);
+ child.setAuxiliaryData("test", true);
+ child.setAuxiliaryData("test2", "string");
+ }
+
+ const QString metaSource = testRewriterView->auxiliaryDataAsQML();
+
+ QmlJS::SimpleReader reader;
+ checkChildNodes(reader.readFromSource(metaSource), testRewriterView.data());
+
+ testRewriterView->writeAuxiliaryData();
+ const QString textWithMeta = testRewriterView->textModifier()->text();
+ testRewriterView->writeAuxiliaryData();
+ QCOMPARE(textWithMeta.length(), testRewriterView->textModifier()->text().length());
+}
+
+void tst_TestCore::readAnnotations()
+{
+ const QLatin1String qmlCode("\n"
+ "import QtQuick 2.1\n"
+ "\n"
+ "Rectangle {\n"
+ " Item {\n"
+ " }\n"
+ "\n"
+ " MouseArea {\n"
+ " x: 3\n"
+ " y: 3\n"
+ " }\n"
+ "}");
+
+ const QLatin1String metaCode("\n/*##^## Designer {\n D{i:0;x:10}D{i:1;test:true;x:10;test2:\"string\"}"
+ "D{i:2;test:true;x:10;test2:\"string\"}\n}\n ##^##*/\n");
+
+ const QLatin1String metaCodeQmlCode("Designer {\n D{i:0;x:10}D{i:1;test2:\"string\";x:10;test:true}"
+ "D{i:2;test2:\"string\";x:10;test:true}\n}\n");
+
+ QPlainTextEdit textEdit;
+ textEdit.setPlainText(qmlCode + metaCode);
+ NotIndentingTextEditModifier textModifier(&textEdit);
+
+ QScopedPointer<Model> model(Model::create("QtQuick.Item", 2, 1));
+ QVERIFY(model.data());
+
+ QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView());
+ testRewriterView->setTextModifier(&textModifier);
+ model->attachView(testRewriterView.data());
+
+ QVERIFY(model.data());
+ ModelNode rootModelNode(testRewriterView->rootModelNode());
+ QVERIFY(rootModelNode.isValid());
+
+ testRewriterView->restoreAuxiliaryData();
+
+ const QString metaSource = testRewriterView->auxiliaryDataAsQML();
+ QCOMPARE(metaSource.length(), QString(metaCodeQmlCode).length());
+}
+
QTEST_MAIN(tst_TestCore);
diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.h b/tests/auto/qml/qmldesigner/coretests/tst_testcore.h
index a3ce437947c..def024c63f3 100644
--- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.h
+++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.h
@@ -229,4 +229,8 @@ private slots:
// Object bindings as properties:
void loadGradient();
void changeGradientId();
+
+ // QMLAnnotations
+ void writeAnnotations();
+ void readAnnotations();
};