QString/QByteArray: add tests for replace() with negative lengths

Change-Id: I6bb67a65fdb0d61e1e1e36dd271c98df7849a305
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Ahmad Samir 2025-05-14 15:35:19 +03:00
parent ef0b8bc730
commit 1b66b6533e
2 changed files with 14 additions and 0 deletions

View File

@ -1480,6 +1480,12 @@ void tst_QByteArray::replace_pos_len_data()
// index out of range // index out of range
QTest::newRow("5") << QByteArray() << 3 << 0 << QByteArray("hi") QTest::newRow("5") << QByteArray() << 3 << 0 << QByteArray("hi")
<< QByteArray(); << QByteArray();
QTest::newRow("negative-before-len-1") << QByteArray("yyyy") << 3 << -1
<< QByteArray("ZZZZ") << QByteArray("yyyZZZZy");
QTest::newRow("negative-before-len-2") << QByteArray("yyyy") << 3 << -2
<< QByteArray("ZZZZ") << QByteArray("yyyZZZZy");
// Optimized path // Optimized path
QTest::newRow("6") << QByteArray("abcdef") << 3 << 12 QTest::newRow("6") << QByteArray("abcdef") << 3 << 12
<< QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl"); << QByteArray("abcdefghijkl") << QByteArray("abcabcdefghijkl");

View File

@ -1013,6 +1013,14 @@ void tst_QString::replace_pos_len_data()
<< qsizetype(0) << qsizetype(10) << u"XX"_s << qsizetype(0) << qsizetype(10) << u"XX"_s
<< u"XX"_s; << u"XX"_s;
// TODO: Fix, broken unexpected behavior
QTest::newRow("negative-before-len-1") << u"yyyy"_s
<< qsizetype(3) << qsizetype(-1) << u"ZZZZ"_s
<< u"yyyZZZZyy"_s;
QTest::newRow("negative-before-len-2") << u"yyyy"_s
<< qsizetype(3) << qsizetype(-2) << u"ZZZZ"_s
<< u"yyyZZZZyyy"_s;
// This is a regression test for an old bug where QString would add index and len parameters, // This is a regression test for an old bug where QString would add index and len parameters,
// potentially causing integer overflow. // potentially causing integer overflow.
constexpr qsizetype maxSize = std::numeric_limits<qsizetype>::max(); constexpr qsizetype maxSize = std::numeric_limits<qsizetype>::max();