From b80679a90f39106052f1b53f4073e679d5077a5f Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 15 Jan 2025 22:57:05 +0100 Subject: [PATCH] tst_QSet: check whether remove/removeIf detach if nothing is removed They do. Task-number: QTBUG-132831 Pick-to: 6.9 6.8 6.5 6.2 5.15 Change-Id: Ia4e9de7e443d11af9675924718c551a06bc4b447 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/corelib/tools/qset/tst_qset.cpp | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) 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;