summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2016-05-16 14:22:03 +0200
committerOlivier Goffart (Woboq GmbH) <ogoffart@woboq.com>2016-05-16 15:58:28 +0000
commit45eba73492c89157b8c353548a948d538748cd43 (patch)
tree1a9fc5e39280212d149b9ba84c6d61e98acda150 /tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
parent474af0a61d6154006966a775d186687aa8881708 (diff)
Fix QVariant conversion to an enum type.
QVariant::canConvert<Enum> was returning true for everything can can be converted to integer, but not for integer itself. That's because in QVariant::canConvert we set the targetType to Int of it's an enum, but the Int->Int case was not on the conversion matrix. So this commits adds it to the conversion matrix and now QVariant::canConvert<Enum> returns consistently true for int itself. But even tough canConvert returned true, it did not actualy do any conversion to the enum type itself. Fix that by handling the case properlt in 'convert' [ChangeLog][QtCore][QVariant] Fixed QVariant::canConvert and conversion from integer types to enumeration types. Task-number: QTBUG-53384 Change-Id: I6ac066f3900e31bfcea7af77836ddfc7730bd60b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index f2f3baae6b..76230ccec8 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -4629,6 +4629,16 @@ template<typename Enum> void testVariant(Enum value, bool *ok)
QVERIFY(var2.convert(QMetaType::Int));
QCOMPARE(var2.value<int>(), static_cast<int>(value));
+ if (static_cast<qint64>(value) <= INT_MAX) {
+ int intValue = static_cast<int>(value);
+ QVariant intVar = intValue;
+ QVERIFY(intVar.canConvert<Enum>());
+ QCOMPARE(intVar.value<Enum>(), value);
+ }
+ qint64 longValue = static_cast<qint64>(value);
+ QVERIFY(QVariant(longValue).canConvert<Enum>());
+ QCOMPARE(QVariant(longValue).value<Enum>(), value);
+
*ok = true;
}