qtestmouse.h: compile with QT_TYPESAFE_FLAGS
Also include the comprehensive tests for bool cast compilation which I originally wrote to confirm that the QTEST_ASSERT() change should be™ correct. Pick-to: 6.3 Task-number: QTBUG-101406 Change-Id: I9a2871bfd4be9999b7a720bec775bba7aeffbe24 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>bb10
parent
944b5a8e3e
commit
53890b5d3c
|
|
@ -114,9 +114,9 @@ namespace QTest
|
|||
if (pos.isNull())
|
||||
pos = QPoint(window->width() / 2, window->height() / 2);
|
||||
|
||||
QTEST_ASSERT(uint(stateKey) == 0 || stateKey & Qt::KeyboardModifierMask);
|
||||
QTEST_ASSERT(!stateKey || stateKey & Qt::KeyboardModifierMask);
|
||||
|
||||
stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask);
|
||||
stateKey &= Qt::KeyboardModifierMask;
|
||||
|
||||
QPointF global = window->mapToGlobal(pos);
|
||||
QPointer<QWindow> w(window);
|
||||
|
|
@ -201,9 +201,9 @@ namespace QTest
|
|||
return;
|
||||
}
|
||||
|
||||
QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask);
|
||||
QTEST_ASSERT(!stateKey || stateKey & Qt::KeyboardModifierMask);
|
||||
|
||||
stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask);
|
||||
stateKey &= Qt::KeyboardModifierMask;
|
||||
|
||||
QEvent::Type meType;
|
||||
using namespace QTestPrivate;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ class tst_QFlags: public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void boolCasts() const;
|
||||
void operators() const;
|
||||
void testFlag() const;
|
||||
void testFlagZeroFlag() const;
|
||||
|
|
@ -46,6 +47,49 @@ private slots:
|
|||
void adl();
|
||||
};
|
||||
|
||||
void tst_QFlags::boolCasts() const
|
||||
{
|
||||
// This tests that the operator overloading is sufficient so that common
|
||||
// idioms involving flags -> bool casts work as expected:
|
||||
|
||||
const Qt::Alignment nonNull = Qt::AlignCenter;
|
||||
const Qt::Alignment null = {};
|
||||
|
||||
// basic premiss:
|
||||
QVERIFY(bool(nonNull));
|
||||
QVERIFY(!bool(null));
|
||||
|
||||
// The rest is just checking that stuff compiles:
|
||||
|
||||
// QVERIFY should compile:
|
||||
QVERIFY(nonNull);
|
||||
QVERIFY(!null);
|
||||
|
||||
// ifs should compile:
|
||||
if (null) QFAIL("Can't contextually convert QFlags to bool!");
|
||||
if (!nonNull) QFAIL("Missing operator! on QFlags (shouldn't be necessary).");
|
||||
|
||||
// ternary should compile:
|
||||
QVERIFY(nonNull ? true : false);
|
||||
QVERIFY(!null ? true : false);
|
||||
|
||||
// logical operators should compile:
|
||||
QVERIFY(nonNull && true);
|
||||
QVERIFY(nonNull || false);
|
||||
QVERIFY(!null && true);
|
||||
QVERIFY(!null || false);
|
||||
|
||||
// ... in both directions:
|
||||
QVERIFY(true && nonNull);
|
||||
QVERIFY(false || nonNull);
|
||||
QVERIFY(true && !null);
|
||||
QVERIFY(false || !null);
|
||||
|
||||
// ... and mixed:
|
||||
QVERIFY(null || nonNull);
|
||||
QVERIFY(!(null && nonNull));
|
||||
}
|
||||
|
||||
void tst_QFlags::operators() const
|
||||
{
|
||||
#define CHECK(op, LHS, RHS, RES) \
|
||||
|
|
|
|||
Loading…
Reference in New Issue