summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorSze Howe Koh <szehowe.koh@gmail.com>2014-03-04 20:48:31 +0800
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-06 12:21:14 +0100
commitb83dc929ec851b81c1236ea4fbeb7f9ad6239565 (patch)
tree7efe7c98768909b4466e25dbb1b4737e994153a6 /tests/auto
parent0aba7fbb5837c81351e7e4ba43044a8dbb37098c (diff)
Complete QJsonValue::fromVariant()
- QVariant can store (U)Int, (U)LongLong, Float and Double numbers. Previously, QJsonValue::fromVariant() converted Floats into Strings while converting the others to Doubles. - Add unit tests for QJsonValue::fromVariant() [ChangeLog][QtCore][JSON] QJsonValue::fromVariant() will now convert single-precision Floats into Doubles instead of Strings Change-Id: I457adbe29c37ada611d1c6d711c42866d63d4024 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index 589978e1a4..2f75ad631f 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -95,6 +95,7 @@ private Q_SLOTS:
void undefinedValues();
+ void fromVariant();
void fromVariantMap();
void toVariantMap();
void toVariantList();
@@ -1040,6 +1041,62 @@ void tst_QtJson::undefinedValues()
QCOMPARE(array.at(-1).type(), QJsonValue::Undefined);
}
+void tst_QtJson::fromVariant()
+{
+ bool boolValue = true;
+ int intValue = -1;
+ uint uintValue = 1;
+ long long longlongValue = -2;
+ unsigned long long ulonglongValue = 2;
+ float floatValue = 3.3f;
+ double doubleValue = 4.4;
+ QString stringValue("str");
+
+ QStringList stringList;
+ stringList.append(stringValue);
+ stringList.append("str2");
+ QJsonArray jsonArray_string;
+ jsonArray_string.append(stringValue);
+ jsonArray_string.append("str2");
+
+ QVariantList variantList;
+ variantList.append(boolValue);
+ variantList.append(floatValue);
+ variantList.append(doubleValue);
+ variantList.append(stringValue);
+ variantList.append(stringList);
+ variantList.append(QVariant());
+ QJsonArray jsonArray_variant;
+ jsonArray_variant.append(boolValue);
+ jsonArray_variant.append(floatValue);
+ jsonArray_variant.append(doubleValue);
+ jsonArray_variant.append(stringValue);
+ jsonArray_variant.append(jsonArray_string);
+ jsonArray_variant.append(QJsonValue());
+
+ QVariantMap variantMap;
+ variantMap["bool"] = boolValue;
+ variantMap["float"] = floatValue;
+ variantMap["string"] = stringValue;
+ variantMap["array"] = variantList;
+ QJsonObject jsonObject;
+ jsonObject["bool"] = boolValue;
+ jsonObject["float"] = floatValue;
+ jsonObject["string"] = stringValue;
+ jsonObject["array"] = jsonArray_variant;
+
+ QCOMPARE(QJsonValue::fromVariant(QVariant(boolValue)), QJsonValue(boolValue));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(intValue)), QJsonValue(intValue));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(uintValue)), QJsonValue(static_cast<double>(uintValue)));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(longlongValue)), QJsonValue(longlongValue));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(ulonglongValue)), QJsonValue(static_cast<double>(ulonglongValue)));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(floatValue)), QJsonValue(static_cast<double>(floatValue)));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(doubleValue)), QJsonValue(doubleValue));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(stringValue)), QJsonValue(stringValue));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(stringList)), QJsonValue(jsonArray_string));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(variantList)), QJsonValue(jsonArray_variant));
+ QCOMPARE(QJsonValue::fromVariant(QVariant(variantMap)), QJsonValue(jsonObject));
+}
void tst_QtJson::fromVariantMap()
{