diff options
Diffstat (limited to 'tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp')
-rw-r--r-- | tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp b/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp index 303f4bd7b7..fb2b6b46f9 100644 --- a/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp +++ b/tests/auto/qtquick2/qquickgridview/tst_qquickgridview.cpp @@ -105,6 +105,7 @@ private slots: void header(); void header_data(); void resizeViewAndRepaint(); + void changeColumnCount(); void indexAt_itemAt_data(); void indexAt_itemAt(); void onAdd(); @@ -3185,6 +3186,7 @@ void tst_QQuickGridView::resizeViewAndRepaint() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("initialWidth", 240); ctxt->setContextProperty("initialHeight", 100); canvas->setSource(testFileUrl("resizeview.qml")); @@ -3247,6 +3249,64 @@ void tst_QQuickGridView::resizeViewAndRepaint() delete canvas; } +void tst_QQuickGridView::changeColumnCount() +{ + TestModel model; + for (int i = 0; i < 40; i++) + model.addItem("Item" + QString::number(i), ""); + + QQuickView *canvas = createView(); + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + ctxt->setContextProperty("initialWidth", 100); + ctxt->setContextProperty("initialHeight", 320); + canvas->setSource(testFileUrl("resizeview.qml")); + canvas->show(); + qApp->processEvents(); + + QQuickGridView *gridview = findItem<QQuickGridView>(canvas->rootObject(), "grid"); + QTRY_VERIFY(gridview != 0); + QQuickItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); + QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false); + + // a single column of 6 items are visible + int itemCount = findItems<QQuickItem>(contentItem, "wrapper").count(); + QCOMPARE(itemCount, 6); + for (int i = 0; i < model.count() && i < itemCount; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i); + QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i))); + QCOMPARE(item->x(), 0.0); + QCOMPARE(item->y(), qreal(i*60)); + } + + // now 6x3 grid is visible, plus 1 extra below for refill + gridview->setWidth(240); + QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false); + itemCount = findItems<QQuickItem>(contentItem, "wrapper").count(); + QCOMPARE(itemCount, 6*3 + 1); + for (int i = 0; i < model.count() && i < itemCount; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i); + QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i))); + QCOMPARE(item->x(), qreal((i%3)*80)); + QCOMPARE(item->y(), qreal((i/3)*60)); + } + + // back to single column + gridview->setWidth(100); + QTRY_COMPARE(QQuickItemPrivate::get(gridview)->polishScheduled, false); + itemCount = findItems<QQuickItem>(contentItem, "wrapper").count(); + QCOMPARE(itemCount, 6); + for (int i = 0; i < model.count() && i < itemCount; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i); + QVERIFY2(item, QTest::toString(QString("Item %1 not found").arg(i))); + QCOMPARE(item->x(), 0.0); + QCOMPARE(item->y(), qreal(i*60)); + } + + delete canvas; +} + void tst_QQuickGridView::indexAt_itemAt_data() { QTest::addColumn<qreal>("x"); |