From 7ce1039d7c107500138415d16c3bb406fd1e9add Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 19 Jul 2019 10:21:58 +0200 Subject: [PATCH] Added operators `==` and `!=` for `MemberProxy` --- CHANGELOG.md | 2 +- src/ArduinoJson/Object/MemberProxy.hpp | 8 ++++++++ test/MemberProxy/CMakeLists.txt | 1 + test/MemberProxy/compare.cpp | 26 ++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/MemberProxy/compare.cpp diff --git a/CHANGELOG.md b/CHANGELOG.md index 7368a288..61a9430e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ArduinoJson: change log HEAD ---- -* Added operators `==` and `!=` for `JsonDocument` +* Added operators `==` and `!=` for `JsonDocument` and `MemberProxy` v6.11.2 (2019-07-08) ------- diff --git a/src/ArduinoJson/Object/MemberProxy.hpp b/src/ArduinoJson/Object/MemberProxy.hpp index 5f7c66f9..f634a142 100644 --- a/src/ArduinoJson/Object/MemberProxy.hpp +++ b/src/ArduinoJson/Object/MemberProxy.hpp @@ -49,6 +49,14 @@ class MemberProxy : public VariantOperators >, return *this; } + FORCE_INLINE bool operator==(VariantConstRef rhs) const { + return static_cast(getUpstreamMember()) == rhs; + } + + FORCE_INLINE bool operator!=(VariantConstRef rhs) const { + return static_cast(getUpstreamMember()) != rhs; + } + FORCE_INLINE void clear() const { getUpstreamMember().clear(); } diff --git a/test/MemberProxy/CMakeLists.txt b/test/MemberProxy/CMakeLists.txt index e948c656..5ce73d8f 100644 --- a/test/MemberProxy/CMakeLists.txt +++ b/test/MemberProxy/CMakeLists.txt @@ -5,6 +5,7 @@ add_executable(MemberProxyTests add.cpp clear.cpp + compare.cpp containsKey.cpp remove.cpp set.cpp diff --git a/test/MemberProxy/compare.cpp b/test/MemberProxy/compare.cpp new file mode 100644 index 00000000..1182a5a2 --- /dev/null +++ b/test/MemberProxy/compare.cpp @@ -0,0 +1,26 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2019 +// MIT License + +#include +#include + +using namespace ARDUINOJSON_NAMESPACE; + +TEST_CASE("MemberProxy::operator==()") { + DynamicJsonDocument doc(4096); + + SECTION("same values") { + doc["key1"] = "value"; + doc["key2"] = "value"; + REQUIRE(doc["key1"] == doc["key2"]); + REQUIRE_FALSE(doc["key1"] != doc["key2"]); + } + + SECTION("different values") { + doc["key1"] = "value1"; + doc["key2"] = "value2"; + REQUIRE_FALSE(doc["key1"] == doc["key2"]); + REQUIRE(doc["key1"] != doc["key2"]); + } +}