diff options
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r-- | tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp b/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp index f2fe382521..48d4de0aa4 100644 --- a/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp +++ b/tests/auto/corelib/text/qregularexpression/tst_qregularexpression.cpp @@ -252,8 +252,11 @@ void consistencyCheck(const QRegularExpressionMatch &match) QVERIFY((endPos - startPos) == length); QVERIFY(captured == capturedView); } else { - QVERIFY(startPos == -1); - QVERIFY(endPos == -1); + // A null capture can either mean no capture at all, + // or capture of length 0 over a null subject. + QVERIFY(startPos == endPos); + QVERIFY(((startPos == -1) && (endPos == -1)) // no capture + || ((startPos == 0) && (endPos == 0))); // null subject QVERIFY((endPos - startPos) == length); QVERIFY(capturedView.isNull()); } @@ -860,6 +863,24 @@ void tst_QRegularExpression::normalMatch_data() << QRegularExpression::MatchOptions(QRegularExpression::NoMatchOption) << m; + m.clear(); + m.isValid = true; m.hasMatch = true; + m.captured << QString(); + QTest::newRow("empty-in-null-string") << QRegularExpression("") + << QString() + << qsizetype(0) + << QRegularExpression::MatchOptions(QRegularExpression::NoMatchOption) + << m; + + m.clear(); + m.isValid = true; m.hasMatch = true; + m.captured << QString(""); + QTest::newRow("empty-in-empty-string") << QRegularExpression("") + << QString("") + << qsizetype(0) + << QRegularExpression::MatchOptions(QRegularExpression::NoMatchOption) + << m; + // non existing names for capturing groups m.clear(); m.isValid = true; m.hasMatch = true; |