From 89d6599de9092ac1f5e24981e642d87d57f593b5 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 14 Mar 2012 09:50:31 +1000 Subject: Reuse QQuickView in GridView table driven tests Makes the tests run faster since we're not waiting for a window to appear all the time. Change-Id: Id2442cf32055084088c19865499055c7282bcae0 Reviewed-by: Bea Lam --- .../quick/qquickgridview/tst_qquickgridview.cpp | 128 ++++++++++++++------- 1 file changed, 88 insertions(+), 40 deletions(-) (limited to 'tests') diff --git a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp index 7d004915a6..928151d59e 100644 --- a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp +++ b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp @@ -64,6 +64,8 @@ Q_DECLARE_METATYPE(QQuickGridView::Flow) using namespace QQuickViewTestUtil; using namespace QQuickVisualTestUtil; +#define SHARE_VIEWS + class tst_QQuickGridView : public QQmlDataTest { Q_OBJECT @@ -71,6 +73,7 @@ public: tst_QQuickGridView(); private slots: + void init(); void items(); void changed(); void inserted(); @@ -149,10 +152,53 @@ private: void matchIndexLists(const QVariantList &indexLists, const QList &expectedIndexes); void matchItemsAndIndexes(const QVariantMap &items, const QaimModel &model, const QList &expectedIndexes); void matchItemLists(const QVariantList &itemLists, const QList &expectedItems); + +#ifdef SHARE_VIEWS + QQuickView *getView() { + if (m_view) { + if (QString(QTest::currentTestFunction()) != testForView) { + delete m_view; + m_view = 0; + } else { + m_view->setSource(QUrl()); + return m_view; + } + } + + testForView = QTest::currentTestFunction(); + m_view = createView(); + return m_view; + } + void releaseView(QQuickView *view) { + Q_ASSERT(view == m_view); + m_view->setSource(QUrl()); + } +#else + QQuickView *getView() { + return createView(); + } + void releaseView(QQuickView *view) { + delete view; + } +#endif + + QQuickView *m_view; + QString testForView; }; -tst_QQuickGridView::tst_QQuickGridView() +tst_QQuickGridView::tst_QQuickGridView() : m_view(0) +{ +} + +void tst_QQuickGridView::init() { +#ifdef SHARE_VIEWS + if (m_view && QString(QTest::currentTestFunction()) != testForView) { + testForView = QString(); + delete m_view; + m_view = 0; + } +#endif } void tst_QQuickGridView::items() @@ -334,7 +380,7 @@ void tst_QQuickGridView::inserted_more() for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testRightToLeft", QVariant(false)); @@ -393,7 +439,7 @@ void tst_QQuickGridView::inserted_more() QCOMPARE(number->text(), model.number(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::inserted_more_data() @@ -502,7 +548,7 @@ void tst_QQuickGridView::insertBeforeVisible() QFETCH(int, cacheBuffer); QQuickText *name; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QaimModel model; for (int i = 0; i < 30; i++) @@ -560,7 +606,7 @@ void tst_QQuickGridView::insertBeforeVisible() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::insertBeforeVisible_data() @@ -741,7 +787,7 @@ void tst_QQuickGridView::removed_more() QQuickText *name; QQuickText *number; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QaimModel model; for (int i = 0; i < 30; i++) @@ -798,7 +844,7 @@ void tst_QQuickGridView::removed_more() QTRY_COMPARE(number->text(), model.number(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::removed_more_data() @@ -934,7 +980,7 @@ void tst_QQuickGridView::addOrRemoveBeforeVisible() QFETCH(bool, doAdd); QFETCH(qreal, newTopContentY); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->show(); QaimModel model; @@ -1000,7 +1046,7 @@ void tst_QQuickGridView::addOrRemoveBeforeVisible() QTRY_VERIFY(item->y() == (i/3)*60 + newTopContentY); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::addOrRemoveBeforeVisible_data() @@ -1061,7 +1107,7 @@ void tst_QQuickGridView::moved() QQuickText *name; QQuickText *number; - QScopedPointer canvas(createView()); + QQuickView *canvas = getView(); QaimModel model; for (int i = 0; i < 30; i++) @@ -1116,6 +1162,8 @@ void tst_QQuickGridView::moved() if (item == currentItem) QTRY_COMPARE(gridview->currentIndex(), i); } + + releaseView(canvas); } void tst_QQuickGridView::moved_data() @@ -1279,7 +1327,7 @@ void tst_QQuickGridView::multipleChanges() QFETCH(int, newCount); QFETCH(int, newCurrentIndex); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QaimModel model; for (int i = 0; i < startCount; i++) @@ -1347,7 +1395,7 @@ void tst_QQuickGridView::multipleChanges() QTRY_COMPARE(number->text(), model.number(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::multipleChanges_data() @@ -2778,7 +2826,7 @@ void tst_QQuickGridView::footer() QFETCH(QPointF, firstDelegatePos); QFETCH(QPointF, resizeContentPos); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->show(); QaimModel model; @@ -2876,7 +2924,7 @@ void tst_QQuickGridView::footer() footer->setWidth(40); QTRY_COMPARE(QPointF(gridview->contentX(), gridview->contentY()), resizeContentPos); - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::footer_data() @@ -2948,7 +2996,7 @@ void tst_QQuickGridView::header() for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->rootContext()->setContextProperty("testModel", &model); canvas->rootContext()->setContextProperty("initialViewWidth", 240); canvas->rootContext()->setContextProperty("initialViewHeight", 320); @@ -3016,12 +3064,12 @@ void tst_QQuickGridView::header() header->setWidth(40); QTRY_COMPARE(QPointF(gridview->contentX(), gridview->contentY()), resizeContentPos); - delete canvas; + releaseView(canvas); // QTBUG-21207 header should become visible if view resizes from initial empty size - canvas = createView(); + canvas = getView(); canvas->rootContext()->setContextProperty("testModel", &model); canvas->rootContext()->setContextProperty("initialViewWidth", 240); canvas->rootContext()->setContextProperty("initialViewHeight", 320); @@ -3040,7 +3088,7 @@ void tst_QQuickGridView::header() QTRY_COMPARE(gridview->headerItem()->pos(), initialHeaderPos); QCOMPARE(QPointF(gridview->contentX(), gridview->contentY()), initialContentPos); - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::header_data() @@ -3244,7 +3292,7 @@ void tst_QQuickGridView::indexAt_itemAt() QFETCH(qreal, y); QFETCH(int, index); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QaimModel model; model.addItem("Fred", "12345"); @@ -3279,7 +3327,7 @@ void tst_QQuickGridView::indexAt_itemAt() QCOMPARE(gridview->indexAt(x, y), index); QVERIFY(gridview->itemAt(x, y) == item); - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::onAdd() @@ -3290,7 +3338,7 @@ void tst_QQuickGridView::onAdd() const int delegateWidth = 50; const int delegateHeight = 100; QaimModel model; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->setGeometry(0,0,5 * delegateWidth, 5 * delegateHeight); // just ensure all items fit // these initial items should not trigger GridView.onAdd @@ -3321,7 +3369,7 @@ void tst_QQuickGridView::onAdd() for (int i=0; irootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("delegateWidth", delegateWidth); @@ -3366,7 +3414,7 @@ void tst_QQuickGridView::onRemove() QTRY_COMPARE(model.count(), qobject_cast(canvas->rootObject())->count()); QCOMPARE(object->property("removedDelegateCount"), QVariant(removeCount)); - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::onRemove_data() @@ -3602,7 +3650,7 @@ void tst_QQuickGridView::snapToRow() QFETCH(qreal, endExtent); QFETCH(qreal, startExtent); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->setSource(testFileUrl("snapToRow.qml")); canvas->show(); @@ -3653,7 +3701,7 @@ void tst_QQuickGridView::snapToRow() else QCOMPARE(gridview->contentX(), startExtent); - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::snapOneRow_data() @@ -3697,7 +3745,7 @@ void tst_QQuickGridView::snapOneRow() QFETCH(qreal, endExtent); QFETCH(qreal, startExtent); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->setSource(testFileUrl("snapOneRow.qml")); canvas->show(); @@ -3765,7 +3813,7 @@ void tst_QQuickGridView::snapOneRow() QCOMPARE(currentIndexSpy.count(), 6); } - delete canvas; + releaseView(canvas); } @@ -3846,7 +3894,7 @@ void tst_QQuickGridView::populateTransitions() model.addItem("item" + QString::number(i), ""); } - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); canvas->rootContext()->setContextProperty("testModel", &model); canvas->rootContext()->setContextProperty("usePopulateTransition", usePopulateTransition); canvas->rootContext()->setContextProperty("dynamicallyPopulate", dynamicallyPopulate); @@ -3944,7 +3992,7 @@ void tst_QQuickGridView::populateTransitions() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::populateTransitions_data() @@ -3984,7 +4032,7 @@ void tst_QQuickGridView::addTransitions() QaimModel model_targetItems_transitionFrom; QaimModel model_displacedItems_transitionVia; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("model_targetItems_transitionFrom", &model_targetItems_transitionFrom); @@ -4080,7 +4128,7 @@ void tst_QQuickGridView::addTransitions() QCOMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::addTransitions_data() @@ -4189,7 +4237,7 @@ void tst_QQuickGridView::moveTransitions() QaimModel model_targetItems_transitionVia; QaimModel model_displacedItems_transitionVia; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("model_targetItems_transitionVia", &model_targetItems_transitionVia); @@ -4277,7 +4325,7 @@ void tst_QQuickGridView::moveTransitions() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::moveTransitions_data() @@ -4395,7 +4443,7 @@ void tst_QQuickGridView::removeTransitions() QaimModel model_targetItems_transitionTo; QaimModel model_displacedItems_transitionVia; - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("model_targetItems_transitionTo", &model_targetItems_transitionTo); @@ -4492,7 +4540,7 @@ void tst_QQuickGridView::removeTransitions() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::removeTransitions_data() @@ -4599,7 +4647,7 @@ void tst_QQuickGridView::displacedTransitions() QPointF moveDisplaced_transitionVia(50, -100); QPointF removeDisplaced_transitionVia(150, 100); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("model_displaced_transitionVia", &model_displaced_transitionVia); @@ -4709,7 +4757,7 @@ void tst_QQuickGridView::displacedTransitions() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::displacedTransitions_data() @@ -4822,7 +4870,7 @@ void tst_QQuickGridView::multipleTransitions() for (int i = 0; i < initialCount; i++) model.addItem("Original item" + QString::number(i), ""); - QQuickView *canvas = createView(); + QQuickView *canvas = getView(); QQmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("addTargets_transitionFrom", addTargets_transitionFrom); @@ -4924,7 +4972,7 @@ void tst_QQuickGridView::multipleTransitions() QTRY_COMPARE(name->text(), model.name(i)); } - delete canvas; + releaseView(canvas); } void tst_QQuickGridView::multipleTransitions_data() -- cgit v1.2.3