aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickvisualdatamodel
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-08-01 10:23:38 +1000
committerQt by Nokia <qt-info@nokia.com>2012-08-02 02:43:43 +0200
commit8b04007bf086dd573945e6076023a2f1a5aefef3 (patch)
tree54dcbc7c8f7dcdc43ff4a501774082a73bfc36ed /tests/auto/quick/qquickvisualdatamodel
parentf915ea135fe4bf74432ffa3e6041ea60d4268c67 (diff)
Add tests for VisualDataModel watched roles.
Change-Id: Idc84d0f833fe2ec4ed29bbda62def17ec20a3a8b Reviewed-by: Damian Jansen <damian.jansen@nokia.com>
Diffstat (limited to 'tests/auto/quick/qquickvisualdatamodel')
-rw-r--r--tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
index 95a0ddb084..2e5d55a9e4 100644
--- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
+++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
@@ -408,6 +408,7 @@ private slots:
void qaimRowsMoved();
void qaimRowsMoved_data();
void subtreeRowsMoved();
+ void watchedRoles();
void remove_data();
void remove();
void move_data();
@@ -1195,6 +1196,95 @@ void tst_qquickvisualdatamodel::subtreeRowsMoved()
QCOMPARE(changeSet.inserts().at(0).count, 2);
}
+void tst_qquickvisualdatamodel::watchedRoles()
+{
+ QaimModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QQmlEngine engine;
+ engine.rootContext()->setContextProperty("myModel", &model);
+
+ QQmlComponent component(&engine, testFileUrl("visualdatamodel.qml"));
+
+ QScopedPointer<QObject> object(component.create());
+ QQuickVisualDataModel *vdm = qobject_cast<QQuickVisualDataModel*>(object.data());
+ QVERIFY(vdm);
+
+ // VisualDataModel doesn't initialize model data until the first item is requested.
+ QQuickItem *item = vdm->item(0);
+ QVERIFY(item);
+ vdm->release(item);
+
+ QSignalSpy spy(vdm, SIGNAL(modelUpdated(QQuickChangeSet,bool)));
+ QQuickChangeSet changeSet;
+
+ QCOMPARE(vdm->count(), 30);
+
+ emit model.dataChanged(model.index(0), model.index(4));
+ QCOMPARE(spy.count(), 0);
+
+ emit model.dataChanged(model.index(0), model.index(4), QVector<int>() << QaimModel::Name);
+ QCOMPARE(spy.count(), 0);
+
+ emit model.dataChanged(model.index(0), model.index(4), QVector<int>() << QaimModel::Number);
+ QCOMPARE(spy.count(), 0);
+
+ vdm->setWatchedRoles(QList<QByteArray>() << "name" << "dummy");
+
+ emit model.dataChanged(model.index(0), model.index(4));
+ QCOMPARE(spy.count(), 1);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 0);
+ QCOMPARE(changeSet.changes().at(0).count, 5);
+
+ emit model.dataChanged(model.index(1), model.index(6), QVector<int>() << QaimModel::Name);
+ QCOMPARE(spy.count(), 2);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 1);
+ QCOMPARE(changeSet.changes().at(0).count, 6);
+
+ emit model.dataChanged(model.index(8), model.index(8), QVector<int>() << QaimModel::Number);
+ QCOMPARE(spy.count(), 2);
+
+ vdm->setWatchedRoles(QList<QByteArray>() << "number" << "dummy");
+
+ emit model.dataChanged(model.index(0), model.index(4));
+ QCOMPARE(spy.count(), 3);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 0);
+ QCOMPARE(changeSet.changes().at(0).count, 5);
+
+ emit model.dataChanged(model.index(1), model.index(6), QVector<int>() << QaimModel::Name);
+ QCOMPARE(spy.count(), 3);
+
+ emit model.dataChanged(model.index(8), model.index(8), QVector<int>() << QaimModel::Number);
+ QCOMPARE(spy.count(), 4);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 8);
+ QCOMPARE(changeSet.changes().at(0).count, 1);
+
+ vdm->setWatchedRoles(QList<QByteArray>() << "number" << "name");
+
+ emit model.dataChanged(model.index(0), model.index(4));
+ QCOMPARE(spy.count(), 5);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 0);
+ QCOMPARE(changeSet.changes().at(0).count, 5);
+
+ emit model.dataChanged(model.index(1), model.index(6), QVector<int>() << QaimModel::Name);
+ QCOMPARE(spy.count(), 6);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 1);
+ QCOMPARE(changeSet.changes().at(0).count, 6);
+
+ emit model.dataChanged(model.index(8), model.index(8), QVector<int>() << QaimModel::Number);
+ QCOMPARE(spy.count(), 7);
+ changeSet = spy.last().at(0).value<QQuickChangeSet>();
+ QCOMPARE(changeSet.changes().at(0).index, 8);
+ QCOMPARE(changeSet.changes().at(0).count, 1);
+}
+
void tst_qquickvisualdatamodel::remove_data()
{
QTest::addColumn<QUrl>("source");