summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2023-07-18 16:06:28 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-07-20 07:19:08 +0000
commitccde6f58fb4747fe44438381ef6c59bb7f8790ad (patch)
tree87538a088279a67542e0a23d88f633e166850569
parentf84a8c63693b3c60aa70561de339418757eaa6a0 (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.cpp3
-rw-r--r--tests/auto/core/qifpagingmodel/tst_qifpagingmodel.cpp46
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();