From ec1878bc4b2ece3889139677441a30b2cef3b9c0 Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Tue, 24 Jan 2023 00:19:37 +0200 Subject: [PATCH] QString: change test data to compile with QT_NO_CAST_FROM_ASCII [1/13] Change test data to compile with NO_CAST_FROM_ASCII uncoditionally where casting from ASCII isn't what's being tested by a unittest. The goal is to add a variant of tst_qstring that is compiled with QT_NO_CAST_FROM_ASCII so that the unittests cover that code path too. The commits are split into smaller chunks (where there is a common link between changed code, that code is put in a commit, otherwise I kept the number of changed lines below ~150) to make reviewing them easier. Change-Id: I14256f1bde7749a3023753dbb7ed8be72cb6bc14 Reviewed-by: Thiago Macieira (cherry picked from commit 6e5c6ef739565829039b4de7845e4b71b11b4c10) Reviewed-by: Qt Cherry-pick Bot --- .../auto/corelib/text/qstring/tst_qstring.cpp | 227 +++++++++--------- 1 file changed, 113 insertions(+), 114 deletions(-) diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp index 701a33a2635..317f77fdf64 100644 --- a/tests/auto/corelib/text/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp @@ -37,6 +37,8 @@ #include "../shared/test_number_shared.h" #include "../../../../shared/localechange.h" +using namespace Qt::StringLiterals; + #define CREATE_VIEW(string) \ const QString padded = QLatin1Char(' ') + string + QLatin1Char(' '); \ const QStringView view = QStringView{ padded }.mid(1, padded.size() - 2); @@ -663,10 +665,10 @@ QString verifyZeroTermination(const QString &str) qsizetype strSize = str.size(); QChar strTerminator = str.constData()[strSize]; - if (QChar('\0') != strTerminator) + if (QChar(u'\0') != strTerminator) return QString::fromLatin1( "*** Result ('%1') not null-terminated: 0x%2 ***").arg(str) - .arg(strTerminator.unicode(), 4, 16, QChar('0')); + .arg(strTerminator.unicode(), 4, 16, QChar(u'0')); // Skip mutating checks on shared strings if (strDataPtr->isShared()) @@ -675,8 +677,8 @@ QString verifyZeroTermination(const QString &str) const QChar *strData = str.constData(); const QString strCopy(strData, strSize); // Deep copy - const_cast(strData)[strSize] = QChar('x'); - if (QChar('x') != str.constData()[strSize]) { + const_cast(strData)[strSize] = QChar(u'x'); + if (QChar(u'x') != str.constData()[strSize]) { return QString::fromLatin1("*** Failed to replace null-terminator in " "result ('%1') ***").arg(str); } @@ -684,7 +686,7 @@ QString verifyZeroTermination(const QString &str) return QString::fromLatin1( "*** Result ('%1') differs from its copy " "after null-terminator was replaced ***").arg(str); } - const_cast(strData)[strSize] = QChar('\0'); // Restore sanity + const_cast(strData)[strSize] = QChar(u'\0'); // Restore sanity return str; } @@ -737,22 +739,19 @@ void tst_QString::replace_qchar_qchar_data() QTest::addColumn("cs"); QTest::addColumn("expected" ); - QTest::newRow("1") << QString("foo") << QChar('o') << QChar('a') << Qt::CaseSensitive - << QString("faa"); - QTest::newRow("2") << QString("foo") << QChar('o') << QChar('a') << Qt::CaseInsensitive - << QString("faa"); - QTest::newRow("3") << QString("foo") << QChar('O') << QChar('a') << Qt::CaseSensitive - << QString("foo"); - QTest::newRow("4") << QString("foo") << QChar('O') << QChar('a') << Qt::CaseInsensitive - << QString("faa"); - QTest::newRow("5") << QString("ababABAB") << QChar('a') << QChar(' ') << Qt::CaseSensitive - << QString(" b bABAB"); - QTest::newRow("6") << QString("ababABAB") << QChar('a') << QChar(' ') << Qt::CaseInsensitive - << QString(" b b B B"); - QTest::newRow("7") << QString("ababABAB") << QChar() << QChar(' ') << Qt::CaseInsensitive - << QString("ababABAB"); - QTest::newRow("8") << QString() << QChar() << QChar('x') << Qt::CaseInsensitive << QString(); - QTest::newRow("9") << QString() << QChar('a') << QChar('x') << Qt::CaseInsensitive << QString(); + QTest::newRow("1") << u"foo"_s << QChar(u'o') << QChar(u'a') << Qt::CaseSensitive << u"faa"_s; + QTest::newRow("2") << u"foo"_s << QChar(u'o') << QChar(u'a') << Qt::CaseInsensitive << u"faa"_s; + QTest::newRow("3") << u"foo"_s << QChar(u'O') << QChar(u'a') << Qt::CaseSensitive << u"foo"_s; + QTest::newRow("4") << u"foo"_s << QChar(u'O') << QChar(u'a') << Qt::CaseInsensitive << u"faa"_s; + QTest::newRow("5") << u"ababABAB"_s << QChar(u'a') << QChar(u' ') << Qt::CaseSensitive + << u" b bABAB"_s; + QTest::newRow("6") << u"ababABAB"_s << QChar(u'a') << QChar(u' ') << Qt::CaseInsensitive + << u" b b B B"_s; + QTest::newRow("7") << u"ababABAB"_s << QChar() << QChar(u' ') << Qt::CaseInsensitive + << u"ababABAB"_s; + QTest::newRow("8") << QString() << QChar() << QChar(u'x') << Qt::CaseInsensitive << QString(); + QTest::newRow("9") << QString() << QChar(u'a') << QChar(u'x') << Qt::CaseInsensitive + << QString(); } void tst_QString::replace_qchar_qchar() @@ -774,29 +773,29 @@ void tst_QString::replace_qchar_qstring_data() QTest::addColumn("cs"); QTest::addColumn("expected" ); - QTest::newRow("1") << QString("foo") << QChar('o') << QString("aA") << Qt::CaseSensitive - << QString("faAaA"); - QTest::newRow("2") << QString("foo") << QChar('o') << QString("aA") << Qt::CaseInsensitive - << QString("faAaA"); - QTest::newRow("3") << QString("foo") << QChar('O') << QString("aA") << Qt::CaseSensitive - << QString("foo"); - QTest::newRow("4") << QString("foo") << QChar('O') << QString("aA") << Qt::CaseInsensitive - << QString("faAaA"); - QTest::newRow("5") << QString("ababABAB") << QChar('a') << QString(" ") << Qt::CaseSensitive - << QString(" b bABAB"); - QTest::newRow("6") << QString("ababABAB") << QChar('a') << QString(" ") << Qt::CaseInsensitive - << QString(" b b B B"); - QTest::newRow("7") << QString("ababABAB") << QChar() << QString(" ") << Qt::CaseInsensitive - << QString("ababABAB"); - QTest::newRow("8") << QString("ababABAB") << QChar() << QString() << Qt::CaseInsensitive - << QString("ababABAB"); - QTest::newRow("null-in-null-with-X") << QString() << QChar() << QString("X") + QTest::newRow("1") << u"foo"_s << QChar(u'o') << u"aA"_s << Qt::CaseSensitive + << u"faAaA"_s; + QTest::newRow("2") << u"foo"_s << QChar(u'o') << u"aA"_s << Qt::CaseInsensitive + << u"faAaA"_s; + QTest::newRow("3") << u"foo"_s << QChar(u'O') << u"aA"_s << Qt::CaseSensitive + << u"foo"_s; + QTest::newRow("4") << u"foo"_s << QChar(u'O') << u"aA"_s << Qt::CaseInsensitive + << u"faAaA"_s; + QTest::newRow("5") << u"ababABAB"_s << QChar(u'a') << u" "_s << Qt::CaseSensitive + << u" b bABAB"_s; + QTest::newRow("6") << u"ababABAB"_s << QChar(u'a') << u" "_s << Qt::CaseInsensitive + << u" b b B B"_s; + QTest::newRow("7") << u"ababABAB"_s << QChar() << u" "_s << Qt::CaseInsensitive + << u"ababABAB"_s; + QTest::newRow("8") << u"ababABAB"_s << QChar() << QString() << Qt::CaseInsensitive + << u"ababABAB"_s; + QTest::newRow("null-in-null-with-X") << QString() << QChar() << u"X"_s << Qt::CaseSensitive << QString(); - QTest::newRow("x-in-null-with-abc") << QString() << QChar('x') << QString("abc") + QTest::newRow("x-in-null-with-abc") << QString() << QChar(u'x') << u"abc"_s << Qt::CaseSensitive << QString(); - QTest::newRow("null-in-empty-with-X") << QString("") << QChar() << QString("X") + QTest::newRow("null-in-empty-with-X") << u""_s << QChar() << u"X"_s << Qt::CaseInsensitive << QString(); - QTest::newRow("x-in-empty-with-abc") << QString("") << QChar('x') << QString("abc") + QTest::newRow("x-in-empty-with-abc") << u""_s << QChar(u'x') << u"abc"_s << Qt::CaseInsensitive << QString(); } @@ -819,41 +818,41 @@ void tst_QString::replace_uint_uint_data() QTest::addColumn("after" ); QTest::addColumn("result" ); - QTest::newRow("empty_rem00") << QString() << 0 << 0 << QString("") << QString(); - QTest::newRow("empty_rem01") << QString() << 0 << 3 << QString("") << QString(); - QTest::newRow("empty_rem02") << QString() << 5 << 3 << QString("") << QString(); + QTest::newRow("empty_rem00") << QString() << 0 << 0 << u""_s << QString(); + QTest::newRow("empty_rem01") << QString() << 0 << 3 << u""_s << QString(); + QTest::newRow("empty_rem02") << QString() << 5 << 3 << u""_s << QString(); - QTest::newRow( "rem00" ) << QString("-<>ABCABCABCABC>") << 0 << 3 << QString("") << QString("ABCABCABCABC>"); - QTest::newRow( "rem01" ) << QString("ABCABCABCABC>") << 1 << 4 << QString("") << QString("ACABCABC>"); - QTest::newRow( "rem04" ) << QString("ACABCABC>") << 8 << 4 << QString("") << QString("ACABCABC"); - QTest::newRow( "rem05" ) << QString("ACABCABC") << 7 << 1 << QString("") << QString("ACABCAB"); - QTest::newRow( "rem06" ) << QString("ACABCAB") << 4 << 0 << QString("") << QString("ACABCAB"); + QTest::newRow( "rem00" ) << u"-<>ABCABCABCABC>"_s << 0 << 3 << u""_s << u"ABCABCABCABC>"_s; + QTest::newRow( "rem01" ) << u"ABCABCABCABC>"_s << 1 << 4 << u""_s << u"ACABCABC>"_s; + QTest::newRow( "rem04" ) << u"ACABCABC>"_s << 8 << 4 << u""_s << u"ACABCABC"_s; + QTest::newRow( "rem05" ) << u"ACABCABC"_s << 7 << 1 << u""_s << u"ACABCAB"_s; + QTest::newRow( "rem06" ) << u"ACABCAB"_s << 4 << 0 << u""_s << u"ACABCAB"_s; - QTest::newRow("empty_rep00") << QString() << 0 << 0 << QString("X") << QString("X"); - QTest::newRow("empty_rep01") << QString() << 0 << 3 << QString("X") << QString("X"); - QTest::newRow("empty_rep02") << QString() << 5 << 3 << QString("X") << QString(); + QTest::newRow("empty_rep00") << QString() << 0 << 0 << u"X"_s << u"X"_s; + QTest::newRow("empty_rep01") << QString() << 0 << 3 << u"X"_s << u"X"_s; + QTest::newRow("empty_rep02") << QString() << 5 << 3 << u"X"_s << QString(); - QTest::newRow( "rep00" ) << QString("ACABCAB") << 4 << 0 << QString("X") << QString("ACABXCAB"); - QTest::newRow( "rep01" ) << QString("ACABXCAB") << 4 << 1 << QString("Y") << QString("ACABYCAB"); - QTest::newRow( "rep02" ) << QString("ACABYCAB") << 4 << 1 << QString("") << QString("ACABCAB"); - QTest::newRow( "rep03" ) << QString("ACABCAB") << 0 << 9999 << QString("XX") << QString("XX"); - QTest::newRow( "rep04" ) << QString("XX") << 0 << 9999 << QString("") << QString(""); - QTest::newRow( "rep05" ) << QString("ACABCAB") << 0 << 2 << QString("XX") << QString("XXABCAB"); - QTest::newRow( "rep06" ) << QString("ACABCAB") << 1 << 2 << QString("XX") << QString("AXXBCAB"); - QTest::newRow( "rep07" ) << QString("ACABCAB") << 2 << 2 << QString("XX") << QString("ACXXCAB"); - QTest::newRow( "rep08" ) << QString("ACABCAB") << 3 << 2 << QString("XX") << QString("ACAXXAB"); - QTest::newRow( "rep09" ) << QString("ACABCAB") << 4 << 2 << QString("XX") << QString("ACABXXB"); - QTest::newRow( "rep10" ) << QString("ACABCAB") << 5 << 2 << QString("XX") << QString("ACABCXX"); - QTest::newRow( "rep11" ) << QString("ACABCAB") << 6 << 2 << QString("XX") << QString("ACABCAXX"); - QTest::newRow( "rep12" ) << QString() << 0 << 10 << QString("X") << QString("X"); - QTest::newRow( "rep13" ) << QString("short") << 0 << 10 << QString("X") << QString("X"); - QTest::newRow( "rep14" ) << QString() << 0 << 10 << QString("XX") << QString("XX"); - QTest::newRow( "rep15" ) << QString("short") << 0 << 10 << QString("XX") << QString("XX"); + QTest::newRow( "rep00" ) << u"ACABCAB"_s << 4 << 0 << u"X"_s << u"ACABXCAB"_s; + QTest::newRow( "rep01" ) << u"ACABXCAB"_s << 4 << 1 << u"Y"_s << u"ACABYCAB"_s; + QTest::newRow( "rep02" ) << u"ACABYCAB"_s << 4 << 1 << u""_s << u"ACABCAB"_s; + QTest::newRow( "rep03" ) << u"ACABCAB"_s << 0 << 9999 << u"XX"_s << u"XX"_s; + QTest::newRow( "rep04" ) << u"XX"_s << 0 << 9999 << u""_s << u""_s; + QTest::newRow( "rep05" ) << u"ACABCAB"_s << 0 << 2 << u"XX"_s << u"XXABCAB"_s; + QTest::newRow( "rep06" ) << u"ACABCAB"_s << 1 << 2 << u"XX"_s << u"AXXBCAB"_s; + QTest::newRow( "rep07" ) << u"ACABCAB"_s << 2 << 2 << u"XX"_s << u"ACXXCAB"_s; + QTest::newRow( "rep08" ) << u"ACABCAB"_s << 3 << 2 << u"XX"_s << u"ACAXXAB"_s; + QTest::newRow( "rep09" ) << u"ACABCAB"_s << 4 << 2 << u"XX"_s << u"ACABXXB"_s; + QTest::newRow( "rep10" ) << u"ACABCAB"_s << 5 << 2 << u"XX"_s << u"ACABCXX"_s; + QTest::newRow( "rep11" ) << u"ACABCAB"_s << 6 << 2 << u"XX"_s << u"ACABCAXX"_s; + QTest::newRow( "rep12" ) << QString() << 0 << 10 << u"X"_s << u"X"_s; + QTest::newRow( "rep13" ) << u"short"_s << 0 << 10 << u"X"_s << u"X"_s; + QTest::newRow( "rep14" ) << QString() << 0 << 10 << u"XX"_s << u"XX"_s; + QTest::newRow( "rep15" ) << u"short"_s << 0 << 10 << u"XX"_s << u"XX"_s; // This is a regression test for an old bug where QString would add index and len parameters, // potentially causing integer overflow. - QTest::newRow( "no overflow" ) << QString("ACABCAB") << 1 << INT_MAX - 1 << QString("") << QString("A"); - QTest::newRow( "overflow" ) << QString("ACABCAB") << 1 << INT_MAX << QString("") << QString("A"); + QTest::newRow( "no overflow" ) << u"ACABCAB"_s << 1 << INT_MAX - 1 << u""_s << u"A"_s; + QTest::newRow( "overflow" ) << u"ACABCAB"_s << 1 << INT_MAX << u""_s << u"A"_s; } void tst_QString::replace_string_data() @@ -864,51 +863,51 @@ void tst_QString::replace_string_data() QTest::addColumn("result" ); QTest::addColumn("bcs" ); - QTest::newRow( "rem00" ) << QString("") << QString("") << QString("") << QString("") << true; - QTest::newRow( "rem01" ) << QString("A") << QString("") << QString("") << QString("A") << true; - QTest::newRow( "rem02" ) << QString("A") << QString("A") << QString("") << QString("") << true; - QTest::newRow( "rem03" ) << QString("A") << QString("B") << QString("") << QString("A") << true; - QTest::newRow( "rem04" ) << QString("AA") << QString("A") << QString("") << QString("") << true; - QTest::newRow( "rem05" ) << QString("AB") << QString("A") << QString("") << QString("B") << true; - QTest::newRow( "rem06" ) << QString("AB") << QString("B") << QString("") << QString("A") << true; - QTest::newRow( "rem07" ) << QString("AB") << QString("C") << QString("") << QString("AB") << true; - QTest::newRow( "rem08" ) << QString("ABA") << QString("A") << QString("") << QString("B") << true; - QTest::newRow( "rem09" ) << QString("ABA") << QString("B") << QString("") << QString("AA") << true; - QTest::newRow( "rem10" ) << QString("ABA") << QString("C") << QString("") << QString("ABA") << true; - QTest::newRow( "rem11" ) << QString("banana") << QString("an") << QString("") << QString("ba") << true; - QTest::newRow( "rem12" ) << QString("") << QString("A") << QString("") << QString("") << true; - QTest::newRow( "rem13" ) << QString("") << QString("A") << QString() << QString("") << true; - QTest::newRow( "rem14" ) << QString() << QString("A") << QString("") << QString() << true; - QTest::newRow( "rem15" ) << QString() << QString("A") << QString() << QString() << true; - QTest::newRow( "rem16" ) << QString() << QString("") << QString("") << QString("") << true; - QTest::newRow( "rem17" ) << QString("") << QString() << QString("") << QString("") << true; - QTest::newRow( "rem18" ) << QString("a") << QString("a") << QString("") << QString("") << false; - QTest::newRow( "rem19" ) << QString("A") << QString("A") << QString("") << QString("") << false; - QTest::newRow( "rem20" ) << QString("a") << QString("A") << QString("") << QString("") << false; - QTest::newRow( "rem21" ) << QString("A") << QString("a") << QString("") << QString("") << false; - QTest::newRow( "rem22" ) << QString("Alpha beta") << QString("a") << QString("") << QString("lph bet") << false; - QTest::newRow( "rem23" ) << QString("+00:00") << QString(":") << QString("") << QString("+0000") << false; + QTest::newRow( "rem00" ) << u""_s << u""_s << u""_s << u""_s << true; + QTest::newRow( "rem01" ) << u"A"_s << u""_s << u""_s << u"A"_s << true; + QTest::newRow( "rem02" ) << u"A"_s << u"A"_s << u""_s << u""_s << true; + QTest::newRow( "rem03" ) << u"A"_s << u"B"_s << u""_s << u"A"_s << true; + QTest::newRow( "rem04" ) << u"AA"_s << u"A"_s << u""_s << u""_s << true; + QTest::newRow( "rem05" ) << u"AB"_s << u"A"_s << u""_s << u"B"_s << true; + QTest::newRow( "rem06" ) << u"AB"_s << u"B"_s << u""_s << u"A"_s << true; + QTest::newRow( "rem07" ) << u"AB"_s << u"C"_s << u""_s << u"AB"_s << true; + QTest::newRow( "rem08" ) << u"ABA"_s << u"A"_s << u""_s << u"B"_s << true; + QTest::newRow( "rem09" ) << u"ABA"_s << u"B"_s << u""_s << u"AA"_s << true; + QTest::newRow( "rem10" ) << u"ABA"_s << u"C"_s << u""_s << u"ABA"_s << true; + QTest::newRow( "rem11" ) << u"banana"_s << u"an"_s << u""_s << u"ba"_s << true; + QTest::newRow( "rem12" ) << u""_s << u"A"_s << u""_s << u""_s << true; + QTest::newRow( "rem13" ) << u""_s << u"A"_s << QString() << u""_s << true; + QTest::newRow( "rem14" ) << QString() << u"A"_s << u""_s << QString() << true; + QTest::newRow( "rem15" ) << QString() << u"A"_s << QString() << QString() << true; + QTest::newRow( "rem16" ) << QString() << u""_s << u""_s << u""_s << true; + QTest::newRow( "rem17" ) << u""_s << QString() << u""_s << u""_s << true; + QTest::newRow( "rem18" ) << u"a"_s << u"a"_s << u""_s << u""_s << false; + QTest::newRow( "rem19" ) << u"A"_s << u"A"_s << u""_s << u""_s << false; + QTest::newRow( "rem20" ) << u"a"_s << u"A"_s << u""_s << u""_s << false; + QTest::newRow( "rem21" ) << u"A"_s << u"a"_s << u""_s << u""_s << false; + QTest::newRow( "rem22" ) << u"Alpha beta"_s << u"a"_s << u""_s << u"lph bet"_s << false; + QTest::newRow( "rem23" ) << u"+00:00"_s << u":"_s << u""_s << u"+0000"_s << false; - QTest::newRow( "rep00" ) << QString("ABC") << QString("B") << QString("-") << QString("A-C") << true; - QTest::newRow( "rep01" ) << QString("$()*+.?[\\]^{|}") << QString("$()*+.?[\\]^{|}") << QString("X") << QString("X") << true; - QTest::newRow( "rep02" ) << QString("ABCDEF") << QString("") << QString("X") << QString("XAXBXCXDXEXFX") << true; - QTest::newRow( "rep03" ) << QString("") << QString("") << QString("X") << QString("X") << true; - QTest::newRow( "rep04" ) << QString("a") << QString("a") << QString("b") << QString("b") << false; - QTest::newRow( "rep05" ) << QString("A") << QString("A") << QString("b") << QString("b") << false; - QTest::newRow( "rep06" ) << QString("a") << QString("A") << QString("b") << QString("b") << false; - QTest::newRow( "rep07" ) << QString("A") << QString("a") << QString("b") << QString("b") << false; - QTest::newRow( "rep08" ) << QString("a") << QString("a") << QString("a") << QString("a") << false; - QTest::newRow( "rep09" ) << QString("A") << QString("A") << QString("a") << QString("a") << false; - QTest::newRow( "rep10" ) << QString("a") << QString("A") << QString("a") << QString("a") << false; - QTest::newRow( "rep11" ) << QString("A") << QString("a") << QString("a") << QString("a") << false; - QTest::newRow( "rep12" ) << QString("Alpha beta") << QString("a") << QString("o") << QString("olpho beto") << false; - QTest::newRow( "rep13" ) << QString() << QString("") << QString("A") << QString("A") << true; - QTest::newRow( "rep14" ) << QString("") << QString() << QString("A") << QString("A") << true; - QTest::newRow( "rep15" ) << QString("fooxbarxbazxblub") << QString("x") << QString("yz") << QString("fooyzbaryzbazyzblub") << true; - QTest::newRow( "rep16" ) << QString("fooxbarxbazxblub") << QString("x") << QString("z") << QString("foozbarzbazzblub") << true; - QTest::newRow( "rep17" ) << QString("fooxybarxybazxyblub") << QString("xy") << QString("z") << QString("foozbarzbazzblub") << true; - QTest::newRow("rep18") << QString() << QString() << QString("X") << QString("X") << false; - QTest::newRow("rep19") << QString() << QString("A") << QString("X") << QString("") << false; + QTest::newRow( "rep00" ) << u"ABC"_s << u"B"_s << u"-"_s << u"A-C"_s << true; + QTest::newRow( "rep01" ) << u"$()*+.?[\\]^{|}"_s << u"$()*+.?[\\]^{|}"_s << u"X"_s << u"X"_s << true; + QTest::newRow( "rep02" ) << u"ABCDEF"_s << u""_s << u"X"_s << u"XAXBXCXDXEXFX"_s << true; + QTest::newRow( "rep03" ) << u""_s << u""_s << u"X"_s << u"X"_s << true; + QTest::newRow( "rep04" ) << u"a"_s << u"a"_s << u"b"_s << u"b"_s << false; + QTest::newRow( "rep05" ) << u"A"_s << u"A"_s << u"b"_s << u"b"_s << false; + QTest::newRow( "rep06" ) << u"a"_s << u"A"_s << u"b"_s << u"b"_s << false; + QTest::newRow( "rep07" ) << u"A"_s << u"a"_s << u"b"_s << u"b"_s << false; + QTest::newRow( "rep08" ) << u"a"_s << u"a"_s << u"a"_s << u"a"_s << false; + QTest::newRow( "rep09" ) << u"A"_s << u"A"_s << u"a"_s << u"a"_s << false; + QTest::newRow( "rep10" ) << u"a"_s << u"A"_s << u"a"_s << u"a"_s << false; + QTest::newRow( "rep11" ) << u"A"_s << u"a"_s << u"a"_s << u"a"_s << false; + QTest::newRow( "rep12" ) << u"Alpha beta"_s << u"a"_s << u"o"_s << u"olpho beto"_s << false; + QTest::newRow( "rep13" ) << QString() << u""_s << u"A"_s << u"A"_s << true; + QTest::newRow( "rep14" ) << u""_s << QString() << u"A"_s << u"A"_s << true; + QTest::newRow( "rep15" ) << u"fooxbarxbazxblub"_s << u"x"_s << u"yz"_s << u"fooyzbaryzbazyzblub"_s << true; + QTest::newRow( "rep16" ) << u"fooxbarxbazxblub"_s << u"x"_s << u"z"_s << u"foozbarzbazzblub"_s << true; + QTest::newRow( "rep17" ) << u"fooxybarxybazxyblub"_s << u"xy"_s << u"z"_s << u"foozbarzbazzblub"_s << true; + QTest::newRow("rep18") << QString() << QString() << u"X"_s << u"X"_s << false; + QTest::newRow("rep19") << QString() << u"A"_s << u"X"_s << u""_s << false; } #if QT_CONFIG(regularexpression)