From 849604e2f98296ddcde4f1e323e2383ef4f0dd49 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 31 Oct 2014 16:28:47 -0700 Subject: Fix asymmetry in QVariant::cmp when A converts to B but not the opposite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This would result in (a == b) != (b == a). The == operation should be commutative as much as possible. Now, there's still an asymmetry in that b is forced to a type and the conversion may fail. QVariant should have an idea of what conversions are "promotion" and which ones are "demotion" (subject to loss of data and/or can fail), so it can do the promotion first Task-number: QTBUG-42254 Change-Id: I9fa4496bbbf0f8719ff8456cc24247290beac608 Reviewed-by: Jędrzej Nowacki --- tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp') diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 10c7e425f0..eae6311854 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -43,7 +43,7 @@ #include #include #include - +#include #include #include @@ -1436,6 +1436,13 @@ void tst_QVariant::operator_eq_eq_data() QTest::newRow("invalidConversionR") << QVariant(0) << QVariant(QString("bubu")) << false; // ### many other combinations missing + { + // QUuid can convert to QString, but not the opposite + QUuid uuid(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + QTest::newRow("uuidstring") << QVariant(uuid) << QVariant(uuid.toString()) << true; + QTest::newRow("stringuuid") << QVariant(uuid.toString()) << QVariant(uuid) << true; + } + { QMap map1; map1.insert( "X", 1 ); -- cgit v1.2.3