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>
This commit is contained in:
parent
0aba7fbb58
commit
b83dc929ec
@ -360,6 +360,7 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other)
|
|||||||
\li QMetaType::UInt
|
\li QMetaType::UInt
|
||||||
\li QMetaType::LongLong
|
\li QMetaType::LongLong
|
||||||
\li QMetaType::ULongLong
|
\li QMetaType::ULongLong
|
||||||
|
\li QMetaType::Float
|
||||||
\li QMetaType::Double
|
\li QMetaType::Double
|
||||||
\endlist
|
\endlist
|
||||||
\li QJsonValue::Double
|
\li QJsonValue::Double
|
||||||
@ -391,10 +392,11 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other)
|
|||||||
*/
|
*/
|
||||||
QJsonValue QJsonValue::fromVariant(const QVariant &variant)
|
QJsonValue QJsonValue::fromVariant(const QVariant &variant)
|
||||||
{
|
{
|
||||||
switch (variant.type()) {
|
switch (variant.userType()) {
|
||||||
case QVariant::Bool:
|
case QVariant::Bool:
|
||||||
return QJsonValue(variant.toBool());
|
return QJsonValue(variant.toBool());
|
||||||
case QVariant::Int:
|
case QVariant::Int:
|
||||||
|
case QMetaType::Float:
|
||||||
case QVariant::Double:
|
case QVariant::Double:
|
||||||
case QVariant::LongLong:
|
case QVariant::LongLong:
|
||||||
case QVariant::ULongLong:
|
case QVariant::ULongLong:
|
||||||
|
@ -95,6 +95,7 @@ private Q_SLOTS:
|
|||||||
|
|
||||||
void undefinedValues();
|
void undefinedValues();
|
||||||
|
|
||||||
|
void fromVariant();
|
||||||
void fromVariantMap();
|
void fromVariantMap();
|
||||||
void toVariantMap();
|
void toVariantMap();
|
||||||
void toVariantList();
|
void toVariantList();
|
||||||
@ -1040,6 +1041,62 @@ void tst_QtJson::undefinedValues()
|
|||||||
QCOMPARE(array.at(-1).type(), QJsonValue::Undefined);
|
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()
|
void tst_QtJson::fromVariantMap()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user