diff options
Diffstat (limited to 'tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp')
-rw-r--r-- | tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp index 1396dd4783..258eaee981 100644 --- a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp +++ b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp @@ -72,6 +72,7 @@ private slots: void dynamicModelCrash(); void visualItemModelCrash(); void invalidContextCrash(); + void jsArrayChange(); }; class TestObject : public QObject @@ -779,6 +780,33 @@ void tst_QQuickRepeater::invalidContextCrash() root.reset(0); } +void tst_QQuickRepeater::jsArrayChange() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.setData("import QtQuick 2.4; Repeater {}", QUrl()); + + QScopedPointer<QQuickRepeater> repeater(qobject_cast<QQuickRepeater *>(component.create())); + QVERIFY(!repeater.isNull()); + + QSignalSpy spy(repeater.data(), SIGNAL(modelChanged())); + QVERIFY(spy.isValid()); + + QJSValue array1 = engine.newArray(3); + QJSValue array2 = engine.newArray(3); + for (int i = 0; i < 3; ++i) { + array1.setProperty(i, i); + array2.setProperty(i, i); + } + + repeater->setModel(QVariant::fromValue(array1)); + QCOMPARE(spy.count(), 1); + + // no change + repeater->setModel(QVariant::fromValue(array2)); + QCOMPARE(spy.count(), 1); +} + QTEST_MAIN(tst_QQuickRepeater) #include "tst_qquickrepeater.moc" |