aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp')
-rw-r--r--tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
index f6869ab300..d14e0b76a4 100644
--- a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
+++ b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp
@@ -1563,11 +1563,53 @@ struct SingleRequiredProperty : QObject
int i = 42;
};
+
+struct SingleRequiredPropertyDynamic : QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int i MEMBER i REQUIRED)
+
+ int i = 42;
+
+ class QObjectDynamicMetaObject : public QDynamicMetaObjectData
+ {
+ public:
+ #if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
+ const QMetaObject *toDynamicMetaObject(QObject *) const final
+ {
+ return &SingleRequiredPropertyDynamic::staticMetaObject;
+ }
+ #else
+ QMetaObject *toDynamicMetaObject(QObject *) final
+ {
+ return const_cast<QMetaObject *>(&SingleRequiredPropertyDynamic::staticMetaObject);
+ }
+ #endif
+ int metaCall(QObject *o, QMetaObject::Call c, int id, void **argv) final
+ {
+ return o->qt_metacall(c, id, argv);
+ }
+ };
+
+public:
+ SingleRequiredPropertyDynamic() {
+ auto priv = QObjectPrivate::get(this);
+ priv->metaObject = new QObjectDynamicMetaObject;
+ }
+
+ ~SingleRequiredPropertyDynamic() {
+ auto priv = QObjectPrivate::get(this);
+ delete priv->metaObject;
+ priv->metaObject = nullptr ;
+ }
+};
+
void tst_qqmlcomponent::loadFromModuleRequired()
{
QQmlEngine engine;
qmlRegisterType<SingleRequiredProperty>("qqmlcomponenttest", 1, 0, "SingleRequiredProperty");
+ qmlRegisterType<SingleRequiredPropertyDynamic>("qqmlcomponenttest", 1, 0, "SingleRequiredPropertyDynamic");
const QString error = QStringLiteral("Required property i was not initialized");
{
QQmlComponent component(&engine, "qqmlcomponenttest", "SingleRequiredProperty");
@@ -1591,6 +1633,13 @@ void tst_qqmlcomponent::loadFromModuleRequired()
QVERIFY(component.isError());
QCOMPARE(component.errorString(), qPrintable(":-1 " + error + "\n"));
}
+ {
+ QQmlComponent component(&engine, "qqmlcomponenttest", "SingleRequiredPropertyDynamic");
+ QVERIFY2(!component.isError(), qPrintable(component.errorString()));
+ QScopedPointer<QObject> root(component.create());
+ QEXPECT_FAIL("", "Can't check required properties when there's a dynamic metaobject", Continue);
+ QVERIFY(!root);
+ }
}
void tst_qqmlcomponent::loadUrlRequired()