From 37f617c405ae4f26cbb6bb4f08d61d6ccc111a98 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 9 Nov 2018 14:05:35 +0100 Subject: Add qfloat16 support to QCOMPARE Change-Id: Ide06f215a888328308a06e7e48edd666f790a5f0 Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/testlib/qtestcase.cpp | 18 ++++++++++++++++++ src/testlib/qtestcase.h | 5 +++++ 2 files changed, 23 insertions(+) (limited to 'src/testlib') diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 1c3292ead9..a9e2cc5ea3 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -2483,6 +2484,16 @@ bool QTest::compare_helper(bool success, const char *failureMsg, return QTestResult::compare(success, failureMsg, val1, val2, actual, expected, file, line); } +/*! \fn bool QTest::qCompare(const qfloat16 &t1, const qfloat16 &t2, const char *actual, const char *expected, const char *file, int line) + \internal + */ +bool QTest::qCompare(qfloat16 const &t1, qfloat16 const &t2, const char *actual, const char *expected, + const char *file, int line) +{ + return compare_helper(qFuzzyCompare(t1, t2), "Compared qfloat16s are not the same (fuzzy compare)", + toString(t1), toString(t2), actual, expected, file, line); +} + /*! \fn bool QTest::qCompare(const float &t1, const float &t2, const char *actual, const char *expected, const char *file, int line) \internal */ @@ -2547,6 +2558,13 @@ TO_STRING_IMPL(unsigned char, %hhu) TO_STRING_IMPL(float, %g) TO_STRING_IMPL(double, %lg) +template <> Q_TESTLIB_EXPORT char *QTest::toString(const qfloat16 &t) +{ + char *msg = new char[16]; + qsnprintf(msg, 16, "%.3g", static_cast(t)); + return msg; +} + template <> Q_TESTLIB_EXPORT char *QTest::toString(const char &t) { unsigned char c = static_cast(t); diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index a6f1711230..39364df8ef 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE +class qfloat16; class QRegularExpression; #define QVERIFY(statement) \ @@ -361,6 +362,9 @@ namespace QTest } #endif + Q_TESTLIB_EXPORT bool qCompare(qfloat16 const &t1, qfloat16 const &t2, + const char *actual, const char *expected, const char *file, int line); + Q_TESTLIB_EXPORT bool qCompare(float const &t1, float const &t2, const char *actual, const char *expected, const char *file, int line); @@ -405,6 +409,7 @@ namespace QTest QTEST_COMPARE_DECL(float) QTEST_COMPARE_DECL(double) + QTEST_COMPARE_DECL(qfloat16) QTEST_COMPARE_DECL(char) QTEST_COMPARE_DECL(signed char) QTEST_COMPARE_DECL(unsigned char) -- cgit v1.2.3