From 9ca588c7711e43212e40931ff4a0072bbd1deb28 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Mon, 20 Jan 2020 10:43:43 +0100 Subject: Fix registering the QIviPendingReplies at startup Using a singleShot timer is not the right way as it doesn't make sure the call is really executed in the next event loop run. Instead use QMetaObject::invokeMethod(). Also reorder the qivipendingreply autotest to make sure the QML test is done first, which needs the types to be registered... Change-Id: Id4f8dd1577e653c99fd82e8ab8f93a848f9b1b79 Reviewed-by: Robert Griebl --- .../core/qivipendingreply/tst_qivipendingreply.cpp | 36 ++++++++++++---------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'tests') diff --git a/tests/auto/core/qivipendingreply/tst_qivipendingreply.cpp b/tests/auto/core/qivipendingreply/tst_qivipendingreply.cpp index 9124827..5f0bb73 100644 --- a/tests/auto/core/qivipendingreply/tst_qivipendingreply.cpp +++ b/tests/auto/core/qivipendingreply/tst_qivipendingreply.cpp @@ -141,8 +141,10 @@ class tst_QIviPendingReply : public QObject private Q_SLOTS: void initTestCase(); - void testSuccess(); + // This needs to be the first test, as it tests calling a function which returns QIviPendingReply + // from QML and for this the basic types have to be registered before automatically. void testSuccess_qml(); + void testSuccess(); void testSuccessFromQml(); void testConversion_qml(); void testFailed(); @@ -202,22 +204,6 @@ template void tst_QIviPendingReply::test_helper(const QIviPendingRe QCOMPARE(reply.value(), valueChangedSpy.at(0).at(0)); } -void tst_QIviPendingReply::testSuccess() -{ - TestObject testObject; - - test_helper(testObject.test_void(), false); - test(testObject.test_int(500), false, 500); - test(testObject.test_quint16(1234), false, 1234); - test(testObject.test_float(-1234.56), false, -1234.56); - test(testObject.test_QString("HELLO"), false, "HELLO"); - test(testObject.test_QVariant(QVariant("VARIANT")), false, QVariant("VARIANT")); - test(testObject.test_TestEnum(TestObject::Value_2), false, TestObject::Value_2); - test(testObject.test_TestFlags(TestObject::TestFlags(TestObject::TestFlag_2 | TestObject::TestFlag_1)), false, - TestObject::TestFlags(TestObject::TestFlag_2 | TestObject::TestFlag_1)); - test(testObject.test_TestGadget(TestGadget("FOO", 5)), false, TestGadget("FOO", 5)); -} - template void tst_QIviPendingReply::testQml(TestObject *testObject, const QByteArray qmlFunction, bool failed, T expectedResult) { QVariant result; @@ -333,6 +319,22 @@ void tst_QIviPendingReply::testSuccess_qml() testQml(&testObject, "test_TestGadget(testObject.createGadget('FOO', 5))", false, TestGadget("FOO", 5)); } +void tst_QIviPendingReply::testSuccess() +{ + TestObject testObject; + + test_helper(testObject.test_void(), false); + test(testObject.test_int(500), false, 500); + test(testObject.test_quint16(1234), false, 1234); + test(testObject.test_float(-1234.56), false, -1234.56); + test(testObject.test_QString("HELLO"), false, "HELLO"); + test(testObject.test_QVariant(QVariant("VARIANT")), false, QVariant("VARIANT")); + test(testObject.test_TestEnum(TestObject::Value_2), false, TestObject::Value_2); + test(testObject.test_TestFlags(TestObject::TestFlags(TestObject::TestFlag_2 | TestObject::TestFlag_1)), false, + TestObject::TestFlags(TestObject::TestFlag_2 | TestObject::TestFlag_1)); + test(testObject.test_TestGadget(TestGadget("FOO", 5)), false, TestGadget("FOO", 5)); +} + void tst_QIviPendingReply::testSuccessFromQml() { // Instead of using the PendingReply in QML and react on the result using then() -- cgit v1.2.1