diff options
Diffstat (limited to 'tests/auto/corelib/tools/qlist/tst_qlist.cpp')
-rw-r--r-- | tests/auto/corelib/tools/qlist/tst_qlist.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
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" |