summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp66
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"