mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Fix comparisons operators with const JsonDocument&
				
					
				
			This commit is contained in:
		| @@ -7,6 +7,7 @@ HEAD | |||||||
| * Add `ElementProxy::memoryUsage()` | * Add `ElementProxy::memoryUsage()` | ||||||
| * Add `MemberProxy::memoryUsage()` (issue #1730) | * Add `MemberProxy::memoryUsage()` (issue #1730) | ||||||
| * Add implicit conversion from `JsonDocument` to `JsonVariant` | * Add implicit conversion from `JsonDocument` to `JsonVariant` | ||||||
|  | * Fix comparisons operators with `const JsonDocument&` | ||||||
|  |  | ||||||
| v6.19.3 (2022-03-08) | v6.19.3 (2022-03-08) | ||||||
| ------- | ------- | ||||||
|   | |||||||
| @@ -75,3 +75,29 @@ TEST_CASE("StaticJsonDocument::operator==(const DynamicJsonDocument&)") { | |||||||
|     REQUIRE(doc1 != doc2); |     REQUIRE(doc1 != doc2); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | TEST_CASE("JsonDocument::operator==(const JsonDocument&)") { | ||||||
|  |   StaticJsonDocument<256> doc1; | ||||||
|  |   StaticJsonDocument<256> doc2; | ||||||
|  |   const JsonDocument& ref1 = doc1; | ||||||
|  |   const JsonDocument& ref2 = doc2; | ||||||
|  |  | ||||||
|  |   SECTION("Empty") { | ||||||
|  |     REQUIRE(ref1 == ref2); | ||||||
|  |     REQUIRE_FALSE(ref1 != ref2); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   SECTION("With same object") { | ||||||
|  |     doc1["hello"] = "world"; | ||||||
|  |     doc2["hello"] = "world"; | ||||||
|  |     REQUIRE(ref1 == ref2); | ||||||
|  |     REQUIRE_FALSE(ref1 != ref2); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   SECTION("With different object") { | ||||||
|  |     doc1["hello"] = "world"; | ||||||
|  |     doc2["world"] = "hello"; | ||||||
|  |     REQUIRE_FALSE(ref1 == ref2); | ||||||
|  |     REQUIRE(ref1 != ref2); | ||||||
|  |   } | ||||||
|  | } | ||||||
|   | |||||||
| @@ -131,9 +131,9 @@ struct RawComparer : ComparerBase { | |||||||
| template <typename T> | template <typename T> | ||||||
| struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type> | struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type> | ||||||
|     : ComparerBase { |     : ComparerBase { | ||||||
|   T rhs; |   const T *rhs;  // TODO: should be a VariantConstRef | ||||||
|  |  | ||||||
|   explicit Comparer(T value) : rhs(value) {} |   explicit Comparer(const T &value) : rhs(&value) {} | ||||||
|  |  | ||||||
|   CompareResult visitArray(const CollectionData &lhs) { |   CompareResult visitArray(const CollectionData &lhs) { | ||||||
|     ArrayComparer comparer(lhs); |     ArrayComparer comparer(lhs); | ||||||
| @@ -183,7 +183,7 @@ struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type> | |||||||
|  private: |  private: | ||||||
|   template <typename TComparer> |   template <typename TComparer> | ||||||
|   CompareResult accept(TComparer &comparer) { |   CompareResult accept(TComparer &comparer) { | ||||||
|     CompareResult reversedResult = rhs.accept(comparer); |     CompareResult reversedResult = rhs->accept(comparer); | ||||||
|     switch (reversedResult) { |     switch (reversedResult) { | ||||||
|       case COMPARE_RESULT_GREATER: |       case COMPARE_RESULT_GREATER: | ||||||
|         return COMPARE_RESULT_LESS; |         return COMPARE_RESULT_LESS; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user