summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorDavid Faure <david.faure@kdab.com>2018-06-25 17:55:54 +0200
committerDavid Faure <david.faure@kdab.com>2018-06-28 07:00:00 +0000
commit8a73085a0dc1bdb6d25ac4afcd5429018b55b967 (patch)
tree9b026a08424bbf96a955aff359c395629b9b200b /tests/auto
parent9f1568d18c36186c239138306442de2508c79bc0 (diff)
QSortFilterProxyModel unittest: add test for filtered-out-after-setData
The row names for this test were very unspecific. After reverse-engineering what they are testing, I gave them proper descriptive names, which allowed me to notice that there were tests for "filtered in after sourceModel->setData" but not for "filtered out after sourceModel->setData". Change-Id: Ib79108db803ae77fb65d29cf0c0ef96c26655980 Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp39
1 files changed, 33 insertions, 6 deletions
diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 296442b0c7..a7ab1e20d9 100644
--- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -1894,6 +1894,7 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
QTest::addColumn<QStringList>("sourceItems");
QTest::addColumn<int>("sortOrder");
QTest::addColumn<QString>("filter");
+ QTest::addColumn<QStringList>("expectedInitialProxyItems");
QTest::addColumn<bool>("dynamic");
QTest::addColumn<int>("row");
QTest::addColumn<QString>("newValue");
@@ -1901,10 +1902,11 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
QTest::addColumn<IntPairList>("insertIntervals");
QTest::addColumn<QStringList>("proxyItems");
- QTest::newRow("changeSourceData (1)")
+ QTest::newRow("move_to_end_ascending")
<< (QStringList() << "c" << "b" << "a") // sourceItems
<< static_cast<int>(Qt::AscendingOrder) // sortOrder
<< "" // filter
+ << (QStringList() << "a" << "b" << "c") // expectedInitialProxyItems
<< true // dynamic
<< 2 // row
<< "z" // newValue
@@ -1913,10 +1915,11 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
<< (QStringList() << "b" << "c" << "z") // proxyItems
;
- QTest::newRow("changeSourceData (2)")
+ QTest::newRow("move_to_end_descending")
<< (QStringList() << "b" << "c" << "z") // sourceItems
<< static_cast<int>(Qt::DescendingOrder) // sortOrder
<< "" // filter
+ << (QStringList() << "z" << "c" << "b") // expectedInitialProxyItems
<< true // dynamic
<< 1 // row
<< "a" // newValue
@@ -1925,10 +1928,11 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
<< (QStringList() << "z" << "b" << "a") // proxyItems
;
- QTest::newRow("changeSourceData (3)")
+ QTest::newRow("no_op_change")
<< (QStringList() << "a" << "b") // sourceItems
<< static_cast<int>(Qt::DescendingOrder) // sortOrder
<< "" // filter
+ << (QStringList() << "b" << "a") // expectedInitialProxyItems
<< true // dynamic
<< 0 // row
<< "a" // newValue
@@ -1937,10 +1941,11 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
<< (QStringList() << "b" << "a") // proxyItems
;
- QTest::newRow("changeSourceData (4)")
+ QTest::newRow("filtered_out_value_stays_out")
<< (QStringList() << "a" << "b" << "c" << "d") // sourceItems
<< static_cast<int>(Qt::AscendingOrder) // sortOrder
<< "a|c" // filter
+ << (QStringList() << "a" << "c") // expectedInitialProxyItems
<< true // dynamic
<< 1 // row
<< "x" // newValue
@@ -1949,10 +1954,11 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
<< (QStringList() << "a" << "c") // proxyItems
;
- QTest::newRow("changeSourceData (5)")
+ QTest::newRow("filtered_out_now_matches")
<< (QStringList() << "a" << "b" << "c" << "d") // sourceItems
<< static_cast<int>(Qt::AscendingOrder) // sortOrder
<< "a|c|x" // filter
+ << (QStringList() << "a" << "c") // expectedInitialProxyItems
<< true // dynamic
<< 1 // row
<< "x" // newValue
@@ -1961,10 +1967,24 @@ void tst_QSortFilterProxyModel::changeSourceData_data()
<< (QStringList() << "a" << "c" << "x") // proxyItems
;
- QTest::newRow("changeSourceData (6)")
+ QTest::newRow("value_is_now_filtered_out")
+ << (QStringList() << "a" << "b" << "c" << "d") // sourceItems
+ << static_cast<int>(Qt::AscendingOrder) // sortOrder
+ << "a|c" // filter
+ << (QStringList() << "a" << "c") // expectedInitialProxyItems
+ << true // dynamic
+ << 2 // row
+ << "x" // newValue
+ << (IntPairList() << IntPair(1, 1)) // removeIntervals
+ << IntPairList() // insertIntervals
+ << (QStringList() << "a") // proxyItems
+ ;
+
+ QTest::newRow("non_dynamic_filter_does_not_update_sort")
<< (QStringList() << "c" << "b" << "a") // sourceItems
<< static_cast<int>(Qt::AscendingOrder) // sortOrder
<< "" // filter
+ << (QStringList() << "a" << "b" << "c") // expectedInitialProxyItems
<< false // dynamic
<< 2 // row
<< "x" // newValue
@@ -1979,6 +1999,7 @@ void tst_QSortFilterProxyModel::changeSourceData()
QFETCH(QStringList, sourceItems);
QFETCH(int, sortOrder);
QFETCH(QString, filter);
+ QFETCH(QStringList, expectedInitialProxyItems);
QFETCH(bool, dynamic);
QFETCH(int, row);
QFETCH(QString, newValue);
@@ -2004,6 +2025,12 @@ void tst_QSortFilterProxyModel::changeSourceData()
proxy.setFilterRegExp(filter);
+ QCOMPARE(proxy.rowCount(), expectedInitialProxyItems.count());
+ for (int i = 0; i < expectedInitialProxyItems.count(); ++i) {
+ const QModelIndex index = proxy.index(i, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expectedInitialProxyItems.at(i));
+ }
+
QSignalSpy removeSpy(&proxy, &QSortFilterProxyModel::rowsRemoved);
QSignalSpy insertSpy(&proxy, &QSortFilterProxyModel::rowsInserted);