diff options
Diffstat (limited to 'tests/auto/qml/qmltyperegistrar')
-rw-r--r-- | tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp | 10 | ||||
-rw-r--r-- | tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h | 46 |
2 files changed, 56 insertions, 0 deletions
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp index f7a29948a0..b752c4d6c1 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp @@ -161,4 +161,14 @@ void tst_qmltyperegistrar::metaTypesRegistered() verifyMetaType("Ccc*", "Ccc"); } +void tst_qmltyperegistrar::multiExtensions() +{ + QVERIFY(qmltypesData.contains("name: \"MultiExtension\"")); + QVERIFY(qmltypesData.contains("prototype: \"MultiExtensionParent\"")); + QVERIFY(qmltypesData.contains("name: \"MultiExtensionParent\"")); + QVERIFY(qmltypesData.contains("extension: \"ExtensionA\"")); + QVERIFY(qmltypesData.contains("extension: \"ExtensionB\"")); + QVERIFY(qmltypesData.contains("interfaces: [\"Interface3\"]")); +} + QTEST_MAIN(tst_qmltyperegistrar) diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h index 6267868375..40569879ec 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h @@ -37,10 +37,12 @@ class Interface {}; class Interface2 {}; +class Interface3 {}; QT_BEGIN_NAMESPACE Q_DECLARE_INTERFACE(Interface, "io.qt.bugreports.Interface"); Q_DECLARE_INTERFACE(Interface2, "io.qt.bugreports.Interface2"); +Q_DECLARE_INTERFACE(Interface3, "io.qt.bugreports.Interface3"); QT_END_NAMESPACE @@ -150,6 +152,49 @@ public: DerivedFromForeign(QObject *parent) : QTimeLine(1000, parent) {} }; +class ExtensionA : public QObject +{ + Q_OBJECT + QML_ANONYMOUS + Q_PROPERTY(int a READ a CONSTANT) +public: + ExtensionA(QObject *parent = nullptr) : QObject(parent) {} + int a() const { return 'a'; } +}; + +class ExtensionB : public QObject +{ + Q_OBJECT + QML_ANONYMOUS + Q_PROPERTY(int b READ b CONSTANT) +public: + ExtensionB(QObject *parent = nullptr) : QObject(parent) {} + int b() const { return 'b'; } +}; + +class MultiExtensionParent : public QObject, public Interface3 +{ + Q_OBJECT + QML_ANONYMOUS + QML_EXTENDED(ExtensionA) + QML_IMPLEMENTS_INTERFACES(Interface3) + Q_PROPERTY(int p READ p CONSTANT) +public: + MultiExtensionParent(QObject *parent = nullptr) : QObject(parent) {} + int p() const { return 'p'; } +}; + +class MultiExtension : public MultiExtensionParent +{ + Q_OBJECT + QML_ELEMENT + QML_EXTENDED(ExtensionB) + Q_PROPERTY(int e READ e CONSTANT) +public: + MultiExtension(QObject *parent = nullptr) : MultiExtensionParent(parent) {} + int e() const { return 'e'; } +}; + class tst_qmltyperegistrar : public QObject { Q_OBJECT @@ -170,6 +215,7 @@ private slots: void namespacedElement(); void derivedFromForeign(); void metaTypesRegistered(); + void multiExtensions(); private: QByteArray qmltypesData; |