diff options
Diffstat (limited to 'tests/auto/modelview/tst_modelview.cpp')
-rw-r--r-- | tests/auto/modelview/tst_modelview.cpp | 71 |
1 files changed, 19 insertions, 52 deletions
diff --git a/tests/auto/modelview/tst_modelview.cpp b/tests/auto/modelview/tst_modelview.cpp index cb60ae5..31656f1 100644 --- a/tests/auto/modelview/tst_modelview.cpp +++ b/tests/auto/modelview/tst_modelview.cpp @@ -307,11 +307,11 @@ int getRandomNumber(int min, int max) return res; } -class FetchData : public QObject +class FetchData : public WaitHelper { - Q_OBJECT public: - FetchData(const QAbstractItemModelReplica *replica) : QObject(), m_replica(replica), isFinished(false) { + FetchData(const QAbstractItemModelReplica *replica) : WaitHelper(), m_replica(replica) + { if (!m_replica->isInitialized()) { QEventLoop l; connect(m_replica, &QAbstractItemModelReplica::initialized, &l, &QEventLoop::quit); @@ -322,6 +322,18 @@ public: connect(m_replica, &QAbstractItemModelReplica::rowsInserted, this, &FetchData::rowsInserted); } + bool fetchAndWait(int timeout = 15000) + { + addAll(); + fetch(); + return wait(timeout); + } + +private: + const QAbstractItemModelReplica *m_replica; + QHash<QPersistentModelIndex, QVector<int>> m_pending; + QSet<QPersistentModelIndex> m_waitForInsertion; + void addData(const QModelIndex &index, const QVector<int> &roles) { foreach (int role, roles) { @@ -357,9 +369,8 @@ public: void fetch() { - isFinished = m_pending.isEmpty() && m_waitForInsertion.isEmpty(); - if (isFinished) { - emitFetched(); + if (m_pending.isEmpty() && m_waitForInsertion.isEmpty()) { + finish(); return; } QHash<QPersistentModelIndex, QVector<int> > pending(m_pending); @@ -373,30 +384,6 @@ public: } } - bool fetchAndWait(int timeout = 15000) - { - QEventLoop l; - QTimer::singleShot(timeout, &l, &QEventLoop::quit); - connect(this, &FetchData::fetched, &l, &QEventLoop::quit); - fetch(); - l.exec(); - return isFinished; - } - -signals: - void fetched(); - -private: - const QAbstractItemModelReplica *m_replica; - QHash<QPersistentModelIndex, QVector<int> > m_pending; - QSet<QPersistentModelIndex> m_waitForInsertion; - bool isFinished; - - void emitFetched() - { - QTimer::singleShot(0, this, &FetchData::fetched); - } - void rowsInserted(const QModelIndex &parent, int first, int last) { static QVector<int> rolesV; @@ -474,10 +461,8 @@ private: } } - isFinished = m_pending.isEmpty() && m_waitForInsertion.isEmpty(); - if (isFinished) { - emitFetched(); - } + if (m_pending.isEmpty() && m_waitForInsertion.isEmpty()) + finish(); } }; @@ -611,7 +596,6 @@ void TestModelView::testEmptyModel() model->setRootCacheSize(1000); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareData(&emptyModel, model.data()); @@ -623,7 +607,6 @@ void TestModelView::testInitialData() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareData(&m_sourceModel, model.data()); @@ -635,7 +618,6 @@ void TestModelView::testInitialDataTree() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareTreeData(&m_sourceModel, model.data()); @@ -647,7 +629,6 @@ void TestModelView::testHeaderData() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); // ask for all Data members first, so we don't have to wait for update signals @@ -670,7 +651,6 @@ void TestModelView::testDataChangedTree() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareTreeData(&m_sourceModel, model.data()); @@ -718,7 +698,6 @@ void TestModelView::testFlags() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); QSignalSpy dataChangedSpy(model.data(), &QAbstractItemModelReplica::dataChanged); @@ -744,7 +723,6 @@ void TestModelView::testDataChanged() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); QSignalSpy dataChangedSpy(model.data(), &QAbstractItemModelReplica::dataChanged); @@ -767,7 +745,6 @@ void TestModelView::testDataInsertion() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); const int insertedRowsCount = 9; @@ -798,7 +775,6 @@ void TestModelView::testDataInsertionTree() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); const int insertedRowsCount = 9; @@ -852,7 +828,6 @@ void TestModelView::testDataRemoval() qputenv("QTRO_NODES_CACHE_SIZE", "1000"); model->setRootCacheSize(1000); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); const QPersistentModelIndex parent = m_sourceModel.index(10, 0); @@ -893,7 +868,6 @@ void TestModelView::testRoleNames() // Set a bigger cache enough to keep all the data otherwise the last test will fail repModel->setRootCacheSize(1500); FetchData f(repModel.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); // test custom role names @@ -935,7 +909,6 @@ void TestModelView::testServerInsertDataTree() QTRY_COMPARE(testTreeModel.rowCount(), model->rowCount()); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareData(&testTreeModel, model.data()); @@ -948,7 +921,6 @@ void TestModelView::testModelTest() ModelTest test(repModel.data()); FetchData f(repModel.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); Q_UNUSED(test); } @@ -959,7 +931,6 @@ void TestModelView::testSortFilterModel() QScopedPointer<QAbstractItemModelReplica> repModel( client.acquireModel(QStringLiteral("test"))); FetchData f(repModel.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); QSortFilterProxyModel clientSort; @@ -978,7 +949,6 @@ void TestModelView::testSetData() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareTreeData(&m_sourceModel, model.data(), model->availableRoles()); @@ -1007,7 +977,6 @@ void TestModelView::testSetDataTree() QScopedPointer<QAbstractItemModelReplica> model(client.acquireModel("test")); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareTreeData(&m_sourceModel, model.data(), model->availableRoles()); @@ -1060,7 +1029,6 @@ void TestModelView::testSelectionFromReplica() QItemSelectionModel *replicaSelectionModel = model->selectionModel(); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); replicaSelectionModel->setCurrentIndex(model->index(1,0), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current); @@ -1081,7 +1049,6 @@ void TestModelView::testSelectionFromSource() QItemSelectionModel *replicaSelectionModel = model->selectionModel(); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); selectionModel.setCurrentIndex(simpleModel.index(1,0), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Current); |