From c8edde3b833cb3d15377afed13d6fcd2e5fa5cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Fri, 23 May 2014 13:45:27 +0200 Subject: [PATCH] Fix QJsonObject const index operator The operator should always return an undefined values for an empty object Change-Id: Ic38f7660d77c64b2d001967bc5109df4185db74a Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- src/corelib/json/qjsonobject.cpp | 2 +- tests/auto/corelib/json/tst_qtjson.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp index 27e51cf4ac6..fb975c65e01 100644 --- a/src/corelib/json/qjsonobject.cpp +++ b/src/corelib/json/qjsonobject.cpp @@ -254,7 +254,7 @@ bool QJsonObject::isEmpty() const QJsonValue QJsonObject::value(const QString &key) const { if (!d) - return QJsonValue(); + return QJsonValue(QJsonValue::Undefined); bool keyExists; int i = o->indexOf(key, &keyExists); diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index 761da2b0a3a..a4254cb65cd 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -90,6 +90,7 @@ private Q_SLOTS: void nullValues(); void nullArrays(); void nullObject(); + void constNullObject(); void keySorting(); @@ -1006,6 +1007,23 @@ void tst_QtJson::nullObject() QCOMPARE(nullObject.contains("foo"), false); } +void tst_QtJson::constNullObject() +{ + const QJsonObject nullObject; + QJsonObject nonNull; + nonNull.insert(QLatin1String("foo"), QLatin1String("bar")); + + QCOMPARE(nullObject, QJsonObject()); + QVERIFY(nullObject != nonNull); + QVERIFY(nonNull != nullObject); + + QCOMPARE(nullObject.size(), 0); + QCOMPARE(nullObject.keys(), QStringList()); + QCOMPARE(nullObject, QJsonObject()); + QCOMPARE(nullObject.contains("foo"), false); + QCOMPARE(nullObject["foo"], QJsonValue(QJsonValue::Undefined)); +} + void tst_QtJson::keySorting() { const char *json = "{ \"B\": true, \"A\": false }";