From 46c5c25723545cdf6ecd01e8785fa3fd7c1f9670 Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Wed, 1 Aug 2012 12:19:06 +1000 Subject: [PATCH] Test the VisualDataModel hasModelChildren property Change-Id: I9ea71ca5c7d6a0f161cc92583c187d591d26826a Reviewed-by: Damian Jansen --- .../qquickvisualdatamodel/data/visualdatamodel.qml | 2 +- .../tst_qquickvisualdatamodel.cpp | 53 ++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/tests/auto/quick/qquickvisualdatamodel/data/visualdatamodel.qml b/tests/auto/quick/qquickvisualdatamodel/data/visualdatamodel.qml index 0d4d9e2..e3ae1d1 100644 --- a/tests/auto/quick/qquickvisualdatamodel/data/visualdatamodel.qml +++ b/tests/auto/quick/qquickvisualdatamodel/data/visualdatamodel.qml @@ -8,5 +8,5 @@ VisualDataModel { rootIndex = parentModelIndex(); } model: myModel - delegate: Item {} + delegate: Item { property bool modelChildren: hasModelChildren } } diff --git a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp index 2e5d55a..e23ae6f 100644 --- a/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp +++ b/tests/auto/quick/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp @@ -409,6 +409,7 @@ private slots: void qaimRowsMoved_data(); void subtreeRowsMoved(); void watchedRoles(); + void hasModelChildren(); void remove_data(); void remove(); void move_data(); @@ -1215,6 +1216,7 @@ void tst_qquickvisualdatamodel::watchedRoles() QQuickItem *item = vdm->item(0); QVERIFY(item); vdm->release(item); + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); // Ensure released items are deleted before test exits. QSignalSpy spy(vdm, SIGNAL(modelUpdated(QQuickChangeSet,bool))); QQuickChangeSet changeSet; @@ -1285,6 +1287,57 @@ void tst_qquickvisualdatamodel::watchedRoles() QCOMPARE(changeSet.changes().at(0).count, 1); } +void tst_qquickvisualdatamodel::hasModelChildren() +{ + SingleRoleModel model(QStringList() << "one" << "two" << "three" << "four"); + model.insert(model.index(0, 0), 0, QStringList() << "a" << "b" << "c" << "d" << "e"); + model.insert(model.index(2, 0), 0, QStringList() << "A" << "B" << "C"); + + QQmlEngine engine; + engine.rootContext()->setContextProperty("myModel", &model); + + QQmlComponent component(&engine, testFileUrl("visualdatamodel.qml")); + + QScopedPointer object(component.create()); + QQuickVisualDataModel *vdm = qobject_cast(object.data()); + QVERIFY(vdm); + + QCOMPARE(vdm->count(), 4); + + QQuickItem *item = 0; + + item = vdm->item(0); + QVERIFY(item); + QCOMPARE(item->property("modelChildren").toBool(), true); + vdm->release(item); + + item = vdm->item(1); + QVERIFY(item); + QCOMPARE(item->property("modelChildren").toBool(), false); + vdm->release(item); + + item = vdm->item(2); + QVERIFY(item); + QCOMPARE(item->property("modelChildren").toBool(), true); + vdm->release(item); + + item = vdm->item(3); + QVERIFY(item); + QCOMPARE(item->property("modelChildren").toBool(), false); + vdm->release(item); + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); // Ensure released items are deleted before test exits. + + QCOMPARE(vdm->stringValue(0, QLatin1String("hasModelChildren")), QVariant(true).toString()); + QCOMPARE(vdm->stringValue(1, QLatin1String("hasModelChildren")), QVariant(false).toString()); + QCOMPARE(vdm->stringValue(2, QLatin1String("hasModelChildren")), QVariant(true).toString()); + QCOMPARE(vdm->stringValue(3, QLatin1String("hasModelChildren")), QVariant(false).toString()); + + QCOMPARE(evaluate(vdm, "items.get(0).model.hasModelChildren"), true); + QCOMPARE(evaluate(vdm, "items.get(1).model.hasModelChildren"), false); + QCOMPARE(evaluate(vdm, "items.get(2).model.hasModelChildren"), true); + QCOMPARE(evaluate(vdm, "items.get(3).model.hasModelChildren"), false); +} + void tst_qquickvisualdatamodel::remove_data() { QTest::addColumn("source"); -- 2.7.4