From ae981f224de9d2a24bfb1547e2049b6ccd9fc4ac Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 30 Oct 2014 10:59:11 +0100 Subject: Add conversion between QVariantHash and QJsonObject Adds automatic conversion from QVariants with a QVariantHash to QJsonValue and explicit methods for conversion between QVariantHash and QJsonObject. [ChangeLog][QtCore][QJsonObject] Added conversion to and from QVariantHash Change-Id: I140ef881463acabaab2648e28209487d8ad18e0d Reviewed-by: Lars Knoll --- tests/auto/corelib/json/tst_qtjson.cpp | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'tests/auto/corelib') diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index 56a5a28c50..997ceaf7b9 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -90,7 +90,9 @@ private Q_SLOTS: void fromVariant(); void fromVariantMap(); + void fromVariantHash(); void toVariantMap(); + void toVariantHash(); void toVariantList(); void toJson(); @@ -1165,6 +1167,17 @@ void tst_QtJson::fromVariantMap() QCOMPARE(array.at(3).toString(), QLatin1String("foo")); } +void tst_QtJson::fromVariantHash() +{ + QVariantHash map; + map.insert(QLatin1String("key1"), QLatin1String("value1")); + map.insert(QLatin1String("key2"), QLatin1String("value2")); + QJsonObject object = QJsonObject::fromVariantHash(map); + QCOMPARE(object.size(), 2); + QCOMPARE(object.value(QLatin1String("key1")), QJsonValue(QLatin1String("value1"))); + QCOMPARE(object.value(QLatin1String("key2")), QJsonValue(QLatin1String("value2"))); +} + void tst_QtJson::toVariantMap() { QCOMPARE(QMetaType::Type(QJsonValue(QJsonObject()).toVariant().type()), QMetaType::QVariantMap); // QTBUG-32524 @@ -1196,6 +1209,35 @@ void tst_QtJson::toVariantMap() QCOMPARE(list.at(3), QVariant()); } +void tst_QtJson::toVariantHash() +{ + QJsonObject object; + QVariantHash hash = object.toVariantHash(); + QVERIFY(hash.isEmpty()); + + object.insert("Key", QString("Value")); + object.insert("null", QJsonValue()); + QJsonArray array; + array.append(true); + array.append(999.); + array.append(QLatin1String("string")); + array.append(QJsonValue()); + object.insert("Array", array); + + hash = object.toVariantHash(); + + QCOMPARE(hash.size(), 3); + QCOMPARE(hash.value("Key"), QVariant(QString("Value"))); + QCOMPARE(hash.value("null"), QVariant()); + QCOMPARE(hash.value("Array").type(), QVariant::List); + QVariantList list = hash.value("Array").toList(); + QCOMPARE(list.size(), 4); + QCOMPARE(list.at(0), QVariant(true)); + QCOMPARE(list.at(1), QVariant(999.)); + QCOMPARE(list.at(2), QVariant(QLatin1String("string"))); + QCOMPARE(list.at(3), QVariant()); +} + void tst_QtJson::toVariantList() { QCOMPARE(QMetaType::Type(QJsonValue(QJsonArray()).toVariant().type()), QMetaType::QVariantList); // QTBUG-32524 -- cgit v1.2.3