summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSona Kurazyan <sona.kurazyan@qt.io>2021-03-25 14:19:17 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-04-17 09:13:59 +0000
commitd2d7f2509ca316ca47d1da5f56d2e3516e32f072 (patch)
tree145d43ad8e04aa9e1a035029d449d773d7c4c07e
parent6c4c71f35ae64304a35b4daff98aecb64bf83aea (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.cpp71
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);