/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include class tst_QAbstractProxyModel : public QObject { Q_OBJECT public slots: void initTestCase(); void cleanupTestCase(); void init(); void cleanup(); private slots: void qabstractproxymodel_data(); void qabstractproxymodel(); void data_data(); void data(); void flags_data(); void flags(); void headerData_data(); void headerData(); void itemData_data(); void itemData(); void mapFromSource_data(); void mapFromSource(); void mapSelectionFromSource_data(); void mapSelectionFromSource(); void mapSelectionToSource_data(); void mapSelectionToSource(); void mapToSource_data(); void mapToSource(); void revert_data(); void revert(); void setSourceModel_data(); void setSourceModel(); void submit_data(); void submit(); }; // Subclass that exposes the protected functions. class SubQAbstractProxyModel : public QAbstractProxyModel { public: // QAbstractProxyModel::mapFromSource is a pure virtual function. QModelIndex mapFromSource(QModelIndex const& sourceIndex) const { Q_UNUSED(sourceIndex); return QModelIndex(); } // QAbstractProxyModel::mapToSource is a pure virtual function. QModelIndex mapToSource(QModelIndex const& proxyIndex) const { Q_UNUSED(proxyIndex); return QModelIndex(); } QModelIndex index(int, int, const QModelIndex&) const { return QModelIndex(); } QModelIndex parent(const QModelIndex&) const { return QModelIndex(); } int rowCount(const QModelIndex&) const { return 0; } int columnCount(const QModelIndex&) const { return 0; } }; // This will be called before the first test function is executed. // It is only called once. void tst_QAbstractProxyModel::initTestCase() { } // This will be called after the last test function is executed. // It is only called once. void tst_QAbstractProxyModel::cleanupTestCase() { } // This will be called before each test function is executed. void tst_QAbstractProxyModel::init() { } // This will be called after every test function. void tst_QAbstractProxyModel::cleanup() { } void tst_QAbstractProxyModel::qabstractproxymodel_data() { } void tst_QAbstractProxyModel::qabstractproxymodel() { SubQAbstractProxyModel model; model.data(QModelIndex()); model.flags(QModelIndex()); model.headerData(0, Qt::Vertical, 0); model.itemData(QModelIndex()); model.mapFromSource(QModelIndex()); model.mapSelectionFromSource(QItemSelection()); model.mapSelectionToSource(QItemSelection()); model.mapToSource(QModelIndex()); model.revert(); model.setSourceModel(0); QCOMPARE(model.sourceModel(), (QAbstractItemModel*)0); model.submit(); } Q_DECLARE_METATYPE(QVariant) Q_DECLARE_METATYPE(QModelIndex) void tst_QAbstractProxyModel::data_data() { QTest::addColumn("proxyIndex"); QTest::addColumn("role"); QTest::addColumn("data"); QTest::newRow("null") << QModelIndex() << 0 << QVariant(); } // public QVariant data(QModelIndex const& proxyIndex, int role = Qt::DisplayRole) const void tst_QAbstractProxyModel::data() { QFETCH(QModelIndex, proxyIndex); QFETCH(int, role); QFETCH(QVariant, data); SubQAbstractProxyModel model; QCOMPARE(model.data(proxyIndex, role), data); } Q_DECLARE_METATYPE(Qt::ItemFlags) void tst_QAbstractProxyModel::flags_data() { QTest::addColumn("index"); QTest::addColumn("flags"); QTest::newRow("null") << QModelIndex() << (Qt::ItemFlags)0; } // public Qt::ItemFlags flags(QModelIndex const& index) const void tst_QAbstractProxyModel::flags() { QFETCH(QModelIndex, index); QFETCH(Qt::ItemFlags, flags); SubQAbstractProxyModel model; QCOMPARE(model.flags(index), flags); } Q_DECLARE_METATYPE(Qt::Orientation) Q_DECLARE_METATYPE(Qt::ItemDataRole) void tst_QAbstractProxyModel::headerData_data() { QTest::addColumn("section"); QTest::addColumn("orientation"); QTest::addColumn("role"); QTest::addColumn("headerData"); QTest::newRow("null") << 0 << Qt::Vertical << Qt::UserRole << QVariant(); } // public QVariant headerData(int section, Qt::Orientation orientation, int role) const void tst_QAbstractProxyModel::headerData() { QFETCH(int, section); QFETCH(Qt::Orientation, orientation); QFETCH(Qt::ItemDataRole, role); QFETCH(QVariant, headerData); SubQAbstractProxyModel model; QCOMPARE(model.headerData(section, orientation, role), headerData); } void tst_QAbstractProxyModel::itemData_data() { QTest::addColumn("index"); QTest::addColumn("count"); QTest::newRow("null") << QModelIndex() << 0; } // public QMap itemData(QModelIndex const& index) const void tst_QAbstractProxyModel::itemData() { QFETCH(QModelIndex, index); QFETCH(int, count); SubQAbstractProxyModel model; QCOMPARE(model.itemData(index).count(), count); } void tst_QAbstractProxyModel::mapFromSource_data() { QTest::addColumn("sourceIndex"); QTest::addColumn("mapFromSource"); QTest::newRow("null") << QModelIndex() << QModelIndex(); } // public QModelIndex mapFromSource(QModelIndex const& sourceIndex) const void tst_QAbstractProxyModel::mapFromSource() { QFETCH(QModelIndex, sourceIndex); QFETCH(QModelIndex, mapFromSource); SubQAbstractProxyModel model; QCOMPARE(model.mapFromSource(sourceIndex), mapFromSource); } Q_DECLARE_METATYPE(QItemSelection) void tst_QAbstractProxyModel::mapSelectionFromSource_data() { QTest::addColumn("selection"); QTest::addColumn("mapSelectionFromSource"); QTest::newRow("null") << QItemSelection() << QItemSelection(); QTest::newRow("empty") << QItemSelection(QModelIndex(), QModelIndex()) << QItemSelection(QModelIndex(), QModelIndex()); } // public QItemSelection mapSelectionFromSource(QItemSelection const& selection) const void tst_QAbstractProxyModel::mapSelectionFromSource() { QFETCH(QItemSelection, selection); QFETCH(QItemSelection, mapSelectionFromSource); SubQAbstractProxyModel model; QCOMPARE(model.mapSelectionFromSource(selection), mapSelectionFromSource); } void tst_QAbstractProxyModel::mapSelectionToSource_data() { QTest::addColumn("selection"); QTest::addColumn("mapSelectionToSource"); QTest::newRow("null") << QItemSelection() << QItemSelection(); QTest::newRow("empty") << QItemSelection(QModelIndex(), QModelIndex()) << QItemSelection(QModelIndex(), QModelIndex()); } // public QItemSelection mapSelectionToSource(QItemSelection const& selection) const void tst_QAbstractProxyModel::mapSelectionToSource() { QFETCH(QItemSelection, selection); QFETCH(QItemSelection, mapSelectionToSource); SubQAbstractProxyModel model; QCOMPARE(model.mapSelectionToSource(selection), mapSelectionToSource); } void tst_QAbstractProxyModel::mapToSource_data() { QTest::addColumn("proxyIndex"); QTest::addColumn("mapToSource"); QTest::newRow("null") << QModelIndex() << QModelIndex(); } // public QModelIndex mapToSource(QModelIndex const& proxyIndex) const void tst_QAbstractProxyModel::mapToSource() { QFETCH(QModelIndex, proxyIndex); QFETCH(QModelIndex, mapToSource); SubQAbstractProxyModel model; QCOMPARE(model.mapToSource(proxyIndex), mapToSource); } void tst_QAbstractProxyModel::revert_data() { //QTest::addColumn("foo"); //QTest::newRow("null") << 0; } // public void revert() void tst_QAbstractProxyModel::revert() { //QFETCH(int, foo); SubQAbstractProxyModel model; model.revert(); } void tst_QAbstractProxyModel::setSourceModel_data() { //QTest::addColumn("sourceModelCount"); //QTest::newRow("null") << 0; } // public void setSourceModel(QAbstractItemModel* sourceModel) void tst_QAbstractProxyModel::setSourceModel() { //QFETCH(int, sourceModelCount); SubQAbstractProxyModel model; QStandardItemModel *sourceModel = new QStandardItemModel(&model); model.setSourceModel(sourceModel); QCOMPARE(model.sourceModel(), static_cast(sourceModel)); QStandardItemModel *sourceModel2 = new QStandardItemModel(&model); model.setSourceModel(sourceModel2); QCOMPARE(model.sourceModel(), static_cast(sourceModel2)); delete sourceModel2; QCOMPARE(model.sourceModel(), static_cast(0)); } void tst_QAbstractProxyModel::submit_data() { QTest::addColumn("submit"); QTest::newRow("null") << true; } // public bool submit() void tst_QAbstractProxyModel::submit() { QFETCH(bool, submit); SubQAbstractProxyModel model; QCOMPARE(model.submit(), submit); } QTEST_MAIN(tst_QAbstractProxyModel) #include "tst_qabstractproxymodel.moc"