diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-05-10 20:07:16 +1000 |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-05-10 20:07:16 +1000 |
commit | c5d63be839e4560f4825d1740a4496abd945b4d6 (patch) | |
tree | 8f508c9bd0797889a0df70dc10dd88ea49034d03 /tests | |
parent | 41e14a4175d56675127a2d29f6a67de18f7c6b90 (diff) | |
parent | 44b7877c879faabe83310df697d1ec2f013ee8b5 (diff) |
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qtbase-earth-staging
* 'master' of git://scm.dev.nokia.troll.no/qt/qtbase-earth-staging:
Respect capacity in QVector::append().
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qvector/tst_qvector.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/auto/qvector/tst_qvector.cpp b/tests/auto/qvector/tst_qvector.cpp index dde59d73b7..1669c24e5c 100644 --- a/tests/auto/qvector/tst_qvector.cpp +++ b/tests/auto/qvector/tst_qvector.cpp @@ -89,6 +89,8 @@ private slots: void outOfMemory(); void QTBUG6416_reserve(); + void QTBUG11763_data(); + void QTBUG11763(); void initializeList(); }; @@ -847,6 +849,83 @@ void tst_QVector::QTBUG6416_reserve() QCOMPARE(fooCtor, fooDtor); } +void tst_QVector::QTBUG11763_data() +{ + QTest::addColumn<int>("capacity"); + QTest::addColumn<int>("fill_size"); + QTest::addColumn<int>("func_id"); + QTest::addColumn<int>("result1"); + QTest::addColumn<int>("result2"); + QTest::addColumn<int>("result3"); + QTest::addColumn<int>("result4"); + + int result1, result2, result3, result4; + int fill_size; + for (int i = 70; i <= 100; i += 10) { + fill_size = i - 20; + for (int j = 0; j <= 3; j++) { + if (j == 0) { // append + result1 = i; + result2 = i; + result3 = i - 19; + result4 = i - 20; + } else if (j == 1) { // insert(0) + result1 = i; + result2 = i; + result3 = i - 19; + result4 = i - 20; + } else if (j == 2) { // insert(20) + result1 = i; + result2 = i; + result3 = i - 19; + result4 = i - 20; + } else if (j == 3) { // insert(0, 10) + result1 = i; + result2 = i; + result3 = i - 10; + result4 = i - 20; + } + QTest::newRow(qPrintable(QString("QTBUG11763:%1").arg(i))) << i << fill_size << j << result1 << result2 << result3 << result4; + } + } +} + +void tst_QVector::QTBUG11763() +{ + QFETCH(int, capacity); + QFETCH(int, fill_size); + QFETCH(int, func_id); + QFETCH(int, result1); + QFETCH(int, result2); + QFETCH(int, result3); + QFETCH(int, result4); + + QVector<qreal> v1; + QVector<qreal> v2; + + v1.reserve(capacity); + v1.resize(0); + v1.fill(qreal(1.0), fill_size); + + v2 = v1; + + // no need to test begin() and end(), there is a detach() in them + if (func_id == 0) { + v1.append(qreal(1.0)); //push_back is same as append + } else if (func_id == 1) { + v1.insert(0, qreal(1.0)); //push_front is same as prepend, insert(0) + } else if (func_id == 2) { + v1.insert(20, qreal(1.0)); + } else if (func_id == 3) { + v1.insert(0, 10, qreal(1.0)); + } + + QCOMPARE(v1.capacity(), result1); + QCOMPARE(v2.capacity(), result2); + QCOMPARE(v1.size(), result3); + QCOMPARE(v2.size(), result4); +} + void tst_QVector::initializeList() { #ifdef Q_COMPILER_INITIALIZER_LISTS |