From f137618baf8418002a5a58564705619583ee82fb Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Tue, 26 Aug 2014 19:01:06 +0200 Subject: QRegularExpression: add overloads matching over a QStringRef [ChangeLog][QtCore][QRegularExpression] Support for matching using QStringRef as the subject's string type has been added. Change-Id: Idb956bbbdf4213f9ebe035db32cd37cf3370c6bc Reviewed-by: Marc Mutz --- .../qregularexpression/tst_qregularexpression.cpp | 76 ++++++++++++++++++---- 1 file changed, 62 insertions(+), 14 deletions(-) (limited to 'tests/auto/corelib/tools/qregularexpression') diff --git a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp index 7322384803..2814573863 100644 --- a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp +++ b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp @@ -257,18 +257,15 @@ static void prepareResultForNoMatchType(Match *m, const Match &orig) m->isValid = orig.isValid; } -template -static void testMatch(const QRegularExpression ®exp, - QREMatchFunc matchingMethod, - const QString &subject, - int offset, - QRegularExpression::MatchType matchType, - QRegularExpression::MatchOptions matchOptions, - const Result &result) +template +static void testMatchImpl(const QRegularExpression ®exp, + QREMatchFunc matchingMethod, + const Subject &subject, + int offset, + QRegularExpression::MatchType matchType, + QRegularExpression::MatchOptions matchOptions, + const Result &result) { - if (forceOptimize) - regexp.optimize(); - { const QREMatch m = (regexp.*matchingMethod)(subject, offset, matchType, matchOptions); consistencyCheck(m); @@ -293,6 +290,36 @@ static void testMatch(const QRegularExpression ®exp, } } +template +static void testMatch(const QRegularExpression ®exp, + QREMatchFuncForString matchingMethodForString, + QREMatchFuncForStringRef matchingMethodForStringRef, + const QString &subject, + int offset, + QRegularExpression::MatchType matchType, + QRegularExpression::MatchOptions matchOptions, + const Result &result) +{ + if (forceOptimize) + regexp.optimize(); + + // test with QString as subject type + testMatchImpl(regexp, matchingMethodForString, subject, offset, matchType, matchOptions, result); + + // test with QStringRef as subject type + testMatchImpl(regexp, + matchingMethodForStringRef, + QStringRef(&subject, 0, subject.length()), + offset, + matchType, + matchOptions, + result); +} + +typedef QRegularExpressionMatch (QRegularExpression::*QREMatchStringPMF)(const QString &, int, QRegularExpression::MatchType, QRegularExpression::MatchOptions) const; +typedef QRegularExpressionMatch (QRegularExpression::*QREMatchStringRefPMF)(const QStringRef &, int, QRegularExpression::MatchType, QRegularExpression::MatchOptions) const; +typedef QRegularExpressionMatchIterator (QRegularExpression::*QREGlobalMatchStringPMF)(const QString &, int, QRegularExpression::MatchType, QRegularExpression::MatchOptions) const; +typedef QRegularExpressionMatchIterator (QRegularExpression::*QREGlobalMatchStringRefPMF)(const QStringRef &, int, QRegularExpression::MatchType, QRegularExpression::MatchOptions) const; void tst_QRegularExpression::provideRegularExpressions() { @@ -785,7 +812,14 @@ void tst_QRegularExpression::normalMatch() QFETCH(QRegularExpression::MatchOptions, matchOptions); QFETCH(Match, match); - testMatch(regexp, &QRegularExpression::match, subject, offset, QRegularExpression::NormalMatch, matchOptions, match); + testMatch(regexp, + static_cast(&QRegularExpression::match), + static_cast(&QRegularExpression::match), + subject, + offset, + QRegularExpression::NormalMatch, + matchOptions, + match); } void tst_QRegularExpression::partialMatch_data() @@ -1041,7 +1075,14 @@ void tst_QRegularExpression::partialMatch() QFETCH(QRegularExpression::MatchOptions, matchOptions); QFETCH(Match, match); - testMatch(regexp, &QRegularExpression::match, subject, offset, matchType, matchOptions, match); + testMatch(regexp, + static_cast(&QRegularExpression::match), + static_cast(&QRegularExpression::match), + subject, + offset, + matchType, + matchOptions, + match); } void tst_QRegularExpression::globalMatch_data() @@ -1311,7 +1352,14 @@ void tst_QRegularExpression::globalMatch() QFETCH(QRegularExpression::MatchOptions, matchOptions); QFETCH(QList, matchList); - testMatch(regexp, &QRegularExpression::globalMatch, subject, offset, matchType, matchOptions, matchList); + testMatch(regexp, + static_cast(&QRegularExpression::globalMatch), + static_cast(&QRegularExpression::globalMatch), + subject, + offset, + matchType, + matchOptions, + matchList); } void tst_QRegularExpression::serialize_data() -- cgit v1.2.3