diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp index 3ef061659dc..cea77ec16b2 100644 --- a/tests/auto/corelib/tools/qset/tst_qset.cpp +++ b/tests/auto/corelib/tools/qset/tst_qset.cpp @@ -32,6 +32,7 @@ private slots: void clear(); void cpp17ctad(); void remove(); + void removeOnlyDetachesIfSomethingGetsRemoved(); void contains(); void containsSet(); void begin(); @@ -392,6 +393,37 @@ void tst_QSet::remove() } } +void tst_QSet::removeOnlyDetachesIfSomethingGetsRemoved() +{ + const QSet set = {0, 1, 2, 3, 4}; + + auto copy = set; + QVERIFY(!copy.isDetached()); + + QVERIFY(!copy.remove(42)); + QEXPECT_FAIL("", "QTBUG-132831", Continue); + QVERIFY(!copy.isDetached()); + + copy = set; + QVERIFY(!copy.isDetached()); + + QCOMPARE(copy.removeIf([] (auto) { return false; }), 0); + QEXPECT_FAIL("", "QTBUG-132831", Continue); + QVERIFY(!copy.isDetached()); + + copy = set; + QVERIFY(!copy.isDetached()); + + QVERIFY(copy.remove(4)); + QVERIFY(copy.isDetached()); + + copy = set; + QVERIFY(!copy.isDetached()); + + QCOMPARE(copy.removeIf([] (int e) { return e == 3; }), 1); + QVERIFY(copy.isDetached()); +} + void tst_QSet::contains() { QSet set1;