diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp index 7f2a4b64ae..aead57d9fc 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp @@ -38,6 +38,8 @@ public: private slots: void tst_invalid(); void tst_caseSensitivity(); + void tst_keepCaseSensitivity_QTBUG_92260(); + void tst_keepPatternOptions_QTBUG_92260(); }; tst_QSortFilterProxyModelRegularExpression::tst_QSortFilterProxyModelRegularExpression() : @@ -73,5 +75,69 @@ void tst_QSortFilterProxyModelRegularExpression::tst_caseSensitivity() QCOMPARE(proxyModel.rowCount(), 2); } +/*! + This test ensures that when a string pattern is passed to setRegularEpxression, + the options are properly reseted but that the case sensitivity is kept as is. + + */ +void tst_QSortFilterProxyModelRegularExpression::tst_keepCaseSensitivity_QTBUG_92260() +{ + const QLatin1String pattern("test"); + QStringListModel model({ "test", "TesT" }); + QSortFilterProxyModel proxyModel; + proxyModel.setSourceModel(&model); + + QRegularExpression patternWithOptions("Dummy", + QRegularExpression::MultilineOption + | QRegularExpression::CaseInsensitiveOption); + + proxyModel.setFilterRegularExpression(patternWithOptions); + QCOMPARE(proxyModel.filterRegularExpression(), patternWithOptions); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseInsensitive); + + proxyModel.setFilterRegularExpression(pattern); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseInsensitive); + QCOMPARE(proxyModel.filterRegularExpression().patternOptions(), + QRegularExpression::CaseInsensitiveOption); + + patternWithOptions.setPatternOptions(QRegularExpression::MultilineOption); + proxyModel.setFilterRegularExpression(patternWithOptions); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseSensitive); + QCOMPARE(proxyModel.filterRegularExpression(), patternWithOptions); + + proxyModel.setFilterRegularExpression(pattern); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseSensitive); + QCOMPARE(proxyModel.filterRegularExpression().patternOptions(), + QRegularExpression::NoPatternOption); +} + +/*! + This test ensures that when the case sensitivity is changed, it does not nuke + the pattern options that were set before. + */ +void tst_QSortFilterProxyModelRegularExpression::tst_keepPatternOptions_QTBUG_92260() +{ + QStringListModel model({ "test", "TesT" }); + QSortFilterProxyModel proxyModel; + proxyModel.setSourceModel(&model); + + QRegularExpression patternWithOptions("Dummy", + QRegularExpression::MultilineOption + | QRegularExpression::CaseInsensitiveOption); + + proxyModel.setFilterRegularExpression(patternWithOptions); + QCOMPARE(proxyModel.filterRegularExpression(), patternWithOptions); + + proxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseInsensitive); + QCOMPARE(proxyModel.filterRegularExpression().patternOptions(), + patternWithOptions.patternOptions()); + + proxyModel.setFilterCaseSensitivity(Qt::CaseSensitive); + QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseSensitive); + QCOMPARE(proxyModel.filterRegularExpression().patternOptions(), + QRegularExpression::MultilineOption); +} + QTEST_MAIN(tst_QSortFilterProxyModelRegularExpression) #include "tst_qsortfilterproxymodel_regularexpression.moc" |