diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2017-08-24 18:50:59 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2018-01-09 21:12:58 +0000 |
commit | ff25a7ec056d3381e04251eb65a59c46afe79e08 (patch) | |
tree | e952e718b9f23b01d6c5970f62acfd61122c7a18 /tests/auto/other/modeltest/tst_modeltest.cpp | |
parent | 81566ca9aa525e83810994a567fddcdbc9c2d22c (diff) |
QAbstractItemModelTester: fix the autotests
Move the modeltest autotest in the right place, and fix the
other autotests that were using it to use the version now in QtTestLib.
Change-Id: Ic6838945f616d580f357c872ce0956c341be3b16
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/other/modeltest/tst_modeltest.cpp')
-rw-r--r-- | tests/auto/other/modeltest/tst_modeltest.cpp | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/tests/auto/other/modeltest/tst_modeltest.cpp b/tests/auto/other/modeltest/tst_modeltest.cpp deleted file mode 100644 index e2d002844b..0000000000 --- a/tests/auto/other/modeltest/tst_modeltest.cpp +++ /dev/null @@ -1,300 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** 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$ -** -****************************************************************************/ - -#include <QtTest/QtTest> -#include <QtGui/QtGui> -#include <QtWidgets/QtWidgets> - -#include "modeltest.h" -#include "dynamictreemodel.h" - -class tst_ModelTest : public QObject -{ - Q_OBJECT - -private slots: - void stringListModel(); - void treeWidgetModel(); - void standardItemModel(); - void testInsertThroughProxy(); - void moveSourceItems(); - void testResetThroughProxy(); -}; - -/* - tests -*/ - -void tst_ModelTest::stringListModel() -{ - QStringListModel model; - QSortFilterProxyModel proxy; - - ModelTest t1(&model); - ModelTest t2(&proxy); - - proxy.setSourceModel(&model); - - model.setStringList(QStringList() << "2" << "3" << "1"); - model.setStringList(QStringList() << "a" << "e" << "plop" << "b" << "c"); - - proxy.setDynamicSortFilter(true); - proxy.setFilterRegExp(QRegExp("[^b]")); -} - -void tst_ModelTest::treeWidgetModel() -{ - QTreeWidget widget; - - ModelTest t1(widget.model()); - - QTreeWidgetItem *root = new QTreeWidgetItem(&widget, QStringList("root")); - for (int i = 0; i < 20; ++i) - new QTreeWidgetItem(root, QStringList(QString::number(i))); - QTreeWidgetItem *remove = root->child(2); - root->removeChild(remove); - QTreeWidgetItem *parent = new QTreeWidgetItem(&widget, QStringList("parent")); - new QTreeWidgetItem(parent, QStringList("child")); - widget.setItemHidden(parent, true); - - widget.sortByColumn(0); -} - -void tst_ModelTest::standardItemModel() -{ - QStandardItemModel model(10, 10); - QSortFilterProxyModel proxy; - - ModelTest t1(&model); - ModelTest t2(&proxy); - - proxy.setSourceModel(&model); - - model.insertRows(2, 5); - model.removeRows(4, 5); - - model.insertColumns(2, 5); - model.removeColumns(4, 5); - - model.insertRows(0, 5, model.index(1, 1)); - model.insertColumns(0, 5, model.index(1, 3)); -} - -void tst_ModelTest::testInsertThroughProxy() -{ - DynamicTreeModel *model = new DynamicTreeModel(this); - - QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this); - proxy->setSourceModel(model); - - new ModelTest(proxy, this); - - ModelInsertCommand *insertCommand = new ModelInsertCommand(model, this); - insertCommand->setNumCols(4); - insertCommand->setStartRow(0); - insertCommand->setEndRow(9); - // Parent is QModelIndex() - insertCommand->doCommand(); - - insertCommand = new ModelInsertCommand(model, this); - insertCommand->setNumCols(4); - insertCommand->setAncestorRowNumbers(QList<int>() << 5); - insertCommand->setStartRow(0); - insertCommand->setEndRow(9); - insertCommand->doCommand(); - - ModelMoveCommand *moveCommand = new ModelMoveCommand(model, this); - moveCommand->setNumCols(4); - moveCommand->setStartRow(0); - moveCommand->setEndRow(0); - moveCommand->setDestRow(9); - moveCommand->setDestAncestors(QList<int>() << 5); - moveCommand->doCommand(); -} - -/** - Makes the persistent index list publicly accessible -*/ -class AccessibleProxyModel : public QSortFilterProxyModel -{ - Q_OBJECT -public: - AccessibleProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent) - { - } - - QModelIndexList persistent() - { - return persistentIndexList(); - } -}; - -class ObservingObject : public QObject -{ - Q_OBJECT -public: - ObservingObject(AccessibleProxyModel *proxy, QObject *parent = 0) : - QObject(parent), - m_proxy(proxy), - storePersistentFailureCount(0), - checkPersistentFailureCount(0) - { - connect(m_proxy, SIGNAL(rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)), - SLOT(storePersistent())); - connect(m_proxy, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), - SLOT(checkPersistent())); - } - -public slots: - - void storePersistent(const QModelIndex &parent) - { - for (int row = 0; row < m_proxy->rowCount(parent); ++row) { - QModelIndex proxyIndex = m_proxy->index(row, 0, parent); - QModelIndex sourceIndex = m_proxy->mapToSource(proxyIndex); - if (!proxyIndex.isValid()) { - qWarning("%s: Invalid proxy index", Q_FUNC_INFO); - ++storePersistentFailureCount; - } - if (!sourceIndex.isValid()) { - qWarning("%s: invalid source index", Q_FUNC_INFO); - ++storePersistentFailureCount; - } - m_persistentSourceIndexes.append(sourceIndex); - m_persistentProxyIndexes.append(proxyIndex); - if (m_proxy->hasChildren(proxyIndex)) - storePersistent(proxyIndex); - } - } - - void storePersistent() - { - // This method is called from rowsAboutToBeMoved. Persistent indexes should be valid - foreach (const QModelIndex &idx, m_persistentProxyIndexes) - if (!idx.isValid()) { - qWarning("%s: persistentProxyIndexes contains invalid index", Q_FUNC_INFO); - ++storePersistentFailureCount; - } - - if (!m_proxy->persistent().isEmpty()) { - qWarning("%s: proxy should have no persistent indexes when storePersistent called", - Q_FUNC_INFO); - ++storePersistentFailureCount; - } - storePersistent(QModelIndex()); - if (m_proxy->persistent().isEmpty()) { - qWarning("%s: proxy should have persistent index after storePersistent called", - Q_FUNC_INFO); - ++storePersistentFailureCount; - } - } - - void checkPersistent() - { - for (int row = 0; row < m_persistentProxyIndexes.size(); ++row) { - m_persistentProxyIndexes.at(row); - m_persistentSourceIndexes.at(row); - } - for (int row = 0; row < m_persistentProxyIndexes.size(); ++row) { - QModelIndex updatedProxy = m_persistentProxyIndexes.at(row); - QModelIndex updatedSource = m_persistentSourceIndexes.at(row); - if (m_proxy->mapToSource(updatedProxy) != updatedSource) { - qWarning("%s: check failed at row %d", Q_FUNC_INFO, row); - ++checkPersistentFailureCount; - } - } - m_persistentSourceIndexes.clear(); - m_persistentProxyIndexes.clear(); - } - -private: - AccessibleProxyModel *m_proxy; - QList<QPersistentModelIndex> m_persistentSourceIndexes; - QList<QPersistentModelIndex> m_persistentProxyIndexes; -public: - int storePersistentFailureCount; - int checkPersistentFailureCount; -}; - -void tst_ModelTest::moveSourceItems() -{ - DynamicTreeModel *model = new DynamicTreeModel(this); - AccessibleProxyModel *proxy = new AccessibleProxyModel(this); - proxy->setSourceModel(model); - - ModelInsertCommand *insertCommand = new ModelInsertCommand(model, this); - insertCommand->setStartRow(0); - insertCommand->setEndRow(2); - insertCommand->doCommand(); - - insertCommand = new ModelInsertCommand(model, this); - insertCommand->setAncestorRowNumbers(QList<int>() << 1); - insertCommand->setStartRow(0); - insertCommand->setEndRow(2); - insertCommand->doCommand(); - - ObservingObject observer(proxy); - - ModelMoveCommand *moveCommand = new ModelMoveCommand(model, this); - moveCommand->setStartRow(0); - moveCommand->setEndRow(0); - moveCommand->setDestAncestors(QList<int>() << 1); - moveCommand->setDestRow(0); - moveCommand->doCommand(); - - QCOMPARE(observer.storePersistentFailureCount, 0); - QCOMPARE(observer.checkPersistentFailureCount, 0); -} - -void tst_ModelTest::testResetThroughProxy() -{ - DynamicTreeModel *model = new DynamicTreeModel(this); - - ModelInsertCommand *insertCommand = new ModelInsertCommand(model, this); - insertCommand->setStartRow(0); - insertCommand->setEndRow(2); - insertCommand->doCommand(); - - QPersistentModelIndex persistent = model->index(0, 0); - - AccessibleProxyModel *proxy = new AccessibleProxyModel(this); - proxy->setSourceModel(model); - - ObservingObject observer(proxy); - observer.storePersistent(); - - ModelResetCommand *resetCommand = new ModelResetCommand(model, this); - resetCommand->setNumCols(0); - resetCommand->doCommand(); - - QCOMPARE(observer.storePersistentFailureCount, 0); - QCOMPARE(observer.checkPersistentFailureCount, 0); -} - -QTEST_MAIN(tst_ModelTest) -#include "tst_modeltest.moc" |