From 7499e642e04799e831debf03d03e49c225a05e82 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 18 Nov 2015 11:54:03 -0800 Subject: QVariant: retain duplicate keys when converting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-49520 Change-Id: I3e15a26e0e424169ac2bffff1417e3f4398c2277 Reviewed-by: Olivier Goffart (Woboq GmbH) Reviewed-by: Jędrzej Nowacki --- .../auto/corelib/kernel/qvariant/tst_qvariant.cpp | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) (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 6da8f55e61..40eb2e5c9d 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -2,6 +2,7 @@ ** ** Copyright (C) 2015 The Qt Company Ltd. ** Copyright (C) 2015 Olivier Goffart +** Copyright (C) 2015 Intel Corporation. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -2491,14 +2492,26 @@ void tst_QVariant::variantMap() QVariant v = map; QVariantMap map2 = qvariant_cast(v); + QCOMPARE(map2.value("test").toInt(), 42); + QCOMPARE(map2, map); + map2 = v.toMap(); QCOMPARE(map2.value("test").toInt(), 42); + QCOMPARE(map2, map); QVariant v2 = QVariant(QMetaType::type("QVariantMap"), &map); QCOMPARE(qvariant_cast(v2).value("test").toInt(), 42); QVariant v3 = QVariant(QMetaType::type("QMap"), &map); QCOMPARE(qvariant_cast(v3).value("test").toInt(), 42); + + // multi-keys + map.insertMulti("test", 47); + v = map; + map2 = qvariant_cast(v); + QCOMPARE(map2, map); + map2 = v.toMap(); + QCOMPARE(map2, map); } void tst_QVariant::variantHash() @@ -2508,14 +2521,26 @@ void tst_QVariant::variantHash() QVariant v = hash; QVariantHash hash2 = qvariant_cast(v); + QCOMPARE(hash2.value("test").toInt(), 42); + QCOMPARE(hash2, hash); + hash2 = v.toHash(); QCOMPARE(hash2.value("test").toInt(), 42); + QCOMPARE(hash2, hash); QVariant v2 = QVariant(QMetaType::type("QVariantHash"), &hash); QCOMPARE(qvariant_cast(v2).value("test").toInt(), 42); QVariant v3 = QVariant(QMetaType::type("QHash"), &hash); QCOMPARE(qvariant_cast(v3).value("test").toInt(), 42); + + // multi-keys + hash.insertMulti("test", 47); + v = hash; + hash2 = qvariant_cast(v); + QCOMPARE(hash2, hash); + hash2 = v.toHash(); + QCOMPARE(hash2, hash); } class CustomQObject : public QObject { @@ -3233,24 +3258,40 @@ void tst_QVariant::convertIterables() const map.insert("3", 4); QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); + + map.insertMulti("3", 5); + QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); + QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); } { QVariantMap map; map.insert("3", 4); QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); + + map.insertMulti("3", 5); + QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); + QCOMPARE(QVariant::fromValue(map).value().count(), map.count()); } { QHash hash; hash.insert("3", 4); QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); + + hash.insertMulti("3", 5); + QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); + QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); } { QVariantHash hash; hash.insert("3", 4); QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); + + hash.insertMulti("3", 5); + QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); + QCOMPARE(QVariant::fromValue(hash).value().count(), hash.count()); } } -- cgit v1.2.3