Skip to content

Commit

Permalink
Fallback to QVariant( QVariant::Type::Int )
Browse files Browse the repository at this point in the history
  • Loading branch information
elpaso committed May 27, 2019
1 parent 403bacf commit f399d3f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/core/qgsjsonutils.cpp
Expand Up @@ -347,7 +347,8 @@ QVariantList QgsJsonUtils::parseArray( const QString &json, QVariant::Type type
}
else if ( item.is_null() )
{
v = QVariant( type );
// Fallback to int
v = QVariant( type == QVariant::Type::Invalid ? QVariant::Type::Int : type );
}
else
{
Expand Down
10 changes: 4 additions & 6 deletions tests/src/core/testqgsjsonutils.cpp
Expand Up @@ -91,19 +91,17 @@ void TestQgsJsonUtils::testJsonArray()
QCOMPARE( QgsJsonUtils::parseArray( R"([])", QVariant::Int ), QVariantList() );
QCOMPARE( QgsJsonUtils::parseArray( "", QVariant::Int ), QVariantList() );
// Nulls
QCOMPARE( QgsJsonUtils::parseArray( R"([null, null])" ), QVariantList() << QVariant() << QVariant() );
QVERIFY( QVariant().isValid() );
for ( const QVariant &value : QgsJsonUtils::parseArray( R"([null, null])" ) )
{
QVERIFY( value.isNull() );
// This would fail because the expected type is not set and an invalid QVariant is created:
// QVERIFY( value.isValid() );
QVERIFY( value.isValid() );
QCOMPARE( value, QVariant( QVariant::Type::Int ) );
}
QCOMPARE( QgsJsonUtils::parseArray( R"([null, null])", QVariant::Type::Int ), QVariantList() << QVariant( QVariant::Type::Int ) << QVariant( QVariant::Type::Int ) );
for ( const QVariant &value : QgsJsonUtils::parseArray( R"([null, null])", QVariant::Type::Int ) )
for ( const QVariant &value : QgsJsonUtils::parseArray( R"([null, null])", QVariant::Type::Double ) )
{
QVERIFY( value.isNull() );
QVERIFY( value.isValid() );
QCOMPARE( value, QVariant( QVariant::Type::Double ) );
}
}

Expand Down

0 comments on commit f399d3f

Please sign in to comment.