summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2023-11-09 19:22:18 -0800
committerThiago Macieira <thiago.macieira@intel.com>2023-12-12 22:59:23 -0800
commit2b7908ac3ad437c209485dcf00d1e53c98d78cb3 (patch)
tree2f6f09f95e59ce68eb2ca2b7002c0af84fab0d41 /tests/auto/corelib/tools
parent5ef6503d3be6cf88f8ea97f1f5fcee487c31f1f7 (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.cpp52
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()