diff -r ef0373b55136 -r 758a864f9613 tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp --- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -84,7 +84,7 @@ void modelChanges(); void pathUpdateOnStartChanged(); void package(); - + void emptyModel(); private: QDeclarativeView *createView(); @@ -367,9 +367,11 @@ QCOMPARE(item->y(), 10.0); model.insertItem(4, "orange", "10"); + QTest::qWait(100); - int itemCount = findItems(pathview, "wrapper").count(); - QCOMPARE(itemCount, 10); + QTRY_COMPARE(findItems(pathview, "wrapper").count(), 10); + + QVERIFY(pathview->currentIndex() == 0); QDeclarativeText *text = findItem(pathview, "myText", 4); QVERIFY(text); @@ -384,26 +386,27 @@ QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); QVERIFY(testObject->error() == false); - itemCount = findItems(pathview, "wrapper").count(); - QCOMPARE(itemCount, 5); + QTRY_COMPARE(findItems(pathview, "wrapper").count(), 5); QDeclarativeRectangle *testItem = findItem(pathview, "wrapper", 4); QVERIFY(testItem != 0); testItem = findItem(pathview, "wrapper", 5); QVERIFY(testItem == 0); - model.insertItem(2, "pink", "2"); + pathview->setCurrentIndex(1); - itemCount = findItems(pathview, "wrapper").count(); - QCOMPARE(itemCount, 5); + model.insertItem(2, "pink", "2"); + QTest::qWait(100); + + QTRY_COMPARE(findItems(pathview, "wrapper").count(), 5); + QVERIFY(pathview->currentIndex() == 1); text = findItem(pathview, "myText", 2); QVERIFY(text); QCOMPARE(text->text(), model.name(2)); model.removeItem(3); - itemCount = findItems(pathview, "wrapper").count(); - QCOMPARE(itemCount, 5); + QTRY_COMPARE(findItems(pathview, "wrapper").count(), 5); text = findItem(pathview, "myText", 3); QVERIFY(text); QCOMPARE(text->text(), model.name(3)); @@ -755,6 +758,28 @@ delete canvas; } +//QTBUG-13017 +void tst_QDeclarativePathView::emptyModel() +{ + QDeclarativeView *canvas = createView(); + + QStringListModel model; + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("emptyModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/emptymodel.qml")); + qApp->processEvents(); + + QDeclarativePathView *pathview = qobject_cast(canvas->rootObject()); + QVERIFY(pathview != 0); + + QCOMPARE(pathview->offset(), qreal(0.0)); + + delete canvas; +} + + QDeclarativeView *tst_QDeclarativePathView::createView() { QDeclarativeView *canvas = new QDeclarativeView(0);