summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/tools')
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp15
-rw-r--r--tests/auto/corelib/tools/qlist/tst_qlist.cpp28
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp9
-rw-r--r--tests/auto/corelib/tools/qstringref/tst_qstringref.cpp48
-rw-r--r--tests/auto/corelib/tools/qvector/tst_qvector.cpp1
5 files changed, 101 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
index b06741b23e..6e183f3212 100644
--- a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -1855,6 +1855,21 @@ void tst_QByteArray::reserve()
QVERIFY(data == qba.data());
}
+ qba.resize(capacity);
+
+ QByteArray copy = qba;
+ qba.reserve(capacity / 2);
+ QCOMPARE(qba.size(), capacity); // we didn't shrink the size!
+ QCOMPARE(qba.capacity(), capacity);
+ QCOMPARE(copy.capacity(), capacity);
+
+ copy = qba;
+ qba.reserve(capacity * 2);
+ QCOMPARE(qba.size(), capacity);
+ QCOMPARE(qba.capacity(), capacity * 2);
+ QCOMPARE(copy.capacity(), capacity);
+ QVERIFY(qba.constData() != data);
+
QByteArray nil1, nil2;
nil1.reserve(0);
nil2.squeeze();
diff --git a/tests/auto/corelib/tools/qlist/tst_qlist.cpp b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
index 2c9bf9d4c9..d77cc4a37c 100644
--- a/tests/auto/corelib/tools/qlist/tst_qlist.cpp
+++ b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
@@ -278,6 +278,8 @@ private slots:
void setSharableComplex() const;
void eraseValidIteratorsOnSharedList() const;
void insertWithValidIteratorsOnSharedList() const;
+
+ void reserve() const;
private:
template<typename T> void length() const;
template<typename T> void append() const;
@@ -1669,5 +1671,31 @@ void tst_QList::insertWithValidIteratorsOnSharedList() const
QCOMPARE(a.at(1), 15);
}
+void tst_QList::reserve() const
+{
+ // Note:
+ // This test depends on QList's current behavior that ints are stored in the array itself.
+ // This test would not work for QList<Complex>.
+ int capacity = 100;
+ QList<int> list;
+ list.reserve(capacity);
+ list << 0;
+ int *data = &list[0];
+
+ for (int i = 1; i < capacity; i++) {
+ list << i;
+ QCOMPARE(&list.at(0), data);
+ }
+
+ QList<int> copy = list;
+ list.reserve(capacity / 2);
+ QCOMPARE(list.size(), capacity); // we didn't shrink the size!
+
+ copy = list;
+ list.reserve(capacity * 2);
+ QCOMPARE(list.size(), capacity);
+ QVERIFY(&list.at(0) != data);
+}
+
QTEST_APPLESS_MAIN(tst_QList)
#include "tst_qlist.moc"
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
index 5655d9f529..d9d6b985b7 100644
--- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -4277,14 +4277,23 @@ void tst_QString::capacity()
QVERIFY( (int)s2.capacity() >= res );
QCOMPARE( s2, s1 );
+ s2 = s1; // share again
s2.reserve( res * 2 );
QVERIFY( (int)s2.capacity() >= res * 2 );
+ QVERIFY(s2.constData() != s1.constData());
QCOMPARE( s2, s1 );
+ // don't share again -- s2 must be detached for squeeze() to do anything
s2.squeeze();
QVERIFY( (int)s2.capacity() == res );
QCOMPARE( s2, s1 );
+ s2 = s1; // share again
+ int oldsize = s1.size();
+ s2.reserve( res / 2 );
+ QVERIFY( (int)s2.capacity() >= res / 2 );
+ QVERIFY( (int)s2.capacity() >= oldsize );
+ QCOMPARE( s2, s1 );
}
void tst_QString::section_data()
diff --git a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
index 7bbcee8ab2..342abb7ea8 100644
--- a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
+++ b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
@@ -68,6 +68,8 @@ private slots:
void isEmpty();
void compare_data();
void compare();
+ void compare2_data();
+ void compare2();
void operator_eqeq_nullstring();
void toNum();
void toDouble_data();
@@ -792,11 +794,17 @@ void tst_QStringRef::compare_data()
QTest::newRow("data3") << QString("abc") << QString("abc") << 0 << 0;
QTest::newRow("data4") << QString("abC") << QString("abc") << -1 << 0;
QTest::newRow("data5") << QString("abc") << QString("abC") << 1 << 0;
+ QTest::newRow("data10") << QString("abcdefgh") << QString("abcdefgh") << 0 << 0;
+ QTest::newRow("data11") << QString("abcdefgh") << QString("abCdefgh") << 1 << 0;
+ QTest::newRow("data12") << QString("0123456789012345") << QString("0123456789012345") << 0 << 0;
+ QTest::newRow("data13") << QString("0123556789012345") << QString("0123456789012345") << 1 << 1;
// different length
QTest::newRow("data6") << QString("abcdef") << QString("abc") << 1 << 1;
QTest::newRow("data7") << QString("abCdef") << QString("abc") << -1 << 1;
QTest::newRow("data8") << QString("abc") << QString("abcdef") << -1 << -1;
+ QTest::newRow("data14") << QString("abcdefgh") << QString("abcdefghi") << -1 << -1;
+ QTest::newRow("data15") << QString("01234567890123456") << QString("0123456789012345") << 1 << 1;
QString upper;
upper += QChar(QChar::highSurrogate(0x10400));
@@ -862,6 +870,46 @@ void tst_QStringRef::compare()
}
}
+void tst_QStringRef::compare2_data()
+{
+ compare_data();
+}
+
+void tst_QStringRef::compare2()
+{
+ QFETCH(QString, s1);
+ QFETCH(QString, s2);
+ QFETCH(int, csr);
+ QFETCH(int, cir);
+
+ // prepend and append data
+ // we only use Latin1 here so isLatin1 still results true
+ s1.prepend("xyz").append("zyx");
+ s2.prepend("foobar").append("raboof");
+
+ QStringRef r1(&s1, 3, s1.length() - 6);
+ QStringRef r2(&s2, 6, s2.length() - 12);
+
+ QCOMPARE(sign(QStringRef::compare(r1, r2)), csr);
+ QCOMPARE(sign(r1.compare(r2)), csr);
+
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir);
+
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseSensitive)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, r2, Qt::CaseInsensitive)), cir);
+
+ if (isLatin(s2)) {
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(r2.toLatin1()))), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(r2.toLatin1()), Qt::CaseInsensitive)), cir);
+ }
+
+ if (isLatin(s1)) {
+ QCOMPARE(sign(QStringRef::compare(r2, QLatin1String(r1.toLatin1()))), -csr);
+ QCOMPARE(sign(QStringRef::compare(r2, QLatin1String(r1.toLatin1()), Qt::CaseInsensitive)), -cir);
+ }
+}
+
void tst_QStringRef::toNum()
{
#define TEST_TO_INT(num, func, type) \
diff --git a/tests/auto/corelib/tools/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
index bd0ed06382..f85d2dee0c 100644
--- a/tests/auto/corelib/tools/qvector/tst_qvector.cpp
+++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
@@ -2015,6 +2015,7 @@ void tst_QVector::reserve()
a.resize(2);
QVector<Foo> b(a);
b.reserve(1);
+ QCOMPARE(b.size(), a.size());
}
QCOMPARE(fooCtor, fooDtor);
}