tst_QByteArray: check replace() doesn't replace the terminating \0

It doesn't.

Pick-to: 6.8 6.5 5.15
Change-Id: Ica3fb2b8a65d0f9d14490ecdcce72eba82258916
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit fff69288781bf946ad645fd781ad51ab48ebcbdc)
This commit is contained in:
Marc Mutz 2025-02-13 21:35:19 +01:00
parent c653cf1171
commit 8e2c6a5904

View File

@ -78,6 +78,7 @@ private slots:
void replaceWithSpecifiedLength();
void replaceWithEmptyNeedleInsertsBeforeEachChar_data();
void replaceWithEmptyNeedleInsertsBeforeEachChar();
void replaceDoesNotReplaceTheTerminatingNull();
void number();
void number_double_data();
@ -1608,6 +1609,23 @@ void tst_QByteArray::replaceWithEmptyNeedleInsertsBeforeEachChar()
}
}
void tst_QByteArray::replaceDoesNotReplaceTheTerminatingNull()
{
// Try really hard to replace the implicit terminating '\0' byte:
constexpr char content[] = "Hello, World!";
#define CHECK(...) do { \
QByteArray ba(content); \
QCOMPARE(std::as_const(ba).data()[ba.size()], '\0'); \
ba.replace(__VA_ARGS__); \
QCOMPARE(ba, content); \
QCOMPARE(std::as_const(ba).data()[ba.size()], '\0'); \
} while (false)
CHECK('\0', 'a');
CHECK(QByteArrayView{"!", 2}, // including \0, matches end of `ba`
QByteArrayView{"!!"});
#undef CHECK
}
void tst_QByteArray::number()
{
QCOMPARE(QByteArray::number(quint64(0)), QByteArray("0"));