diff options
author | Dominik Holland <dominik.holland@qt.io> | 2023-07-18 16:06:28 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-07-20 07:19:08 +0000 |
commit | ccde6f58fb4747fe44438381ef6c59bb7f8790ad (patch) | |
tree | 87538a088279a67542e0a23d88f633e166850569 | |
parent | f84a8c63693b3c60aa70561de339418757eaa6a0 (diff) |
Improve the test coverage of qifpagingmodel
Change-Id: If6a2f5d4f1c96ceb4231ef0c26dd8e0f4fca6148
Reviewed-by: Robert Griebl <robert.griebl@qt.io>
(cherry picked from commit 2873771bd30d8e3f5cd16c47bf06d16eefe36069)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/interfaceframework/qifpagingmodel.cpp | 3 | ||||
-rw-r--r-- | tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp | 46 |
2 files changed, 39 insertions, 10 deletions
diff --git a/src/interfaceframework/qifpagingmodel.cpp b/src/interfaceframework/qifpagingmodel.cpp index a1d3ff2a..fdca0f90 100644 --- a/src/interfaceframework/qifpagingmodel.cpp +++ b/src/interfaceframework/qifpagingmodel.cpp @@ -231,9 +231,6 @@ void QIfPagingModelPrivate::clearToDefaults() const QIfStandardItem *QIfPagingModelPrivate::itemAt(int i) const { const QVariant &var = m_itemList.at(i); - if (!var.isValid()) - return nullptr; - return qtif_gadgetFromVariant<QIfStandardItem>(q_ptr, var); } diff --git a/tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp b/tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp index 2f9e4e61..fc51e870 100644 --- a/tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp +++ b/tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp @@ -19,6 +19,11 @@ //TODO Add test with multiple model instances, requesting different data at the same time //TODO Test the signal without a valid identifier +class TestGadget +{ + Q_GADGET +}; + class TestBackend : public QIfPagingModelInterface { Q_OBJECT @@ -37,9 +42,9 @@ public: m_list = createItemList("simple"); } - QList<QIfStandardItem> createItemList(const QString &name) + QVariantList createItemList(const QString &name) { - QList<QIfStandardItem> list; + QVariantList list; for (int i=0; i<100; i++) { QIfStandardItem item; item.setId(name + QLatin1String(" ") + QString::number(i)); @@ -47,11 +52,18 @@ public: map.insert("type", name); map.insert("index", i); item.setData(map); - list.append(item); + list.append(QVariant::fromValue(item)); } return list; } + void initializeBrokenData() + { + m_list.append(QVariant()); + m_list.append(QVariant("string")); + m_list.append(QVariant::fromValue(TestGadget())); + } + void initialize() override { emit initializationDone(); @@ -78,14 +90,14 @@ public: int size = qMin(start + count, m_list.count()); for (int i = start; i < size; i++) - requestedItems.append(QVariant::fromValue(m_list.at(i))); + requestedItems.append(m_list.at(i)); emit dataFetched(identifier, requestedItems, start, start + count < m_list.count()); } void insert(int index, const QIfStandardItem item) { - m_list.insert(index, item); + m_list.insert(index, QVariant::fromValue(item)); QVariantList variantList = { QVariant::fromValue(item) }; emit dataChanged(QUuid(), variantList, index, 0); @@ -106,7 +118,7 @@ public: m_list.move(currentIndex, newIndex); QVariantList variantLIst; for (int i = min; i <= max; i++) - variantLIst.append(QVariant::fromValue(m_list.at(i))); + variantLIst.append(m_list.at(i)); emit dataChanged(QUuid(), variantLIst, min, max - min + 1); } @@ -116,7 +128,7 @@ Q_SIGNALS: void unregisterInstanceCalled(const QUuid &identifier); private: - QList<QIfStandardItem> m_list; + QVariantList m_list; QtInterfaceFrameworkModule::ModelCapabilities m_caps; }; @@ -173,6 +185,7 @@ private Q_SLOTS: void testRegisterInstance(); void testBasic_qml(); + void testBrokenData(); void testGetAt(); void testFetchMore_data(); void testFetchMore(); @@ -281,6 +294,25 @@ void tst_QIfPagingModel::testBasic_qml() }"); } +void tst_QIfPagingModel::testBrokenData() +{ + TestServiceObject *service = new TestServiceObject(); + manager->registerService(service, service->interfaces()); + service->testBackend()->initializeBrokenData(); + + QIfPagingModel model; + model.setServiceObject(service); + + QTest::ignoreMessage(QtWarningMsg, "The passed QVariant is undefined"); + QIfStandardItem item = model.at<QIfStandardItem>(0); + + QTest::ignoreMessage(QtWarningMsg, "The passed QVariant needs to use the Q_GADGET macro"); + QIfStandardItem item2 = model.at<QIfStandardItem>(1); + + QTest::ignoreMessage(QtWarningMsg, "The passed QVariant is not derived from QIfStandardItem"); + QIfStandardItem item3 = model.at<QIfStandardItem>(2); +} + void tst_QIfPagingModel::testGetAt() { TestServiceObject *service = new TestServiceObject(); |