aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmltyperegistrar
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qmltyperegistrar')
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp10
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h46
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;