diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-05-03 01:20:55 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-05-15 17:34:01 +0200 |
commit | c4947c1c4c0d518197329cf019b04cff4e676541 (patch) | |
tree | ed72cc1df4689fc2242f4b320513cafbdb1830b3 /tests/auto | |
parent | 78e6b54cdea325cd925603cbfa9e76c00db3db92 (diff) |
QFlags: add test(Any)Flag(s)
QFlags was lacking a named function for testing whether a QFlags object
contains _any_ of the bits set by a given enumerator/other QFlags.
Drive-by, add testFlags taking a QFlags, not just an object of the
enumeration; and simplify the implementation of testFlags to more
closely follow what its documentation says it does.
[ChangeLog][QtCore][QFlags] The testFlags, testAnyFlag and
testAnyFlags functions have been added.
Change-Id: Ie8688c8b0dd393d34d32bc7786cdcee3eba24d1c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/corelib/global/qflags/tst_qflags.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp index 4b76a32c9a..4201293258 100644 --- a/tests/auto/corelib/global/qflags/tst_qflags.cpp +++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp @@ -36,6 +36,8 @@ private slots: void testFlag() const; void testFlagZeroFlag() const; void testFlagMultiBits() const; + void testFlags(); + void testAnyFlag(); void constExpr(); void signedness(); void classEnum(); @@ -91,6 +93,62 @@ void tst_QFlags::testFlagMultiBits() const } } +void tst_QFlags::testFlags() +{ + using Int = Qt::TextInteractionFlags::Int; + constexpr Int Zero(0); + + Qt::TextInteractionFlags flags; + QCOMPARE(flags.toInt(), Zero); + QVERIFY(flags.testFlags(flags)); + QVERIFY(Qt::TextInteractionFlags::fromInt(Zero).testFlags(flags)); + QVERIFY(!flags.testFlags(Qt::TextSelectableByMouse)); + QVERIFY(!flags.testFlags(Qt::TextSelectableByKeyboard)); + QVERIFY(!flags.testFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testFlags(Qt::TextInteractionFlags::fromInt(Zero))); + QVERIFY(flags.testFlags(Qt::TextInteractionFlags(Qt::TextSelectableByMouse) & ~Qt::TextSelectableByMouse)); + + flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard; + QVERIFY(flags.toInt() != Zero); + QVERIFY(flags.testFlags(flags)); + QVERIFY(flags.testFlags(Qt::TextSelectableByMouse)); + QVERIFY(flags.testFlags(Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testFlags(Qt::TextSelectableByKeyboard | Qt::TextSelectableByMouse)); + QVERIFY(!flags.testFlags(Qt::TextSelectableByKeyboard | Qt::TextSelectableByMouse | Qt::TextEditable)); + QVERIFY(!flags.testFlags(Qt::TextInteractionFlags())); + QVERIFY(!flags.testFlags(Qt::TextInteractionFlags::fromInt(Zero))); + QVERIFY(!flags.testFlags(Qt::TextEditable)); + QVERIFY(!flags.testFlags(Qt::TextSelectableByMouse | Qt::TextEditable)); +} + +void tst_QFlags::testAnyFlag() +{ + Qt::TextInteractionFlags flags; + QVERIFY(!flags.testAnyFlags(Qt::NoTextInteraction)); + QVERIFY(!flags.testAnyFlags(Qt::TextSelectableByMouse)); + QVERIFY(!flags.testAnyFlags(Qt::TextSelectableByKeyboard)); + QVERIFY(!flags.testAnyFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard)); + QVERIFY(!flags.testAnyFlag(Qt::TextEditorInteraction)); + QVERIFY(!flags.testAnyFlag(Qt::TextBrowserInteraction)); + + flags = Qt::TextSelectableByMouse; + QVERIFY(!flags.testAnyFlags(Qt::NoTextInteraction)); + QVERIFY(flags.testAnyFlags(Qt::TextSelectableByMouse)); + QVERIFY(!flags.testAnyFlags(Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testAnyFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testAnyFlag(Qt::TextEditorInteraction)); + QVERIFY(flags.testAnyFlag(Qt::TextBrowserInteraction)); + + flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard; + QVERIFY(!flags.testAnyFlags(Qt::NoTextInteraction)); + QVERIFY(flags.testAnyFlags(Qt::TextSelectableByMouse)); + QVERIFY(flags.testAnyFlags(Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testAnyFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard)); + QVERIFY(flags.testAnyFlag(Qt::TextEditorInteraction)); + QVERIFY(flags.testAnyFlag(Qt::TextEditorInteraction)); + QVERIFY(flags.testAnyFlag(Qt::TextBrowserInteraction)); +} + template <unsigned int N, typename T> bool verifyConstExpr(T n) { return n == N; } constexpr Qt::MouseButtons testRelaxedConstExpr() |