diff options
author | Sona Kurazyan <sona.kurazyan@qt.io> | 2021-03-25 14:19:17 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-04-17 09:13:59 +0000 |
commit | d2d7f2509ca316ca47d1da5f56d2e3516e32f072 (patch) | |
tree | 145d43ad8e04aa9e1a035029d449d773d7c4c07e | |
parent | 6c4c71f35ae64304a35b4daff98aecb64bf83aea (diff) |
Simplify the FetchData test-helper class
Made use of the new WaitHelper class to simplify the logic for waiting
for the data insertion in the model.
Moved the repeated calls to FetchData::addAll() to
FetchData::fetchAndWait() method.
Task-number: QTBUG-90688
Change-Id: Ibc939c7956eb9e9a91dcf38db8541a5ae2aa1205
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
(cherry picked from commit 287260928b5ca3b8bc4137daeaf9cfd78763a08d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-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 510e6e0..a4064a9 100644 --- a/tests/auto/modelview/tst_modelview.cpp +++ b/tests/auto/modelview/tst_modelview.cpp @@ -311,11 +311,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); @@ -326,6 +326,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) { for (int role : roles) { @@ -361,9 +373,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); @@ -377,30 +388,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; @@ -478,10 +465,8 @@ private: } } - isFinished = m_pending.isEmpty() && m_waitForInsertion.isEmpty(); - if (isFinished) { - emitFetched(); - } + if (m_pending.isEmpty() && m_waitForInsertion.isEmpty()) + finish(); } }; @@ -616,7 +601,6 @@ void TestModelView::testEmptyModel() model->setRootCacheSize(1000); FetchData f(model.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); compareData(&emptyModel, model.data()); @@ -628,7 +612,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()); @@ -640,7 +623,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()); @@ -652,7 +634,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 @@ -675,7 +656,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()); @@ -723,7 +703,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); @@ -749,7 +728,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(), SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>))); @@ -772,7 +750,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; @@ -803,7 +780,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; @@ -857,7 +833,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); @@ -898,7 +873,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 @@ -940,7 +914,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()); @@ -953,7 +926,6 @@ void TestModelView::testModelTest() ModelTest test(repModel.data()); FetchData f(repModel.data()); - f.addAll(); QVERIFY(f.fetchAndWait(MODELTEST_WAIT_TIME)); Q_UNUSED(test); } @@ -964,7 +936,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; @@ -983,7 +954,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()); @@ -1012,7 +982,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()); @@ -1065,7 +1034,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); @@ -1086,7 +1054,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); |