diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2021-04-25 22:47:39 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-04-27 07:39:58 +0000 |
commit | 85ae84dc9e4e5d6fbdb5a5e26e363716e4cb8d5c (patch) | |
tree | 711adec5eecaaf493f04fe1b45904d797b848bbc /tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp | |
parent | 24c75a28a61b0a4d2898dea5f022a82b1d6b7878 (diff) |
Add more tests for QList/QString/QBA
The major part is stability tests for QList operations,
Also added std::shared_ptr to the Custom type. shared_ptr
accesses the memory which does not directly belong to
QList, so using it inside a passed-to-qlist type is
beneficial (e.g. ASan could catch extra issues)
Basic prepend-aware cases added to QString/QBA tests
Task-number: QTBUG-93019
Change-Id: I50e742bdf10ea9de2de66539a7dbb9abc4352f82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit adb41bbe00b2b853d4dd26cd9ee77ae5ed541576)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp')
-rw-r--r-- | tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp index 7f9bff844f..1f7e997653 100644 --- a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp +++ b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp @@ -894,6 +894,27 @@ void tst_QByteArray::append() QByteArray twoChars("ab"); tenChars.append(twoChars); QCOMPARE(tenChars.capacity(), 10); + + { + QByteArray prepended("abcd"); + prepended.prepend('a'); + const qsizetype freeAtEnd = prepended.data_ptr()->freeSpaceAtEnd(); + QVERIFY(prepended.size() + freeAtEnd < prepended.capacity()); + prepended += QByteArray(freeAtEnd, 'b'); + prepended.append('c'); + QCOMPARE(prepended, QByteArray("aabcd") + QByteArray(freeAtEnd, 'b') + QByteArray("c")); + } + + { + QByteArray prepended2("aaaaaaaaaa"); + while (prepended2.size()) + prepended2.remove(0, 1); + QVERIFY(prepended2.data_ptr()->freeSpaceAtBegin() > 0); + QByteArray array(prepended2.data_ptr()->freeSpaceAtEnd(), 'a'); + prepended2 += array; + prepended2.append('b'); + QCOMPARE(prepended2, array + QByteArray("b")); + } } void tst_QByteArray::appendExtended_data() @@ -958,6 +979,38 @@ void tst_QByteArray::insert() ba = "one"; QCOMPARE(ba.insert(1, QByteArrayView(ba)), QByteArray("oonene")); QCOMPARE(ba.size(), 6); + + { + ba = "one"; + ba.prepend('a'); + QByteArray b(ba.data_ptr()->freeSpaceAtEnd(), 'b'); + QCOMPARE(ba.insert(ba.size() + 1, QByteArrayView(b)), QByteArray("aone ") + b); + } + + { + ba = "onetwothree"; + while (ba.size() - 1) + ba.remove(0, 1); + QByteArray b(ba.data_ptr()->freeSpaceAtEnd() + 1, 'b'); + QCOMPARE(ba.insert(ba.size() + 1, QByteArrayView(b)), QByteArray("e ") + b); + } + + { + ba = "one"; + ba.prepend('a'); + const qsizetype freeAtEnd = ba.data_ptr()->freeSpaceAtEnd(); + QCOMPARE(ba.insert(ba.size() + 1, freeAtEnd + 1, 'b'), + QByteArray("aone ") + QByteArray(freeAtEnd + 1, 'b')); + } + + { + ba = "onetwothree"; + while (ba.size() - 1) + ba.remove(0, 1); + const qsizetype freeAtEnd = ba.data_ptr()->freeSpaceAtEnd(); + QCOMPARE(ba.insert(ba.size() + 1, freeAtEnd + 1, 'b'), + QByteArray("e ") + QByteArray(freeAtEnd + 1, 'b')); + } } void tst_QByteArray::insertExtended_data() |