summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSona Kurazyan <sona.kurazyan@qt.io>2021-03-25 14:19:17 +0100
committerSona Kurazyan <sona.kurazyan@qt.io>2021-04-16 19:11:01 +0200
commit287260928b5ca3b8bc4137daeaf9cfd78763a08d (patch)
tree97e4b0e573ebab0ea5c082cd71281beca70cd7e8
parentd386f7fe600bfb735e047ea1239980cdf1eb387c (diff)
Simplify the FetchData test-helper classv5.12.11
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 Pick-to: 5.15 Change-Id: Ibc939c7956eb9e9a91dcf38db8541a5ae2aa1205 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
-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 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);