Rework tst_QString::remove_regexp() and its data table
The test was producing a warning about the invalid test, for which replace_regexp() had anticipated that warning; do the same in remove_regexp(). The two tests shared a date() method, but the remove test was a no-op on the tests with non-empty replacement text; move the column set-up and data rows with empty replacement to remove's data() function, from replace's, and reverse the direction of calling each other between data() functions, so each test gets the cases that are relevant to it and no spurious PASSes happen for no-op tests. In the process, give moved test-cases informative names; relocate the (entirely re-written) remove data function to beside its test; and eliminate a pointless local variable from both tests (it used to be needed when testing both QRegExp and QRegularExpression). Pick-to: 6.2 Change-Id: I93dcfc444f984edf5c029f99306aff6bc95d554a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
a13942791d
commit
826e1963e3
@ -696,13 +696,6 @@ void tst_QString::remove_string_data()
|
||||
replace_string_data();
|
||||
}
|
||||
|
||||
#if QT_CONFIG(regularexpression)
|
||||
void tst_QString::remove_regexp_data()
|
||||
{
|
||||
replace_regexp_data();
|
||||
}
|
||||
#endif
|
||||
|
||||
void tst_QString::indexOf3_data()
|
||||
{
|
||||
indexOf2_data();
|
||||
@ -892,17 +885,9 @@ void tst_QString::replace_string_data()
|
||||
#if QT_CONFIG(regularexpression)
|
||||
void tst_QString::replace_regexp_data()
|
||||
{
|
||||
QTest::addColumn<QString>("string" );
|
||||
QTest::addColumn<QString>("regexp" );
|
||||
QTest::addColumn<QString>("after" );
|
||||
QTest::addColumn<QString>("result" );
|
||||
|
||||
QTest::newRow( "rem00" ) << QString("alpha") << QString("a+") << QString("") << QString("lph");
|
||||
QTest::newRow( "rem01" ) << QString("banana") << QString("^.a") << QString("") << QString("nana");
|
||||
QTest::newRow( "rem02" ) << QString("") << QString("^.a") << QString("") << QString("");
|
||||
QTest::newRow( "rem03" ) << QString("") << QString("^.a") << QString() << QString("");
|
||||
QTest::newRow( "rem04" ) << QString() << QString("^.a") << QString("") << QString();
|
||||
QTest::newRow( "rem05" ) << QString() << QString("^.a") << QString() << QString();
|
||||
remove_regexp_data(); // Sets up the columns, adds rows with empty replacement text.
|
||||
// Columns (all QString): string, regexp, after, result; string.replace(regexp, after) == result
|
||||
// Test-cases with empty after (replacement text, third column) go in remove_regexp_data()
|
||||
|
||||
QTest::newRow( "rep00" ) << QString("A <i>bon mot</i>.") << QString("<i>([^<]*)</i>") << QString("\\emph{\\1}") << QString("A \\emph{bon mot}.");
|
||||
QTest::newRow( "rep01" ) << QString("banana") << QString("^.a()") << QString("\\1") << QString("nana");
|
||||
@ -930,7 +915,6 @@ void tst_QString::replace_regexp_data()
|
||||
<< QString("a9a8a7a6a5nmlkjii0hh0gg0ff0ee0dd0cc0bb0a");
|
||||
QTest::newRow("backref10") << QString("abc") << QString("((((((((((((((abc))))))))))))))")
|
||||
<< QString("\\0\\01\\011") << QString("\\0\\01\\011");
|
||||
QTest::newRow("invalid") << QString("") << QString("invalid regex\\") << QString("") << QString("");
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -3206,12 +3190,11 @@ void tst_QString::replace_regexp()
|
||||
QFETCH( QString, regexp );
|
||||
QFETCH( QString, after );
|
||||
|
||||
QString s2 = string;
|
||||
QRegularExpression regularExpression(regexp);
|
||||
if (!regularExpression.isValid())
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::replace: invalid QRegularExpression object");
|
||||
s2.replace( regularExpression, after );
|
||||
QTEST( s2, "result" );
|
||||
string.replace(regularExpression, after);
|
||||
QTEST(string, "result");
|
||||
}
|
||||
|
||||
void tst_QString::replace_regexp_extra()
|
||||
@ -3298,19 +3281,42 @@ void tst_QString::remove_string()
|
||||
}
|
||||
|
||||
#if QT_CONFIG(regularexpression)
|
||||
void tst_QString::remove_regexp_data()
|
||||
{
|
||||
QTest::addColumn<QString>("string");
|
||||
QTest::addColumn<QString>("regexp");
|
||||
QTest::addColumn<QString>("after"); // For the benefit of replace_regexp; empty = remove.
|
||||
QTest::addColumn<QString>("result");
|
||||
// string.remove(regexp) == result
|
||||
|
||||
QTest::newRow("alpha:s/a+//")
|
||||
<< QString("alpha") << QString("a+") << QString("") << QString("lph");
|
||||
QTest::newRow("banana:s/^.a//")
|
||||
<< QString("banana") << QString("^.a") << QString("") << QString("nana");
|
||||
QTest::newRow("<empty>:s/^.a//")
|
||||
<< QString("") << QString("^.a") << QString("") << QString("");
|
||||
// The null-vs-empty distinction in after is only relevant to repplace_regexp(), but
|
||||
// include both cases here to keep after's "empty here, non-empty there" rule simple.
|
||||
QTest::newRow("<empty>:s/^.a/<null>/")
|
||||
<< QString("") << QString("^.a") << QString() << QString("");
|
||||
QTest::newRow("<null>:s/^.a//") << QString() << QString("^.a") << QString("") << QString();
|
||||
QTest::newRow("<null>s/.a/<null>/") << QString() << QString("^.a") << QString() << QString();
|
||||
QTest::newRow("invalid")
|
||||
<< QString("") << QString("invalid regex\\") << QString("") << QString("");
|
||||
}
|
||||
|
||||
void tst_QString::remove_regexp()
|
||||
{
|
||||
QFETCH( QString, string );
|
||||
QFETCH( QString, regexp );
|
||||
QFETCH( QString, after );
|
||||
QTEST(QString(), "after"); // non-empty replacement text tests should go in replace_regexp_data()
|
||||
|
||||
if ( after.length() == 0 ) {
|
||||
QString s2 = string;
|
||||
s2.remove( QRegularExpression(regexp) );
|
||||
QTEST( s2, "result" );
|
||||
} else {
|
||||
QCOMPARE( 0, 0 ); // shut Qt Test
|
||||
}
|
||||
QRegularExpression regularExpression(regexp);
|
||||
// remove() delegates to replace(), which produces this warning:
|
||||
if (!regularExpression.isValid())
|
||||
QTest::ignoreMessage(QtWarningMsg, "QString::replace: invalid QRegularExpression object");
|
||||
string.remove(regularExpression);
|
||||
QTEST(string, "result");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user