From faaee821297ad801f24cab0cdddd0d068595686d Mon Sep 17 00:00:00 2001 From: Tatiana Borisova Date: Tue, 2 Apr 2024 17:31:01 +0200 Subject: [PATCH] Add equality comparison between QJsonObject and QJsonValueConstRef - amends 839cffd5212cc1437661e9c650eb2ff4b19fa4e8 Fixes: QTBUG-123927 Change-Id: I9174e747478937d4c9ed6522dd603fea50daf203 Reviewed-by: Ivan Solovev --- src/corelib/serialization/qjsonobject.cpp | 2 +- src/corelib/serialization/qjsonobject.h | 6 ++++++ tests/auto/corelib/serialization/json/tst_qtjson.cpp | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/corelib/serialization/qjsonobject.cpp b/src/corelib/serialization/qjsonobject.cpp index 2fbac931dc0..2dd1eb01c63 100644 --- a/src/corelib/serialization/qjsonobject.cpp +++ b/src/corelib/serialization/qjsonobject.cpp @@ -32,7 +32,7 @@ QT_BEGIN_NAMESPACE \brief The QJsonObject class encapsulates a JSON object. \compares equality - \compareswith equality QJsonValue + \compareswith equality QJsonValue QJsonValueConstRef \endcompareswith A JSON object is a list of key value pairs, where the keys are unique strings diff --git a/src/corelib/serialization/qjsonobject.h b/src/corelib/serialization/qjsonobject.h index bdf35a4f20a..009f6c920f2 100644 --- a/src/corelib/serialization/qjsonobject.h +++ b/src/corelib/serialization/qjsonobject.h @@ -244,8 +244,14 @@ private: { return comparesEqual(lhs, rhs.toObject()); } + friend bool comparesEqual(const QJsonObject &lhs, + const QJsonValueConstRef &rhs) noexcept + { + return comparesEqual(lhs, rhs.toObject()); + } Q_DECLARE_EQUALITY_COMPARABLE(QJsonObject) Q_DECLARE_EQUALITY_COMPARABLE(QJsonObject, QJsonValue) + Q_DECLARE_EQUALITY_COMPARABLE(QJsonObject, QJsonValueConstRef) friend class QJsonValue; friend class QJsonDocument; friend class QJsonPrivate::Value; diff --git a/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/tests/auto/corelib/serialization/json/tst_qtjson.cpp index 5046478547e..4b6468f42f7 100644 --- a/tests/auto/corelib/serialization/json/tst_qtjson.cpp +++ b/tests/auto/corelib/serialization/json/tst_qtjson.cpp @@ -187,6 +187,8 @@ void tst_QtJson::compareCompiles() QTestPrivate::testEqualityOperatorsCompile(); QTestPrivate::testEqualityOperatorsCompile(); QTestPrivate::testEqualityOperatorsCompile(); + QTestPrivate::testEqualityOperatorsCompile(); + QTestPrivate::testEqualityOperatorsCompile(); QTestPrivate::testEqualityOperatorsCompile(); QTestPrivate::testEqualityOperatorsCompile(); QTestPrivate::testEqualityOperatorsCompile(); @@ -670,6 +672,7 @@ void tst_QtJson::testObjectInsertCopies() QCOMPARE(obj.size(), 2); QCOMPARE(obj.value("value"), "TEST"); QCOMPARE(obj.value("prop2"), "TEST"); + QT_TEST_EQUALITY_OPS(rv, obj["value"].toObject(), true); } { QJsonObject obj;