diff options
Diffstat (limited to 'tests/auto/corelib/tools/qlist/tst_qlist.cpp')
-rw-r--r-- | tests/auto/corelib/tools/qlist/tst_qlist.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qlist/tst_qlist.cpp b/tests/auto/corelib/tools/qlist/tst_qlist.cpp index 787aa094a8..2c9bf9d4c9 100644 --- a/tests/auto/corelib/tools/qlist/tst_qlist.cpp +++ b/tests/auto/corelib/tools/qlist/tst_qlist.cpp @@ -276,6 +276,8 @@ private slots: void setSharableInt() const; void setSharableComplex_data() const; void setSharableComplex() const; + void eraseValidIteratorsOnSharedList() const; + void insertWithValidIteratorsOnSharedList() const; private: template<typename T> void length() const; template<typename T> void append() const; @@ -1620,5 +1622,52 @@ void tst_QList::setSharableComplex() const runSetSharableTest<Complex>(); } +void tst_QList::eraseValidIteratorsOnSharedList() const +{ + QList<int> a, b; + a.push_back(10); + a.push_back(20); + a.push_back(30); + QList<int>::iterator i = a.begin(); + ++i; + b = a; + a.erase(i); + QCOMPARE(b.size(), 3); + QCOMPARE(a.size(), 2); + QCOMPARE(a.at(0), 10); + QCOMPARE(a.at(1), 30); + + a.push_back(40); + a.push_back(50); + a.push_back(60); + QCOMPARE(a.size(), 5); + i = a.begin(); + b = a; + ++i; + QList<int>::iterator j = i; + ++j; + ++j; + a.erase(i, j); // remove 3 elements + QCOMPARE(b.size(), 5); + QCOMPARE(a.size(), 3); + QCOMPARE(a.at(0), 10); + QCOMPARE(a.at(1), 50); +} + +void tst_QList::insertWithValidIteratorsOnSharedList() const +{ + QList<int> a, b; + a.push_back(10); + a.push_back(20); + a.push_back(30); + QList<int>::iterator i = a.begin(); + ++i; + b = a; + a.insert(i, 15); + QCOMPARE(a.size(), b.size() + 1); + QCOMPARE(b.at(1), 20); + QCOMPARE(a.at(1), 15); +} + QTEST_APPLESS_MAIN(tst_QList) #include "tst_qlist.moc" |