summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Abecasis <joao.abecasis@nokia.com>2012-04-04 01:29:26 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-05 08:19:03 +0200
commite1626bf038d8ca8d968e7862bd8bced5c6cc2677 (patch)
tree5304f30d33fe0d19fd593b459249e6eb67c867e1
parent5a1cd3dcfaf37701a0a61cfe1a10dcec4c8bfefc (diff)
Revert "Add tests to verify QByteArray's zero termination"
The approach used to verify for zero-termination is too intrusive and requires additional maintenance work to ensure new zero-termination tests are added with new functionality. Zero-termination testing will be re-established in a subsequent commit. This reverts commit 4ef5a6269c1465662ea3872596ba284a13cce25e. Change-Id: I862434a072f447f7f0c4bbf8f757ba216212db3c Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp128
1 files changed, 5 insertions, 123 deletions
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
index 72493d3956..ea6f745795 100644
--- a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -147,40 +147,8 @@ private slots:
void movablity_data();
void movablity();
void literals();
-
- void zeroTermination_data();
- void zeroTermination();
};
-// Except for QByteArrays initialized with fromRawData(), QByteArray ensures
-// that data() is null-terminated. VERIFY_ZERO_TERMINATION checks that
-// invariant and goes further by testing that the null-character is in writable
-// memory allocated by QByteArray. If the invariant is broken, tools like
-// valgrind should be able to detect this.
-#define VERIFY_ZERO_TERMINATION(ba) \
- do { \
- /* Statics could be anything, as can fromRawData() strings */ \
- QByteArray::DataPtr baDataPtr = ba.data_ptr(); \
- if (!baDataPtr->ref.isStatic() \
- && baDataPtr->offset == QByteArray().data_ptr()->offset) { \
- int baSize = ba.size(); \
- QCOMPARE(ba.constData()[baSize], '\0'); \
- \
- QByteArray baCopy(ba.constData(), baSize); \
- if (!baDataPtr->ref.isShared()) { \
- /* Don't detach, assumes no setSharable support */ \
- char *baData = ba.data(); \
- baData[baSize] = 'x'; \
- \
- QCOMPARE(ba.constData()[baSize], 'x'); \
- QCOMPARE(ba, baCopy); \
- \
- baData[baSize] = '\0'; /* Sanity restored */ \
- } \
- } \
- } while (false) \
- /**/
-
static const struct StaticByteArrays {
struct Standard {
QByteArrayData data;
@@ -256,13 +224,8 @@ void tst_QByteArray::qCompress_data()
void tst_QByteArray::qCompress()
{
QFETCH( QByteArray, ba );
-
QByteArray compressed = ::qCompress( ba );
- QByteArray uncompressed = ::qUncompress(compressed);
-
- QCOMPARE(uncompressed, ba);
- VERIFY_ZERO_TERMINATION(compressed);
- VERIFY_ZERO_TERMINATION(uncompressed);
+ QTEST( ::qUncompress( compressed ), "ba" );
}
void tst_QByteArray::qUncompressCorruptedData_data()
@@ -294,11 +257,9 @@ void tst_QByteArray::qUncompressCorruptedData()
QByteArray res;
res = ::qUncompress(in);
QCOMPARE(res, QByteArray());
- VERIFY_ZERO_TERMINATION(res);
res = ::qUncompress(in + "blah");
QCOMPARE(res, QByteArray());
- VERIFY_ZERO_TERMINATION(res);
#else
QSKIP("This test freezes on this platform");
#endif
@@ -308,7 +269,7 @@ void tst_QByteArray::qCompressionZeroTermination()
{
QString s = "Hello, I'm a string.";
QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
- VERIFY_ZERO_TERMINATION(ba);
+ QVERIFY((int) *(ba.data() + ba.size()) == 0);
}
#endif
@@ -328,7 +289,6 @@ void tst_QByteArray::constByteArray()
QVERIFY(cba.constData()[1] == 'b');
QVERIFY(cba.constData()[2] == 'c');
QVERIFY(cba.constData()[3] == '\0');
- VERIFY_ZERO_TERMINATION(cba);
}
void tst_QByteArray::leftJustified()
@@ -546,11 +506,9 @@ void tst_QByteArray::base64()
QByteArray arr = QByteArray::fromBase64(base64);
QCOMPARE(arr, rawdata);
- VERIFY_ZERO_TERMINATION(arr);
QByteArray arr64 = rawdata.toBase64();
QCOMPARE(arr64, base64);
- VERIFY_ZERO_TERMINATION(arr64);
}
//different from the previous test as the input are invalid
@@ -775,24 +733,17 @@ void tst_QByteArray::chop()
src.chop(choplength);
QCOMPARE(src, expected);
- VERIFY_ZERO_TERMINATION(src);
}
void tst_QByteArray::prepend()
{
QByteArray ba("foo");
QCOMPARE(ba.prepend((char*)0), QByteArray("foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.prepend(QByteArray()), QByteArray("foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.prepend("1"), QByteArray("1foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.prepend(QByteArray("2")), QByteArray("21foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.prepend('3'), QByteArray("321foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.prepend("\0 ", 2), QByteArray::fromRawData("\0 321foo", 8));
- VERIFY_ZERO_TERMINATION(ba);
}
void tst_QByteArray::prependExtended_data()
@@ -816,17 +767,11 @@ void tst_QByteArray::prependExtended()
QCOMPARE(QByteArray("").prepend(array), QByteArray("data"));
QCOMPARE(array.prepend((char*)0), QByteArray("data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.prepend(QByteArray()), QByteArray("data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.prepend("1"), QByteArray("1data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.prepend(QByteArray("2")), QByteArray("21data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.prepend('3'), QByteArray("321data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.prepend("\0 ", 2), QByteArray::fromRawData("\0 321data", 9));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.size(), 9);
}
@@ -834,19 +779,12 @@ void tst_QByteArray::append()
{
QByteArray ba("foo");
QCOMPARE(ba.append((char*)0), QByteArray("foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append(QByteArray()), QByteArray("foo"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append("1"), QByteArray("foo1"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append(QByteArray("2")), QByteArray("foo12"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append('3'), QByteArray("foo123"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append("\0"), QByteArray("foo123"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.append("\0", 1), QByteArray::fromRawData("foo123\0", 7));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.size(), 7);
}
@@ -863,19 +801,12 @@ void tst_QByteArray::appendExtended()
QCOMPARE(QByteArray("").append(array), QByteArray("data"));
QCOMPARE(array.append((char*)0), QByteArray("data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append(QByteArray()), QByteArray("data"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append("1"), QByteArray("data1"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append(QByteArray("2")), QByteArray("data12"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append('3'), QByteArray("data123"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append("\0"), QByteArray("data123"));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.append("\0", 1), QByteArray::fromRawData("data123\0", 8));
- VERIFY_ZERO_TERMINATION(array);
QCOMPARE(array.size(), 8);
}
@@ -883,28 +814,22 @@ void tst_QByteArray::insert()
{
QByteArray ba("Meal");
QCOMPARE(ba.insert(1, QByteArray("ontr")), QByteArray("Montreal"));
- VERIFY_ZERO_TERMINATION(ba);
QCOMPARE(ba.insert(ba.size(), "foo"), QByteArray("Montrealfoo"));
- VERIFY_ZERO_TERMINATION(ba);
ba = QByteArray("13");
QCOMPARE(ba.insert(1, QByteArray("2")), QByteArray("123"));
- VERIFY_ZERO_TERMINATION(ba);
ba = "ac";
QCOMPARE(ba.insert(1, 'b'), QByteArray("abc"));
QCOMPARE(ba.size(), 3);
- VERIFY_ZERO_TERMINATION(ba);
ba = "ikl";
QCOMPARE(ba.insert(1, "j"), QByteArray("ijkl"));
QCOMPARE(ba.size(), 4);
- VERIFY_ZERO_TERMINATION(ba);
ba = "ab";
QCOMPARE(ba.insert(1, "\0X\0", 3), QByteArray::fromRawData("a\0X\0b", 5));
QCOMPARE(ba.size(), 5);
- VERIFY_ZERO_TERMINATION(ba);
}
void tst_QByteArray::insertExtended_data()
@@ -917,7 +842,6 @@ void tst_QByteArray::insertExtended()
QFETCH(QByteArray, array);
QCOMPARE(array.insert(1, "i"), QByteArray("diata"));
QCOMPARE(array.size(), 5);
- VERIFY_ZERO_TERMINATION(array);
}
void tst_QByteArray::remove_data()
@@ -948,7 +872,6 @@ void tst_QByteArray::remove()
QFETCH(int, length);
QFETCH(QByteArray, expected);
QCOMPARE(src.remove(position, length), expected);
- VERIFY_ZERO_TERMINATION(src);
}
void tst_QByteArray::replace_data()
@@ -990,8 +913,6 @@ void tst_QByteArray::replace()
QCOMPARE(str1.replace(pos, len, after).constData(), expected.constData());
QCOMPARE(str2.replace(pos, len, after.data()), expected);
- VERIFY_ZERO_TERMINATION(str1);
- VERIFY_ZERO_TERMINATION(str2);
}
void tst_QByteArray::replaceWithSpecifiedLength()
@@ -1004,7 +925,6 @@ void tst_QByteArray::replaceWithSpecifiedLength()
const char _expected[] = "zxc\0vbcdefghjk";
QByteArray expected(_expected,sizeof(_expected)-1);
QCOMPARE(ba,expected);
- VERIFY_ZERO_TERMINATION(ba);
}
void tst_QByteArray::indexOf_data()
@@ -1307,7 +1227,6 @@ void tst_QByteArray::appendAfterFromRawData()
data[0] = 'Y';
}
QVERIFY(arr.at(0) == 'X');
- VERIFY_ZERO_TERMINATION(arr);
}
void tst_QByteArray::toFromHex_data()
@@ -1379,17 +1298,15 @@ void tst_QByteArray::toFromHex()
QFETCH(QByteArray, hex_alt1);
{
- QByteArray th = str.toHex();
+ const QByteArray th = str.toHex();
QCOMPARE(th.size(), hex.size());
QCOMPARE(th, hex);
- VERIFY_ZERO_TERMINATION(th);
}
{
- QByteArray fh = QByteArray::fromHex(hex);
+ const QByteArray fh = QByteArray::fromHex(hex);
QCOMPARE(fh.size(), str.size());
QCOMPARE(fh, str);
- VERIFY_ZERO_TERMINATION(fh);
}
QCOMPARE(QByteArray::fromHex(hex_alt1), str);
@@ -1402,17 +1319,14 @@ void tst_QByteArray::toFromPercentEncoding()
QByteArray data = arr.toPercentEncoding();
QCOMPARE(QString(data), QString("Qt%20is%20great%21"));
QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
- VERIFY_ZERO_TERMINATION(data);
data = arr.toPercentEncoding("! ", "Qt");
QCOMPARE(QString(data), QString("%51%74 is grea%74!"));
QCOMPARE(QByteArray::fromPercentEncoding(data), arr);
- VERIFY_ZERO_TERMINATION(data);
data = arr.toPercentEncoding(QByteArray(), "abcdefghijklmnopqrstuvwxyz", 'Q');
QCOMPARE(QString(data), QString("Q51Q74Q20Q69Q73Q20Q67Q72Q65Q61Q74Q21"));
QCOMPARE(QByteArray::fromPercentEncoding(data, 'Q'), arr);
- VERIFY_ZERO_TERMINATION(data);
// verify that to/from percent encoding preserves nullity
arr = "";
@@ -1422,7 +1336,6 @@ void tst_QByteArray::toFromPercentEncoding()
QVERIFY(!arr.toPercentEncoding().isNull());
QVERIFY(QByteArray::fromPercentEncoding("").isEmpty());
QVERIFY(!QByteArray::fromPercentEncoding("").isNull());
- VERIFY_ZERO_TERMINATION(arr);
arr = QByteArray();
QVERIFY(arr.isEmpty());
@@ -1431,7 +1344,6 @@ void tst_QByteArray::toFromPercentEncoding()
QVERIFY(arr.toPercentEncoding().isNull());
QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isEmpty());
QVERIFY(QByteArray::fromPercentEncoding(QByteArray()).isNull());
- VERIFY_ZERO_TERMINATION(arr);
}
void tst_QByteArray::fromPercentEncoding_data()
@@ -1673,9 +1585,6 @@ void tst_QByteArray::repeated() const
QFETCH(int, count);
QCOMPARE(string.repeated(count), expected);
-
- QByteArray repeats = string.repeated(count);
- VERIFY_ZERO_TERMINATION(repeats);
}
void tst_QByteArray::repeated_data() const
@@ -1767,7 +1676,6 @@ void tst_QByteArray::byteRefDetaching() const
copy[0] = 'S';
QCOMPARE(str, QByteArray("str"));
- VERIFY_ZERO_TERMINATION(copy);
}
{
@@ -1776,7 +1684,6 @@ void tst_QByteArray::byteRefDetaching() const
str[0] = 'S';
QCOMPARE(buf[0], char('s'));
- VERIFY_ZERO_TERMINATION(str);
}
{
@@ -1787,7 +1694,6 @@ void tst_QByteArray::byteRefDetaching() const
str[0] = 'S';
QCOMPARE(buf[0], char('s'));
- VERIFY_ZERO_TERMINATION(str);
}
}
@@ -1797,25 +1703,19 @@ void tst_QByteArray::reserve()
QByteArray qba;
qba.reserve(capacity);
QVERIFY(qba.capacity() == capacity);
- VERIFY_ZERO_TERMINATION(qba);
-
char *data = qba.data();
+
for (int i = 0; i < capacity; i++) {
qba.resize(i);
QVERIFY(capacity == qba.capacity());
QVERIFY(data == qba.data());
- VERIFY_ZERO_TERMINATION(qba);
}
QByteArray nil1, nil2;
nil1.reserve(0);
- VERIFY_ZERO_TERMINATION(nil1);
nil2.squeeze();
- VERIFY_ZERO_TERMINATION(nil2);
nil1.squeeze();
- VERIFY_ZERO_TERMINATION(nil1);
nil2.reserve(0);
- VERIFY_ZERO_TERMINATION(nil2);
}
void tst_QByteArray::reserveExtended_data()
@@ -1826,16 +1726,12 @@ void tst_QByteArray::reserveExtended_data()
void tst_QByteArray::reserveExtended()
{
QFETCH(QByteArray, array);
-
array.reserve(1024);
QVERIFY(array.capacity() == 1024);
QCOMPARE(array, QByteArray("data"));
- VERIFY_ZERO_TERMINATION(array);
-
array.squeeze();
QCOMPARE(array, QByteArray("data"));
QCOMPARE(array.capacity(), array.size());
- VERIFY_ZERO_TERMINATION(array);
}
void tst_QByteArray::movablity_data()
@@ -1928,7 +1824,6 @@ void tst_QByteArray::literals()
QVERIFY(str == "abcd");
QVERIFY(str.data_ptr()->ref.isStatic());
QVERIFY(str.data_ptr()->offset == sizeof(QByteArrayData));
- VERIFY_ZERO_TERMINATION(str);
const char *s = str.constData();
QByteArray str2 = str;
@@ -1936,27 +1831,14 @@ void tst_QByteArray::literals()
// detach on non const access
QVERIFY(str.data() != s);
- VERIFY_ZERO_TERMINATION(str);
QVERIFY(str2.constData() == s);
QVERIFY(str2.data() != s);
- VERIFY_ZERO_TERMINATION(str2);
#else
QSKIP("Only tested on c++0x compliant compiler or gcc");
#endif
}
-void tst_QByteArray::zeroTermination_data()
-{
- movablity_data();
-}
-
-void tst_QByteArray::zeroTermination()
-{
- QFETCH(QByteArray, array);
- VERIFY_ZERO_TERMINATION(array);
-}
-
const char globalChar = '1';
QTEST_APPLESS_MAIN(tst_QByteArray)