summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-03-09 16:22:35 +0100
committerMarc Mutz <marc.mutz@kdab.com>2016-03-24 16:16:15 +0000
commitaedda12ef1a2a9945d32afbc7e46f21773aed223 (patch)
treed3207c233b8458f06f8eafcc134fcaa2a132ef40
parent24411e9743735d6323f1d3686f8b989a5122f83b (diff)
tst_QAtomicInteger: fix UBs (signed overflow)
Drop addSub() test. It executes exactly the union of fetchAndAdd() and fetchAndSub(), which have already had their UBs fixed. No need to do fixes in duplicated code. Change-Id: Ib72caab0310fce3ff9a40c261d8a38518f91ecaf Reviewed-by: David Faure <david.faure@kdab.com>
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp93
1 files changed, 0 insertions, 93 deletions
diff --git a/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp b/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
index ff41ccf26b..6b3a99100b 100644
--- a/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
+++ b/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
@@ -179,9 +179,6 @@ private Q_SLOTS:
void fetchAndSub_data() { addData(); }
void fetchAndSub();
- void addSub_data() { addData(); }
- void addSub();
-
void fetchAndOr_data() { addData(); }
void fetchAndOr();
@@ -661,96 +658,6 @@ void tst_QAtomicIntegerXX::fetchAndSub()
}
}
-void tst_QAtomicIntegerXX::addSub()
-{
- QFETCH(LargeInt, value);
- QAtomicInteger<T> atomic(value);
-
- // note: this test has undefined behavior for signed max and min
- T parcel1 = 42;
- T parcel2 = T(0-parcel1);
- T newValue1 = T(value) + parcel1;
- T newValue2 = T(value) - parcel1;
-
- QCOMPARE(atomic.fetchAndAddRelaxed(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndSubRelaxed(parcel1), newValue1);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubRelaxed(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndAddRelaxed(parcel1), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndAddRelaxed(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndSubRelaxed(parcel2), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubRelaxed(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndAddRelaxed(parcel2), newValue1);
- QCOMPARE(atomic.load(), T(value));
-
- QCOMPARE(atomic.fetchAndAddAcquire(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndSubAcquire(parcel1), newValue1);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubAcquire(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndAddAcquire(parcel1), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndAddAcquire(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndSubAcquire(parcel2), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubAcquire(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndAddAcquire(parcel2), newValue1);
- QCOMPARE(atomic.load(), T(value));
-
- QCOMPARE(atomic.fetchAndAddRelease(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndSubRelease(parcel1), newValue1);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubRelease(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndAddRelease(parcel1), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndAddRelease(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndSubRelease(parcel2), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubRelease(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndAddRelease(parcel2), newValue1);
- QCOMPARE(atomic.load(), T(value));
-
- QCOMPARE(atomic.fetchAndAddOrdered(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndSubOrdered(parcel1), newValue1);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubOrdered(parcel1), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndAddOrdered(parcel1), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndAddOrdered(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue2);
- QCOMPARE(atomic.fetchAndSubOrdered(parcel2), newValue2);
- QCOMPARE(atomic.load(), T(value));
- QCOMPARE(atomic.fetchAndSubOrdered(parcel2), T(value));
- QCOMPARE(atomic.load(), newValue1);
- QCOMPARE(atomic.fetchAndAddOrdered(parcel2), newValue1);
- QCOMPARE(atomic.load(), T(value));
-
- // operator+= and operator-=
- QCOMPARE(atomic += parcel1, newValue1);
- QCOMPARE(atomic -= parcel1, T(value));
- QCOMPARE(atomic -= parcel1, newValue2);
- QCOMPARE(atomic += parcel1, T(value));
- QCOMPARE(atomic += parcel2, newValue2);
- QCOMPARE(atomic -= parcel2, T(value));
- QCOMPARE(atomic -= parcel2, newValue1);
- QCOMPARE(atomic += parcel2, T(value));
-}
-
void tst_QAtomicIntegerXX::fetchAndOr()
{
QFETCH(LargeInt, value);