summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/global/qflags
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2021-05-03 01:20:55 +0200
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2021-05-15 17:34:01 +0200
commitc4947c1c4c0d518197329cf019b04cff4e676541 (patch)
treeed72cc1df4689fc2242f4b320513cafbdb1830b3 /tests/auto/corelib/global/qflags
parent78e6b54cdea325cd925603cbfa9e76c00db3db92 (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/corelib/global/qflags')
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp58
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()