File indexing completed on 2024-12-01 03:41:33
0001 /* 0002 SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <QAbstractItemModelTester> 0008 #include <QSignalSpy> 0009 #include <QStandardItemModel> 0010 #include <QTest> 0011 0012 #include <KColumnHeadersModel> 0013 0014 class KColumnHeadersModelTest : public QObject 0015 { 0016 Q_OBJECT 0017 0018 private Q_SLOTS: 0019 void testStatic() 0020 { 0021 auto model = new KColumnHeadersModel{this}; 0022 0023 auto sourceModel = new QStandardItemModel{this}; 0024 sourceModel->setHorizontalHeaderLabels( 0025 {QStringLiteral("Test 1"), QStringLiteral("Test 2"), QStringLiteral("Test 3"), QStringLiteral("Test 4"), QStringLiteral("Test 5")}); 0026 0027 model->setSourceModel(sourceModel); 0028 0029 new QAbstractItemModelTester(model, this); 0030 0031 QCOMPARE(model->rowCount(), 5); 0032 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0033 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0034 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0035 QCOMPARE(model->data(model->index(3, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0036 QCOMPARE(model->data(model->index(4, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 5")); 0037 0038 QSignalSpy spy{model, &QAbstractItemModel::dataChanged}; 0039 QVERIFY(spy.isValid()); 0040 0041 sourceModel->setHorizontalHeaderLabels( 0042 {QStringLiteral("Test 5"), QStringLiteral("Test 4"), QStringLiteral("Test 3"), QStringLiteral("Test 2"), QStringLiteral("Test 1")}); 0043 0044 QCOMPARE(spy.count(), 4); 0045 } 0046 0047 void testAddColumns() 0048 { 0049 auto model = new KColumnHeadersModel{this}; 0050 auto sourceModel = new QStandardItemModel{this}; 0051 sourceModel->setHorizontalHeaderLabels({QStringLiteral("Test 1"), QStringLiteral("Test 2")}); 0052 model->setSourceModel(sourceModel); 0053 0054 new QAbstractItemModelTester(model, this); 0055 0056 QSignalSpy spy{model, &QAbstractItemModel::rowsInserted}; 0057 QVERIFY(spy.isValid()); 0058 0059 QCOMPARE(model->rowCount(), 2); 0060 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0061 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0062 0063 sourceModel->setHorizontalHeaderLabels({QStringLiteral("Test 1"), QStringLiteral("Test 2"), QStringLiteral("Test 3")}); 0064 0065 QCOMPARE(spy.count(), 1); 0066 QCOMPARE(model->rowCount(), 3); 0067 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0068 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0069 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0070 0071 sourceModel->setHorizontalHeaderLabels( 0072 {QStringLiteral("Test 1"), QStringLiteral("Test 2"), QStringLiteral("Test 3"), QStringLiteral("Test 4"), QStringLiteral("Test 5")}); 0073 0074 QCOMPARE(spy.count(), 2); 0075 QCOMPARE(model->rowCount(), 5); 0076 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0077 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0078 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0079 QCOMPARE(model->data(model->index(3, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0080 QCOMPARE(model->data(model->index(4, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 5")); 0081 0082 sourceModel->setHorizontalHeaderLabels({QStringLiteral("Test 1"), 0083 QStringLiteral("Test 2"), 0084 QStringLiteral("Test 6"), 0085 QStringLiteral("Test 3"), 0086 QStringLiteral("Test 4"), 0087 QStringLiteral("Test 5")}); 0088 0089 QCOMPARE(spy.count(), 3); 0090 QCOMPARE(model->rowCount(), 6); 0091 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0092 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0093 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 6")); 0094 QCOMPARE(model->data(model->index(3, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0095 QCOMPARE(model->data(model->index(4, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0096 QCOMPARE(model->data(model->index(5, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 5")); 0097 } 0098 0099 void testRemoveColumns() 0100 { 0101 auto model = new KColumnHeadersModel{this}; 0102 0103 auto sourceModel = new QStandardItemModel{this}; 0104 sourceModel->setHorizontalHeaderLabels( 0105 {QStringLiteral("Test 1"), QStringLiteral("Test 2"), QStringLiteral("Test 3"), QStringLiteral("Test 4"), QStringLiteral("Test 5")}); 0106 0107 model->setSourceModel(sourceModel); 0108 0109 new QAbstractItemModelTester(model, this); 0110 0111 QSignalSpy spy{model, &QAbstractItemModel::rowsRemoved}; 0112 QVERIFY(spy.isValid()); 0113 0114 QCOMPARE(model->rowCount(), 5); 0115 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0116 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0117 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0118 QCOMPARE(model->data(model->index(3, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0119 QCOMPARE(model->data(model->index(4, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 5")); 0120 0121 sourceModel->takeColumn(4); 0122 0123 QCOMPARE(spy.count(), 1); 0124 0125 QCOMPARE(model->rowCount(), 4); 0126 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0127 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 2")); 0128 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0129 QCOMPARE(model->data(model->index(3, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0130 0131 sourceModel->takeColumn(1); 0132 0133 QCOMPARE(spy.count(), 2); 0134 0135 QCOMPARE(model->rowCount(), 3); 0136 QCOMPARE(model->data(model->index(0, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 1")); 0137 QCOMPARE(model->data(model->index(1, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 3")); 0138 QCOMPARE(model->data(model->index(2, 0), Qt::DisplayRole).toString(), QStringLiteral("Test 4")); 0139 } 0140 }; 0141 0142 QTEST_MAIN(KColumnHeadersModelTest) 0143 0144 #include "kcolumnheadersmodeltest.moc"