From f6f1ee63dc1fbdd1f49a18949bd44f6bb0251d1d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 4 Nov 2022 14:39:06 -0700 Subject: qfloat16: make it a built-in metatype I've reserved the IDs for int128, uint128, bfloat16, and float128, because the mask in qvariant.cpp's qIsNumericType() requires primitives to be less than 64 to operate properly. Added a QMetaType/QDataStream test to confirm it is indeed built-in. Change-Id: I3d74c753055744deb8acfffd17247f7f57bada02 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp | 12 ++++++++++++ tests/auto/corelib/kernel/qmetatype/tst_qmetatype_common.h | 3 +++ 2 files changed, 15 insertions(+) (limited to 'tests/auto/corelib') diff --git a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp index 9acbc2099a..7260c2900d 100644 --- a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp +++ b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -656,6 +657,17 @@ void tst_qfloat16::dataStream() ds >> zero; QCOMPARE(ds.status(), QDataStream::Ok); QCOMPARE(zero, qfloat16(0)); + + ds.device()->seek(0); + ds.resetStatus(); + QMetaType mt = QMetaType(QMetaType::Float16); + QVERIFY(mt.save(ds, &zero)); + + ds.device()->seek(0); + ds.resetStatus(); + zero = -1; + QVERIFY(mt.load(ds, &zero)); + QCOMPARE(zero, qfloat16(0)); } void tst_qfloat16::textStream() diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype_common.h b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype_common.h index 3324cb5b32..e643209fbb 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype_common.h +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype_common.h @@ -129,6 +129,9 @@ template<> struct TestValueFactory { template<> struct TestValueFactory { static float *create() { return new float(FLT_MIN); } }; +template<> struct TestValueFactory { + static auto create() { return new qfloat16(std::numeric_limits::min()); } +}; template<> struct TestValueFactory { static QObject * *create() { return new QObject *(0); } }; -- cgit v1.2.3