aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-03-13 15:54:19 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-13 09:47:23 +0100
commit70ac6b1705b0c500c136129bc9691050a50b442a (patch)
treee0e65a2f402b331897b96dceb8b2c5f2c01e60d0 /tests
parent1f76525c5f701f612b56a49715cda6597e3727b1 (diff)
Reuse QQuickView in ListView table driven tests
Makes the tests run faster since we're not waiting for a window to appear all the time. Change-Id: Ibff3706873dbad2f92d2135eae260368f4f4bb10 Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp133
1 files changed, 89 insertions, 44 deletions
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index 1a494183a8..14707cab1d 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -63,6 +63,8 @@ Q_DECLARE_METATYPE(QQuickListView::Orientation)
using namespace QQuickViewTestUtil;
using namespace QQuickVisualTestUtil;
+#define SHARE_VIEWS
+
class tst_QQuickListView : public QQmlDataTest
{
Q_OBJECT
@@ -70,6 +72,7 @@ public:
tst_QQuickListView();
private slots:
+ void init();
// Test both QListModelInterface and QAbstractItemModel model types
void qListModelInterface_items();
void qListModelInterface_package_items();
@@ -206,6 +209,38 @@ private:
void inserted_more_data();
void removed_more_data();
void moved_data();
+
+#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;
};
class TestObject : public QObject
@@ -247,10 +282,21 @@ public:
int mCacheBuffer;
};
-tst_QQuickListView::tst_QQuickListView()
+tst_QQuickListView::tst_QQuickListView() : m_view(0)
{
}
+void tst_QQuickListView::init()
+{
+#ifdef SHARE_VIEWS
+ if (m_view && QString(QTest::currentTestFunction()) != testForView) {
+ testForView = QString();
+ delete m_view;
+ m_view = 0;
+ }
+#endif
+}
+
template <class T>
void tst_QQuickListView::items(const QUrl &source, bool forceLayout)
{
@@ -486,7 +532,7 @@ void tst_QQuickListView::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);
@@ -544,7 +590,7 @@ void tst_QQuickListView::inserted_more()
QTRY_COMPARE(number->text(), model.number(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -635,7 +681,7 @@ void tst_QQuickListView::insertBeforeVisible()
QFETCH(int, cacheBuffer);
QQuickText *name;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QmlListModel model;
for (int i = 0; i < 30; i++)
@@ -696,7 +742,7 @@ void tst_QQuickListView::insertBeforeVisible()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -914,7 +960,7 @@ void tst_QQuickListView::removed_more(const QUrl &source)
QQuickText *name;
QQuickText *number;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
T model;
for (int i = 0; i < 30; i++)
@@ -976,7 +1022,7 @@ void tst_QQuickListView::removed_more(const QUrl &source)
QTRY_COMPARE(number->text(), model.number(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -1136,7 +1182,7 @@ void tst_QQuickListView::moved(const QUrl &source)
QQuickText *name;
QQuickText *number;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
T model;
for (int i = 0; i < 30; i++)
@@ -1201,7 +1247,7 @@ void tst_QQuickListView::moved(const QUrl &source)
QTRY_COMPARE(listview->currentIndex(), i);
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -1363,7 +1409,7 @@ void tst_QQuickListView::multipleChanges()
QFETCH(int, newCount);
QFETCH(int, newCurrentIndex);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QmlListModel model;
for (int i = 0; i < startCount; i++)
@@ -1435,7 +1481,7 @@ void tst_QQuickListView::multipleChanges()
}
delete testObject;
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::multipleChanges_data()
@@ -2189,7 +2235,7 @@ void tst_QQuickListView::currentIndex_delayedItemCreation()
{
QFETCH(bool, setCurrentToZero);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
// test currentIndexChanged() is emitted even if currentIndex = 0 on start up
// (since the currentItem will have changed and that shares the same index)
@@ -2207,7 +2253,7 @@ void tst_QQuickListView::currentIndex_delayedItemCreation()
QCOMPARE(listview->currentIndex(), 0);
QTRY_COMPARE(spy.count(), 1);
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::currentIndex_delayedItemCreation_data()
@@ -3030,7 +3076,7 @@ void tst_QQuickListView::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);
@@ -3092,12 +3138,12 @@ void tst_QQuickListView::header()
QVERIFY(item);
QCOMPARE(item->pos(), firstDelegatePos);
- 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", 0.0);
canvas->rootContext()->setContextProperty("initialViewHeight", 0.0);
@@ -3116,8 +3162,7 @@ void tst_QQuickListView::header()
QTRY_COMPARE(listview->headerItem()->pos(), initialHeaderPos);
QCOMPARE(QPointF(listview->contentX(), listview->contentY()), initialContentPos);
-
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::header_data()
@@ -3212,7 +3257,7 @@ void tst_QQuickListView::footer()
QFETCH(QPointF, changedContentPos);
QFETCH(QPointF, resizeContentPos);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QmlListModel model;
for (int i = 0; i < 3; i++)
@@ -3306,7 +3351,7 @@ void tst_QQuickListView::footer()
footer->setWidth(40);
QTRY_COMPARE(QPointF(listview->contentX(), listview->contentY()), resizeContentPos);
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::footer_data()
@@ -3835,7 +3880,7 @@ void tst_QQuickListView::indexAt_itemAt()
QFETCH(qreal, y);
QFETCH(int, index);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QmlListModel model;
for (int i = 0; i < 30; i++)
@@ -3866,7 +3911,7 @@ void tst_QQuickListView::indexAt_itemAt()
QCOMPARE(listview->indexAt(x,y), index);
QVERIFY(listview->itemAt(x,y) == item);
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -3963,7 +4008,7 @@ void tst_QQuickListView::onRemove()
for (int i=0; i<initialItemCount; i++)
model.addItem(QString("value %1").arg(i), "dummy value");
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
ctxt->setContextProperty("delegateHeight", delegateHeight);
@@ -3976,7 +4021,7 @@ void tst_QQuickListView::onRemove()
QCOMPARE(object->property("removedDelegateCount"), QVariant(removeCount));
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::onRemove_data()
@@ -4189,7 +4234,7 @@ void tst_QQuickListView::marginsResize()
QFETCH(qreal, start);
QFETCH(qreal, end);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
canvas->setSource(testFileUrl("margins2.qml"));
canvas->show();
@@ -4222,7 +4267,7 @@ void tst_QQuickListView::marginsResize()
else
QTRY_COMPARE(listview->contentX(), start);
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::marginsResize_data()
@@ -4278,7 +4323,7 @@ void tst_QQuickListView::snapToItem()
QFETCH(qreal, endExtent);
QFETCH(qreal, startExtent);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
canvas->setSource(testFileUrl("snapToItem.qml"));
canvas->show();
@@ -4329,7 +4374,7 @@ void tst_QQuickListView::snapToItem()
else
QCOMPARE(listview->contentX(), startExtent);
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::qListModelInterface_items()
@@ -4620,7 +4665,7 @@ void tst_QQuickListView::snapOneItem()
QSKIP("QTBUG-24338");
#endif
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
canvas->setSource(testFileUrl("snapOneItem.qml"));
canvas->show();
@@ -4688,7 +4733,7 @@ void tst_QQuickListView::snapOneItem()
QCOMPARE(currentIndexSpy.count(), 6);
}
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::unrequestedVisibility()
@@ -4873,7 +4918,7 @@ void tst_QQuickListView::populateTransitions()
model.addItem("item" + QString::number(i), "");
}
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
canvas->rootContext()->setContextProperty("testModel", &model);
canvas->rootContext()->setContextProperty("testObject", new TestObject(canvas->rootContext()));
canvas->rootContext()->setContextProperty("usePopulateTransition", usePopulateTransition);
@@ -4971,7 +5016,7 @@ void tst_QQuickListView::populateTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::populateTransitions_data()
@@ -5011,7 +5056,7 @@ void tst_QQuickListView::addTransitions()
QaimModel model_targetItems_transitionFrom;
QaimModel model_displacedItems_transitionVia;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
TestObject *testObject = new TestObject;
ctxt->setContextProperty("testModel", &model);
@@ -5109,7 +5154,7 @@ void tst_QQuickListView::addTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -5206,7 +5251,7 @@ void tst_QQuickListView::moveTransitions()
QaimModel model_targetItems_transitionVia;
QaimModel model_displacedItems_transitionVia;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
TestObject *testObject = new TestObject;
ctxt->setContextProperty("testModel", &model);
@@ -5294,7 +5339,7 @@ void tst_QQuickListView::moveTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -5409,7 +5454,7 @@ void tst_QQuickListView::removeTransitions()
QaimModel model_targetItems_transitionTo;
QaimModel model_displacedItems_transitionVia;
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
TestObject *testObject = new TestObject;
ctxt->setContextProperty("testModel", &model);
@@ -5508,7 +5553,7 @@ void tst_QQuickListView::removeTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -5608,7 +5653,7 @@ void tst_QQuickListView::displacedTransitions()
QPointF moveDisplaced_transitionVia(50, -100);
QPointF removeDisplaced_transitionVia(150, 100);
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
TestObject *testObject = new TestObject(canvas);
ctxt->setContextProperty("testModel", &model);
@@ -5720,7 +5765,7 @@ void tst_QQuickListView::displacedTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
}
void tst_QQuickListView::displacedTransitions_data()
@@ -5832,7 +5877,7 @@ void tst_QQuickListView::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();
TestObject *testObject = new TestObject;
ctxt->setContextProperty("testModel", &model);
@@ -5924,7 +5969,7 @@ void tst_QQuickListView::multipleTransitions()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
delete testObject;
}
@@ -5996,7 +6041,7 @@ void tst_QQuickListView::multipleDisplaced()
for (int i = 0; i < 30; i++)
model.addItem("Original item" + QString::number(i), "");
- QQuickView *canvas = createView();
+ QQuickView *canvas = getView();
QQmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("testModel", &model);
ctxt->setContextProperty("testObject", new TestObject(canvas));
@@ -6033,7 +6078,7 @@ void tst_QQuickListView::multipleDisplaced()
QTRY_COMPARE(name->text(), model.name(i));
}
- delete canvas;
+ releaseView(canvas);
}
QList<int> tst_QQuickListView::toIntList(const QVariantList &list)