diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2023-11-09 19:22:18 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2023-12-12 22:59:23 -0800 |
commit | 2b7908ac3ad437c209485dcf00d1e53c98d78cb3 (patch) | |
tree | 2f6f09f95e59ce68eb2ca2b7002c0af84fab0d41 /tests/auto/corelib/tools | |
parent | 5ef6503d3be6cf88f8ea97f1f5fcee487c31f1f7 (diff) |
QBitArray: add rvalue binary bitwise operators
Now that the assignment-bitwise operators can reuse storage, we can make
these operators also be capable of reusing storage.
Pick-to: 6.7
Change-Id: I85b3fc2dd45c4693be13fffd1795b893de65a5b8
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'tests/auto/corelib/tools')
-rw-r--r-- | tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp index 5de1e9bb43..be98f56164 100644 --- a/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp +++ b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp @@ -26,6 +26,12 @@ static QBitArray QStringToQBitArray(const QString &str) return ba; } +static QBitArray detached(QBitArray a) +{ + a.detach(); + return a; +} + class tst_QBitArray : public QObject { Q_OBJECT @@ -323,14 +329,26 @@ void tst_QBitArray::operator_and() QBitArray result = input1 & input2; QCOMPARE(result, res); + result = input1 & QBitArray(input2); + QCOMPARE(result, res); + result = input1 & detached(input2); + QCOMPARE(result, res); // operation is commutative result = input2 & input1; QCOMPARE(result, res); + result = input2 & QBitArray(input1); + QCOMPARE(result, res); + result = input2 & detached(input1); + QCOMPARE(result, res); // operation is idempotent result = result & result; QCOMPARE(result, res); + result = result & QBitArray(result); + QCOMPARE(result, res); + result = result & detached(result); + QCOMPARE(result, res); } void tst_QBitArray::operator_oreq_data() @@ -392,14 +410,26 @@ void tst_QBitArray::operator_or() QBitArray result = input1 | input2; QCOMPARE(result, res); + result = input1 | QBitArray(input2); + QCOMPARE(result, res); + result = input1 | detached(input2); + QCOMPARE(result, res); // operation is commutative result = input2 | input1; QCOMPARE(result, res); + result = input2 | QBitArray(input1); + QCOMPARE(result, res); + result = input2 | detached(input1); + QCOMPARE(result, res); // operation is idempotent result = result | result; QCOMPARE(result, res); + result = result | QBitArray(result); + QCOMPARE(result, res); + result = result | detached(result); + QCOMPARE(result, res); } void tst_QBitArray::operator_xoreq_data() @@ -459,18 +489,40 @@ void tst_QBitArray::operator_xor() QBitArray result = input1 ^ input2; QCOMPARE(result, res); + result = input1 ^ QBitArray(input2); + QCOMPARE(result, res); + result = input1 ^ detached(input2); + QCOMPARE(result, res); // operation is commutative result = input2 ^ input1; QCOMPARE(result, res); + result = input2 ^ QBitArray(input1); + QCOMPARE(result, res); + result = input2 ^ detached(input1); + QCOMPARE(result, res); // XORing with oneself is nilpotent result = input1 ^ input1; QCOMPARE(result, QBitArray(input1.size())); + result = input1 ^ QBitArray(input1); + QCOMPARE(result, QBitArray(input1.size())); + result = input1 ^ detached(input1); + QCOMPARE(result, QBitArray(input1.size())); + result = input2 ^ input2; QCOMPARE(result, QBitArray(input2.size())); + result = input2 ^ QBitArray(input2); + QCOMPARE(result, QBitArray(input2.size())); + result = input2 ^ detached(input2); + QCOMPARE(result, QBitArray(input2.size())); + result = res ^ res; QCOMPARE(result, QBitArray(res.size())); + result = res ^ QBitArray(res); + QCOMPARE(result, QBitArray(res.size())); + result = res ^ detached(res); + QCOMPARE(result, QBitArray(res.size())); } void tst_QBitArray::operator_neg_data() |