summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2020-12-14 14:35:07 +0100
committerIvan Solovev <ivan.solovev@qt.io>2021-05-04 22:58:59 +0200
commit8161a9e5c0bd7430ab450801a144bd5a5e786408 (patch)
tree2f63c908085caebd0d6f015e4cf22cae23ad2e25 /tests
parent0fb77f80b81e09945a9e6e660c915c765415eb39 (diff)
QAbstractProxyModel: port to new property system
The biggest trick here is the getter (QAbstractProxyModel::sourceModel), which is returning nullptr, while internally using a global staticEmptyModel() instance. This lead to inconsistency while binding to a proxy model without source model. The bound object would point to staticEmptyModel() instance, while sourceModel() getter returns nullptr. To solve this issue a custom QBindableInterface is implemented. Task-number: QTBUG-85520 Change-Id: I597df891c7e425d51b55f50ccbacabdfe935cbac Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt3
-rw-r--r--tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp32
2 files changed, 33 insertions, 2 deletions
diff --git a/tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt b/tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt
index 277556b915..6c782326cb 100644
--- a/tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt
+++ b/tests/auto/corelib/itemmodels/qabstractproxymodel/CMakeLists.txt
@@ -9,6 +9,7 @@ qt_internal_add_test(tst_qabstractproxymodel
tst_qabstractproxymodel.cpp
DEFINES
QT_DISABLE_DEPRECATED_BEFORE=0
- PUBLIC_LIBRARIES
+ LIBRARIES
Qt::Gui
+ Qt::TestPrivate
)
diff --git a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
index b6ee3c5d4a..dced357d61 100644
--- a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -27,6 +27,7 @@
****************************************************************************/
#include <QTest>
+#include <QtTest/private/qpropertytesthelper_p.h>
#include <qabstractproxymodel.h>
#include <QItemSelection>
#include <qstandarditemmodel.h>
@@ -60,6 +61,7 @@ private slots:
void testRoleNames();
void testSwappingRowsProxy();
void testDragAndDrop();
+ void sourceModelBinding();
};
// Subclass that exposes the protected functions.
@@ -500,6 +502,34 @@ void tst_QAbstractProxyModel::testDragAndDrop()
QCOMPARE(proxy.supportedDropActions(), sourceModel.supportedDropActions());
}
+void tst_QAbstractProxyModel::sourceModelBinding()
+{
+ SubQAbstractProxyModel proxy;
+ QStandardItemModel model1;
+ QStandardItemModel model2;
+ QTestPrivate::testReadWritePropertyBasics<QAbstractProxyModel, QAbstractItemModel *>(
+ proxy, &model1, &model2, "sourceModel");
+ if (QTest::currentTestFailed()) {
+ qDebug("Failed model - model test");
+ return;
+ }
+
+ proxy.setSourceModel(&model2);
+ QTestPrivate::testReadWritePropertyBasics<QAbstractProxyModel, QAbstractItemModel *>(
+ proxy, &model1, nullptr, "sourceModel");
+ if (QTest::currentTestFailed()) {
+ qDebug("Failed model - nullptr test");
+ return;
+ }
+
+ proxy.setSourceModel(&model1);
+ QTestPrivate::testReadWritePropertyBasics<QAbstractProxyModel, QAbstractItemModel *>(
+ proxy, nullptr, &model2, "sourceModel");
+ if (QTest::currentTestFailed()) {
+ qDebug("Failed nullptr - model test");
+ return;
+ }
+}
QTEST_MAIN(tst_QAbstractProxyModel)
#include "tst_qabstractproxymodel.moc"