tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- 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<QDeclarativeItem>(pathview, "wrapper").count();
-    QCOMPARE(itemCount, 10);
+    QTRY_COMPARE(findItems<QDeclarativeItem>(pathview, "wrapper").count(), 10);
+
+    QVERIFY(pathview->currentIndex() == 0);
 
     QDeclarativeText *text = findItem<QDeclarativeText>(pathview, "myText", 4);
     QVERIFY(text);
@@ -384,26 +386,27 @@
     QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties");
     QVERIFY(testObject->error() == false);
 
-    itemCount = findItems<QDeclarativeItem>(pathview, "wrapper").count();
-    QCOMPARE(itemCount, 5);
+    QTRY_COMPARE(findItems<QDeclarativeItem>(pathview, "wrapper").count(), 5);
 
     QDeclarativeRectangle *testItem = findItem<QDeclarativeRectangle>(pathview, "wrapper", 4);
     QVERIFY(testItem != 0);
     testItem = findItem<QDeclarativeRectangle>(pathview, "wrapper", 5);
     QVERIFY(testItem == 0);
 
-    model.insertItem(2, "pink", "2");
+    pathview->setCurrentIndex(1);
 
-    itemCount = findItems<QDeclarativeItem>(pathview, "wrapper").count();
-    QCOMPARE(itemCount, 5);
+    model.insertItem(2, "pink", "2");
+    QTest::qWait(100);
+
+    QTRY_COMPARE(findItems<QDeclarativeItem>(pathview, "wrapper").count(), 5);
+    QVERIFY(pathview->currentIndex() == 1);
 
     text = findItem<QDeclarativeText>(pathview, "myText", 2);
     QVERIFY(text);
     QCOMPARE(text->text(), model.name(2));
 
     model.removeItem(3);
-    itemCount = findItems<QDeclarativeItem>(pathview, "wrapper").count();
-    QCOMPARE(itemCount, 5);
+    QTRY_COMPARE(findItems<QDeclarativeItem>(pathview, "wrapper").count(), 5);
     text = findItem<QDeclarativeText>(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<QDeclarativePathView*>(canvas->rootObject());
+    QVERIFY(pathview != 0);
+
+    QCOMPARE(pathview->offset(), qreal(0.0));
+
+    delete canvas;
+}
+
+
 QDeclarativeView *tst_QDeclarativePathView::createView()
 {
     QDeclarativeView *canvas = new QDeclarativeView(0);