diff options
Diffstat (limited to 'tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp')
-rw-r--r-- | tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 5bb2b69565..403e8c5730 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -125,6 +125,8 @@ private slots: void dynamicObjectProperties(); void dynamicSignalsAndSlots(); void simpleBindings(); + void noDoubleEvaluationForFlushedBindings_data(); + void noDoubleEvaluationForFlushedBindings(); void autoComponentCreation(); void autoComponentCreationInGroupProperty(); void propertyValueSource(); @@ -1478,6 +1480,37 @@ void tst_qqmllanguage::simpleBindings() QCOMPARE(object->property("objectProperty"), QVariant::fromValue(object)); } +class EvaluationCounter : public QObject +{ + Q_OBJECT +public: + int counter = 0; + Q_INVOKABLE void increaseEvaluationCounter() { ++counter; } +}; + +void tst_qqmllanguage::noDoubleEvaluationForFlushedBindings_data() +{ + QTest::addColumn<QString>("fileName"); + QTest::newRow("order1") << QString("noDoubleEvaluationForFlushedBindings.qml"); + QTest::newRow("order2") << QString("noDoubleEvaluationForFlushedBindings.2.qml"); +} + +void tst_qqmllanguage::noDoubleEvaluationForFlushedBindings() +{ + QFETCH(QString, fileName); + QQmlEngine engine; + + EvaluationCounter stats; + engine.rootContext()->setContextProperty("stats", &stats); + + QQmlComponent component(&engine, testFileUrl(fileName)); + VERIFY_ERRORS(0); + QScopedPointer<QObject> obj(component.create()); + QVERIFY(!obj.isNull()); + + QCOMPARE(stats.counter, 1); +} + void tst_qqmllanguage::autoComponentCreation() { { |