diff options
Diffstat (limited to 'tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive')
3 files changed, 55 insertions, 37 deletions
diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/CMakeLists.txt b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/CMakeLists.txt new file mode 100644 index 0000000000..2f08bf1b26 --- /dev/null +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/CMakeLists.txt @@ -0,0 +1,19 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +##################################################################### +## tst_qsortfilterproxymodel_recursive Test: +##################################################################### + +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qsfpm_recursive LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + +qt_internal_add_test(tst_qsfpm_recursive + SOURCES + tst_qsortfilterproxymodel_recursive.cpp + LIBRARIES + Qt::Gui +) diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/qsortfilterproxymodel_recursive.pro b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/qsortfilterproxymodel_recursive.pro deleted file mode 100644 index a8b793dbc6..0000000000 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/qsortfilterproxymodel_recursive.pro +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG += testcase -CONFIG += parallel_test -TARGET = tst_qsortfilterproxymodel_recursive - -QT += testlib - -SOURCES += tst_qsortfilterproxymodel_recursive.cpp -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/tst_qsortfilterproxymodel_recursive.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/tst_qsortfilterproxymodel_recursive.cpp index dbafedbb5d..c6b24a489a 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/tst_qsortfilterproxymodel_recursive.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_recursive/tst_qsortfilterproxymodel_recursive.cpp @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, authors Filipe Azevedo <filipe.azevedo@kdab.com> and David Faure <david.faure@kdab.com> -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, authors Filipe Azevedo <filipe.azevedo@kdab.com> and David Faure <david.faure@kdab.com> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QTest> #include <QSignalSpy> @@ -142,9 +117,9 @@ static QString treeAsString(const QAbstractItemModel &model, const QModelIndex & static void fillModel(QStandardItemModel &model, const QString &str) { QCOMPARE(str.count('['), str.count(']')); - QStandardItem *item = 0; + QStandardItem *item = nullptr; QString data; - for ( int i = 0 ; i < str.length() ; ++i ) { + for ( int i = 0 ; i < str.size() ; ++i ) { const QChar ch = str.at(i); if ((ch == '[' || ch == ']' || ch == ' ') && !data.isEmpty()) { if (data.endsWith('*')) { @@ -715,6 +690,38 @@ private Q_SLOTS: } + void testChildrenFiltering_data() + { + QTest::addColumn<QString>("sourceStr"); + QTest::addColumn<QString>("noChildrenProxyStr"); + QTest::addColumn<QString>("childrenProxyStr"); + QTest::addColumn<QString>("noParentProxyStr"); + + QTest::newRow("filter_parent") << "[1*[1.1 1.2[1.2.1]]]" << "[1*]" << "[1*[1.1 1.2[1.2.1]]]" << "[1*[1.1 1.2[1.2.1]]]"; + QTest::newRow("filter_child") << "[1[1.1 1.2*[1.2.1]]]" << "[1[1.2*]]" << "[1[1.2*[1.2.1]]]" << ""; + + } + + void testChildrenFiltering() + { + QFETCH(QString, sourceStr); + QFETCH(QString, noChildrenProxyStr); + QFETCH(QString, childrenProxyStr); + QFETCH(QString, noParentProxyStr); + + QStandardItemModel model; + fillModel(model, sourceStr); + + TestModel proxy(&model); + QCOMPARE(treeAsString(proxy), noChildrenProxyStr); + + proxy.setAutoAcceptChildRows(true); + QCOMPARE(treeAsString(proxy), childrenProxyStr); + + proxy.setRecursiveFilteringEnabled(false); + QCOMPARE(treeAsString(proxy), noParentProxyStr); + } + private: QStandardItem *itemByText(const QStandardItemModel& model, const QString &text) const { QModelIndexList list = model.match(model.index(0, 0), Qt::DisplayRole, text, 1, Qt::MatchRecursive); |