From d0f64542c8e6ec272d3fa19cf25ffe7ac33a99bc Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 8 Jun 2015 12:21:30 +0200 Subject: [PATCH] Output registered enumeration names in QCOMPARE. Produces output: FAIL! : tst_qquickwindow::cursor() Compared values are not the same Actual (clippedItem.cursor().shape()): ForbiddenCursor Expected (Qt::ArrowCursor) : ArrowCursor Loc: [tst_qquickwindow.cpp(1465)] Change-Id: I8a9dfa099a6011cbe0c07da683d4be3d07e22d5d Reviewed-by: Olivier Goffart (Woboq GmbH) Reviewed-by: Frederik Gladhorn --- src/testlib/qtestcase.h | 21 +++++- .../testlib/selftests/cmptest/tst_cmptest.cpp | 16 ++++ .../selftests/expected_cmptest.lightxml | 74 +++++++++++-------- .../testlib/selftests/expected_cmptest.txt | 50 +++++++------ .../testlib/selftests/expected_cmptest.xml | 74 +++++++++++-------- .../selftests/expected_cmptest.xunitxml | 10 ++- 6 files changed, 160 insertions(+), 85 deletions(-) diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index 2c6a94faa1..4996931975 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -220,12 +221,28 @@ class QTestData; namespace QTest { - template - inline char *toString(const T &) + namespace Internal { + + template // Output registered enums + inline typename QtPrivate::QEnableIf::Value, char*>::Type toString(T e) + { + QMetaEnum me = QMetaEnum::fromType(); + return qstrdup(me.key(e)); + } + + template // Fallback + inline typename QtPrivate::QEnableIf::Value, char*>::Type toString(const T &) { return 0; } + } // namespace Internal + + template + inline char *toString(const T &t) + { + return Internal::toString(t); + } Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, int length); Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, int length); diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp index 6b94dfb529..1ee78960ab 100644 --- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp +++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp @@ -124,6 +124,8 @@ class tst_Cmptest: public QObject Q_OBJECT private slots: + void compare_unregistered_enums(); + void compare_registered_enums(); void compare_boolfuncs(); void compare_pointerfuncs(); void compare_tostring(); @@ -140,6 +142,20 @@ private slots: #endif }; +enum MyUnregisteredEnum { MyUnregisteredEnumValue1, MyUnregisteredEnumValue2 }; + +void tst_Cmptest::compare_unregistered_enums() +{ + QCOMPARE(MyUnregisteredEnumValue1, MyUnregisteredEnumValue1); + QCOMPARE(MyUnregisteredEnumValue1, MyUnregisteredEnumValue2); +} + +void tst_Cmptest::compare_registered_enums() +{ + QCOMPARE(Qt::ArrowCursor, Qt::ArrowCursor); + QCOMPARE(Qt::ArrowCursor, Qt::BusyCursor); +} + static bool boolfunc() { return true; } static bool boolfunc2() { return true; } diff --git a/tests/auto/testlib/selftests/expected_cmptest.lightxml b/tests/auto/testlib/selftests/expected_cmptest.lightxml index 4a376b5c8b..c8d2cff964 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.lightxml +++ b/tests/auto/testlib/selftests/expected_cmptest.lightxml @@ -5,18 +5,32 @@ - + + + + + + + + + + + + + - + - + - + - + - + - + ) Expected (expected): QVariant(PhonyClass,)]]> - + @@ -52,65 +66,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests/auto/testlib/selftests/expected_cmptest.txt b/tests/auto/testlib/selftests/expected_cmptest.txt index 9e8c56ed99..4b12e08750 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.txt +++ b/tests/auto/testlib/selftests/expected_cmptest.txt @@ -1,91 +1,97 @@ ********* Start testing of tst_Cmptest ********* -Config: Using QtTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@ +Config: Using QtTest library PASS : tst_Cmptest::initTestCase() +FAIL! : tst_Cmptest::compare_unregistered_enums() Compared values are not the same + Loc: [tst_cmptest.cpp(150)] +FAIL! : tst_Cmptest::compare_registered_enums() Compared values are not the same + Actual (Qt::ArrowCursor): ArrowCursor + Expected (Qt::BusyCursor) : BusyCursor + Loc: [tst_cmptest.cpp(156)] PASS : tst_Cmptest::compare_boolfuncs() PASS : tst_Cmptest::compare_pointerfuncs() FAIL! : tst_Cmptest::compare_tostring(int, string) Compared values are not the same Actual (actual) : QVariant(int,123) Expected (expected): QVariant(QString,hi) - Loc: [tst_cmptest.cpp(219)] + Loc: [tst_cmptest.cpp(227)] PASS : tst_Cmptest::compare_tostring(both invalid) FAIL! : tst_Cmptest::compare_tostring(null hash, invalid) Compared values are not the same Actual (actual) : QVariant(QVariantHash) Expected (expected): QVariant() - Loc: [tst_cmptest.cpp(219)] + Loc: [tst_cmptest.cpp(227)] FAIL! : tst_Cmptest::compare_tostring(string, null user type) Compared values are not the same Actual (actual) : QVariant(QString,A simple string) Expected (expected): QVariant(PhonyClass) - Loc: [tst_cmptest.cpp(219)] + Loc: [tst_cmptest.cpp(227)] FAIL! : tst_Cmptest::compare_tostring(both non-null user type) Compared values are not the same Actual (actual) : QVariant(PhonyClass,) Expected (expected): QVariant(PhonyClass,) - Loc: [tst_cmptest.cpp(219)] + Loc: [tst_cmptest.cpp(227)] PASS : tst_Cmptest::compareQStringLists(empty lists) PASS : tst_Cmptest::compareQStringLists(equal lists) FAIL! : tst_Cmptest::compareQStringLists(last item different) Compared lists differ at index 2. Actual (opA): "string3" Expected (opB): "DIFFERS" - Loc: [tst_cmptest.cpp(313)] + Loc: [tst_cmptest.cpp(321)] FAIL! : tst_Cmptest::compareQStringLists(second-last item different) Compared lists differ at index 2. Actual (opA): "string3" Expected (opB): "DIFFERS" - Loc: [tst_cmptest.cpp(313)] + Loc: [tst_cmptest.cpp(321)] FAIL! : tst_Cmptest::compareQStringLists(prefix) Compared lists have different sizes. Actual (opA) size: 2 Expected (opB) size: 1 - Loc: [tst_cmptest.cpp(313)] + Loc: [tst_cmptest.cpp(321)] FAIL! : tst_Cmptest::compareQStringLists(short list second) Compared lists have different sizes. Actual (opA) size: 12 Expected (opB) size: 1 - Loc: [tst_cmptest.cpp(313)] + Loc: [tst_cmptest.cpp(321)] FAIL! : tst_Cmptest::compareQStringLists(short list first) Compared lists have different sizes. Actual (opA) size: 1 Expected (opB) size: 12 - Loc: [tst_cmptest.cpp(313)] + Loc: [tst_cmptest.cpp(321)] FAIL! : tst_Cmptest::compareQListInt() Compared lists differ at index 2. Actual (int1): 3 Expected (int2): 4 - Loc: [tst_cmptest.cpp(320)] + Loc: [tst_cmptest.cpp(328)] FAIL! : tst_Cmptest::compareQListDouble() Compared lists differ at index 0. Actual (double1): 1.5 Expected (double2): 1 - Loc: [tst_cmptest.cpp(327)] + Loc: [tst_cmptest.cpp(335)] PASS : tst_Cmptest::compareQPixmaps(both null) FAIL! : tst_Cmptest::compareQPixmaps(one null) Compared QPixmaps differ. Actual (opA).isNull(): 1 Expected (opB).isNull(): 0 - Loc: [tst_cmptest.cpp(353)] + Loc: [tst_cmptest.cpp(361)] FAIL! : tst_Cmptest::compareQPixmaps(other null) Compared QPixmaps differ. Actual (opA).isNull(): 0 Expected (opB).isNull(): 1 - Loc: [tst_cmptest.cpp(353)] + Loc: [tst_cmptest.cpp(361)] PASS : tst_Cmptest::compareQPixmaps(equal) FAIL! : tst_Cmptest::compareQPixmaps(different size) Compared QPixmaps differ in size. Actual (opA): 11x20 Expected (opB): 20x20 - Loc: [tst_cmptest.cpp(353)] + Loc: [tst_cmptest.cpp(361)] FAIL! : tst_Cmptest::compareQPixmaps(different pixels) Compared values are not the same - Loc: [tst_cmptest.cpp(353)] + Loc: [tst_cmptest.cpp(361)] PASS : tst_Cmptest::compareQImages(both null) FAIL! : tst_Cmptest::compareQImages(one null) Compared QImages differ. Actual (opA).isNull(): 1 Expected (opB).isNull(): 0 - Loc: [tst_cmptest.cpp(380)] + Loc: [tst_cmptest.cpp(388)] FAIL! : tst_Cmptest::compareQImages(other null) Compared QImages differ. Actual (opA).isNull(): 0 Expected (opB).isNull(): 1 - Loc: [tst_cmptest.cpp(380)] + Loc: [tst_cmptest.cpp(388)] PASS : tst_Cmptest::compareQImages(equal) FAIL! : tst_Cmptest::compareQImages(different size) Compared QImages differ in size. Actual (opA): 11x20 Expected (opB): 20x20 - Loc: [tst_cmptest.cpp(380)] + Loc: [tst_cmptest.cpp(388)] FAIL! : tst_Cmptest::compareQImages(different format) Compared QImages differ in format. Actual (opA): 6 Expected (opB): 3 - Loc: [tst_cmptest.cpp(380)] + Loc: [tst_cmptest.cpp(388)] FAIL! : tst_Cmptest::compareQImages(different pixels) Compared values are not the same - Loc: [tst_cmptest.cpp(380)] + Loc: [tst_cmptest.cpp(388)] PASS : tst_Cmptest::cleanupTestCase() -Totals: 11 passed, 20 failed, 0 skipped, 0 blacklisted +Totals: 11 passed, 22 failed, 0 skipped, 0 blacklisted ********* Finished testing of tst_Cmptest ********* diff --git a/tests/auto/testlib/selftests/expected_cmptest.xml b/tests/auto/testlib/selftests/expected_cmptest.xml index aefb1b5f4c..1a5c772da5 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.xml +++ b/tests/auto/testlib/selftests/expected_cmptest.xml @@ -7,18 +7,32 @@ - + + + + + + + + + + + + + - + - + - + - + - + - + ) Expected (expected): QVariant(PhonyClass,)]]> - + @@ -54,65 +68,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/tests/auto/testlib/selftests/expected_cmptest.xunitxml b/tests/auto/testlib/selftests/expected_cmptest.xunitxml index 7502d3cc54..bb1ef22577 100644 --- a/tests/auto/testlib/selftests/expected_cmptest.xunitxml +++ b/tests/auto/testlib/selftests/expected_cmptest.xunitxml @@ -1,11 +1,19 @@ - + + + + + + +