From 22494ea8e82d5d5588e67e8067f0273687ed9098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Tue, 13 Mar 2012 14:15:53 +0100 Subject: Unify QMetaType::TypeFlags detection. Duplicated code was removed. As an side effect: - one runtime flag check was replaced by a compile time check. - is enum flag can be used together with built-in types. Change-Id: I54173e7b07ce7e487d3cc21ba24dcccd28b5d049 Reviewed-by: Olivier Goffart --- .../corelib/kernel/qmetatype/tst_qmetatype.cpp | 48 +++++++++++++--------- 1 file changed, 29 insertions(+), 19 deletions(-) (limited to 'tests') diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index bc5fa2716b..a3959f6d33 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -717,39 +717,47 @@ Q_DECLARE_METATYPE(QPairPC) Q_DECLARE_METATYPE(QPairPM) Q_DECLARE_METATYPE(QPairPP) +enum FlagsDataEnum {}; +Q_DECLARE_METATYPE(FlagsDataEnum); + void tst_QMetaType::flags_data() { QTest::addColumn("type"); QTest::addColumn("isMovable"); QTest::addColumn("isComplex"); QTest::addColumn("isPointerToQObject"); + QTest::addColumn("isEnum"); #define ADD_METATYPE_TEST_ROW(MetaTypeName, MetaTypeId, RealType) \ - QTest::newRow(#RealType) << MetaTypeId << bool(!QTypeInfo::isStatic) << bool(QTypeInfo::isComplex) << bool(QtPrivate::IsPointerToTypeDerivedFromQObject::Value); + QTest::newRow(#RealType) << MetaTypeId \ + << bool(!QTypeInfo::isStatic) \ + << bool(QTypeInfo::isComplex) \ + << bool(QtPrivate::IsPointerToTypeDerivedFromQObject::Value) \ + << bool(Q_IS_ENUM(RealType)); QT_FOR_EACH_STATIC_CORE_CLASS(ADD_METATYPE_TEST_ROW) QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(ADD_METATYPE_TEST_ROW) QT_FOR_EACH_STATIC_CORE_POINTER(ADD_METATYPE_TEST_ROW) #undef ADD_METATYPE_TEST_ROW - QTest::newRow("TestSpace::Foo") << ::qMetaTypeId() << false << true << false; - QTest::newRow("Whity") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("CustomMovable") << ::qMetaTypeId() << true << true << false; - QTest::newRow("CustomObject*") << ::qMetaTypeId() << true << false << true; - QTest::newRow("CustomMultiInheritanceObject*") << ::qMetaTypeId() << true << false << true; - QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false; - QTest::newRow("QPair") << ::qMetaTypeId >() << true << false << false; + QTest::newRow("TestSpace::Foo") << ::qMetaTypeId() << false << true << false << false; + QTest::newRow("Whity") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("CustomMovable") << ::qMetaTypeId() << true << true << false << false; + QTest::newRow("CustomObject*") << ::qMetaTypeId() << true << false << true << false; + QTest::newRow("CustomMultiInheritanceObject*") << ::qMetaTypeId() << true << false << true << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << false << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << true << true << false << false; + QTest::newRow("QPair") << ::qMetaTypeId >() << true << false << false << false; + QTest::newRow("FlagsDataEnum") << ::qMetaTypeId() << false << true << false << true; // invalid ids. - QTest::newRow("-1") << -1 << false << false << false; - QTest::newRow("-124125534") << -124125534 << false << false << false; - QTest::newRow("124125534") << 124125534 << false << false << false; - + QTest::newRow("-1") << -1 << false << false << false << false; + QTest::newRow("-124125534") << -124125534 << false << false << false << false; + QTest::newRow("124125534") << 124125534 << false << false << false << false; } void tst_QMetaType::flags() @@ -758,11 +766,13 @@ void tst_QMetaType::flags() QFETCH(bool, isMovable); QFETCH(bool, isComplex); QFETCH(bool, isPointerToQObject); + QFETCH(bool, isEnum); QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::NeedsConstruction), isComplex); QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::NeedsDestruction), isComplex); QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::MovableType), isMovable); QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::PointerToQObject), isPointerToQObject); + QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::IsEnumeration), isEnum); } void tst_QMetaType::flagsStaticLess_data() -- cgit v1.2.3