From 9760f881c54e601c56d606b6fe276def9531a43d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 18 Jan 2018 17:10:03 +0100 Subject: QTestlib: Add formatting for QFlags<> Add formatting for registered enumerations based on QMetaEnum and unregistered enumerations as hex values. [ChangeLog][QtTest] QtTest now prints values of QFlags that failed to compare with QCOMPARE. Task-number: QTBUG-65845 Change-Id: I3eae6d20d3c0d72441ca6c4037d9a8dafa4b6357 Reviewed-by: Mitch Curtis Reviewed-by: Edward Welbourne --- .../auto/testlib/selftests/cmptest/tst_cmptest.cpp | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp') diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp index a662fea615..8e2c7694a5 100644 --- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp +++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp @@ -130,6 +130,10 @@ private slots: void compare_unregistered_enums(); void compare_registered_enums(); void compare_class_enums(); + void test_windowflags_data(); + void test_windowflags(); + void test_unregistered_flags_data(); + void test_unregistered_flags(); void compare_boolfuncs(); void compare_to_nullptr(); void compare_pointerfuncs(); @@ -180,6 +184,64 @@ void tst_Cmptest::compare_class_enums() QCOMPARE(MyClassEnum::MyClassEnumValue1, MyClassEnum::MyClassEnumValue2); } +void tst_Cmptest::test_windowflags_data() +{ + QTest::addColumn("actualWindowFlags"); + QTest::addColumn("expectedWindowFlags"); + + const Qt::WindowFlags windowFlags = Qt::Window + | Qt::WindowSystemMenuHint | Qt::WindowStaysOnBottomHint; + QTest::newRow("pass") + << windowFlags + << windowFlags; + QTest::newRow("fail1") + << windowFlags + << (windowFlags | Qt::FramelessWindowHint); + QTest::newRow("fail2") + << Qt::WindowFlags(Qt::Window) + << Qt::WindowFlags(Qt::Window | Qt::FramelessWindowHint); +} + +void tst_Cmptest::test_windowflags() +{ + QFETCH(Qt::WindowFlags, actualWindowFlags); + QFETCH(Qt::WindowFlags, expectedWindowFlags); + QCOMPARE(actualWindowFlags, expectedWindowFlags); +} + +enum UnregisteredEnum { + UnregisteredEnumValue1 = 0x1, + UnregisteredEnumValue2 = 0x2, + UnregisteredEnumValue3 = 0x4 +}; + +typedef QFlags UnregisteredFlags; + +Q_DECLARE_METATYPE(UnregisteredFlags); + +void tst_Cmptest::test_unregistered_flags_data() +{ + QTest::addColumn("actualFlags"); + QTest::addColumn("expectedFlags"); + + QTest::newRow("pass") + << UnregisteredFlags(UnregisteredEnumValue1) + << UnregisteredFlags(UnregisteredEnumValue1); + QTest::newRow("fail1") + << UnregisteredFlags(UnregisteredEnumValue1 | UnregisteredEnumValue2) + << UnregisteredFlags(UnregisteredEnumValue1 | UnregisteredEnumValue3); + QTest::newRow("fail2") + << UnregisteredFlags(UnregisteredEnumValue1) + << UnregisteredFlags(UnregisteredEnumValue1 | UnregisteredEnumValue3); +} + +void tst_Cmptest::test_unregistered_flags() +{ + QFETCH(UnregisteredFlags, actualFlags); + QFETCH(UnregisteredFlags, expectedFlags); + QCOMPARE(actualFlags, expectedFlags); +} + static bool boolfunc() { return true; } static bool boolfunc2() { return true; } -- cgit v1.2.3