void removeAll_test(const QList<int> &i10, ushort valueToRemove, int itemsToRemove) { bool isComplex = QTypeInfo<T>::isComplex; MyBase::errorCount = 0; MyBase::liveCount = 0; MyBase::copyCount = 0; { QList<T> list; QCOMPARE(MyBase::liveCount, 0); QCOMPARE(MyBase::copyCount, 0); for (int i = 0; i < 10 * N; ++i) { T t(i10.at(i % 10)); list.append(t); } QCOMPARE(MyBase::liveCount, isComplex ? list.size() : 0); QCOMPARE(MyBase::copyCount, isComplex ? list.size() : 0); T t(valueToRemove); QCOMPARE(MyBase::liveCount, isComplex ? list.size() + 1 : 1); QCOMPARE(MyBase::copyCount, isComplex ? list.size() : 0); int removedCount; QList<T> l; QBENCHMARK { l = list; removedCount = l.removeAll(t); } QCOMPARE(removedCount, itemsToRemove * N); QCOMPARE(l.size() + removedCount, list.size()); QVERIFY(!l.contains(valueToRemove)); QCOMPARE(MyBase::liveCount, isComplex ? l.isDetached() ? list.size() + l.size() + 1 : list.size() + 1 : 1); QCOMPARE(MyBase::copyCount, isComplex ? l.isDetached() ? list.size() + l.size() : list.size() : 0); } if (isComplex) QCOMPARE(MyBase::errorCount, 0); }