From 03342a435a88656d64d1445991a4421d244fcb45 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Wed, 23 May 2012 18:05:10 +1000 Subject: Put basic language types into QtQml import This import is automatically registered by the engine. It provides basic language types (Component and QtObject). Note that the QtQuick import still has these types registered into it, so this commit doesn't break existing code. Change-Id: I8ff190f057fc92969020cf8e896da1649ca3069b Reviewed-by: Alan Alpert --- tests/auto/qml/qqmlengine/data/qtqmlModule.1.qml | 4 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.2.qml | 4 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.3.qml | 4 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.4.qml | 4 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.5.qml | 5 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.6.qml | 5 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.7.qml | 5 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.8.qml | 5 ++ tests/auto/qml/qqmlengine/data/qtqmlModule.9.qml | 5 ++ tests/auto/qml/qqmlengine/tst_qqmlengine.cpp | 75 ++++++++++++++++++++++++ 10 files changed, 116 insertions(+) create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.1.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.2.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.3.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.4.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.5.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.6.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.7.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.8.qml create mode 100644 tests/auto/qml/qqmlengine/data/qtqmlModule.9.qml (limited to 'tests/auto/qml/qqmlengine') diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.1.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.1.qml new file mode 100644 index 0000000000..e879577e10 --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.1.qml @@ -0,0 +1,4 @@ +import QtQml 2.0 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.2.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.2.qml new file mode 100644 index 0000000000..6cbe96b1ee --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.2.qml @@ -0,0 +1,4 @@ +import QtQml 3.0 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.3.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.3.qml new file mode 100644 index 0000000000..1160c2827c --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.3.qml @@ -0,0 +1,4 @@ +import QtQml 1.0 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.4.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.4.qml new file mode 100644 index 0000000000..9b9b7922da --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.4.qml @@ -0,0 +1,4 @@ +import QtQml 2.5 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.5.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.5.qml new file mode 100644 index 0000000000..7a4fe5ed24 --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.5.qml @@ -0,0 +1,5 @@ +import QtQml 2.0 + +QtObject { + property Component c +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.6.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.6.qml new file mode 100644 index 0000000000..e8cc22fd5b --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.6.qml @@ -0,0 +1,5 @@ +import QtQml 2.0 +import QtQuick 2.0 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.7.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.7.qml new file mode 100644 index 0000000000..619489b22e --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.7.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 +import QtQml 2.0 + +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.8.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.8.qml new file mode 100644 index 0000000000..59bf31662c --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.8.qml @@ -0,0 +1,5 @@ +// deliberately no imports + +// should fail +QtObject { +} diff --git a/tests/auto/qml/qqmlengine/data/qtqmlModule.9.qml b/tests/auto/qml/qqmlengine/data/qtqmlModule.9.qml new file mode 100644 index 0000000000..cbf90b9dd1 --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/qtqmlModule.9.qml @@ -0,0 +1,5 @@ +import QtQml 2.0 + +// Should fail. +Item { +} diff --git a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp index 85c32d8118..c9d3e27afe 100644 --- a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp +++ b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp @@ -75,6 +75,8 @@ private slots: void outputWarningsToStandardError(); void objectOwnership(); void multipleEngines(); + void qtqmlModule_data(); + void qtqmlModule(); public slots: QObject *createAQObjectForOwnershipTest () @@ -565,6 +567,79 @@ void tst_qqmlengine::multipleEngines() } } +void tst_qqmlengine::qtqmlModule_data() +{ + QTest::addColumn("testFile"); + QTest::addColumn("expectedError"); + QTest::addColumn("expectedWarnings"); + + QTest::newRow("import QtQml of correct version (2.0)") + << testFileUrl("qtqmlModule.1.qml") + << QString() + << QStringList(); + + QTest::newRow("import QtQml of incorrect version (3.0)") + << testFileUrl("qtqmlModule.2.qml") + << QString(testFileUrl("qtqmlModule.2.qml").toString() + QLatin1String(":1 module \"QtQml\" version 3.0 is not installed\n")) + << QStringList(); + + QTest::newRow("import QtQml of incorrect version (1.0)") + << testFileUrl("qtqmlModule.3.qml") + << QString(testFileUrl("qtqmlModule.3.qml").toString() + QLatin1String(":1 module \"QtQml\" version 1.0 is not installed\n")) + << QStringList(); + + QTest::newRow("import QtQml of incorrect version (2.5)") + << testFileUrl("qtqmlModule.4.qml") + << QString(testFileUrl("qtqmlModule.4.qml").toString() + QLatin1String(":1 module \"QtQml\" version 2.5 is not installed\n")) + << QStringList(); + + QTest::newRow("QtQml 2.0 module provides Component and QtObject") + << testFileUrl("qtqmlModule.5.qml") + << QString() + << QStringList(); + + QTest::newRow("can import QtQml then QtQuick") + << testFileUrl("qtqmlModule.6.qml") + << QString() + << QStringList(); + + QTest::newRow("can import QtQuick then QtQml") + << testFileUrl("qtqmlModule.7.qml") + << QString() + << QStringList(); + + QTest::newRow("no import results in no QtObject availability") + << testFileUrl("qtqmlModule.8.qml") + << QString(testFileUrl("qtqmlModule.8.qml").toString() + QLatin1String(":4 QtObject is not a type\n")) + << QStringList(); + + QTest::newRow("importing QtQml only results in no Item availability") + << testFileUrl("qtqmlModule.9.qml") + << QString(testFileUrl("qtqmlModule.9.qml").toString() + QLatin1String(":4 Item is not a type\n")) + << QStringList(); +} + +// Test that the engine registers the QtQml module +void tst_qqmlengine::qtqmlModule() +{ + QFETCH(QUrl, testFile); + QFETCH(QString, expectedError); + QFETCH(QStringList, expectedWarnings); + + foreach (const QString &w, expectedWarnings) + QTest::ignoreMessage(QtWarningMsg, qPrintable(w)); + + QQmlEngine e; + QQmlComponent c(&e, testFile); + if (expectedError.isEmpty()) { + QObject *o = c.create(); + QVERIFY(o); + delete o; + } else { + QCOMPARE(c.errorString(), expectedError); + } +} + QTEST_MAIN(tst_qqmlengine) #include "tst_qqmlengine.moc" -- cgit v1.2.3