Bladeren bron

Remove `DeserializationError == bool` and `DeserializationError != bool`

Benoit Blanchon 4 jaren geleden
bovenliggende
commit
943a902a0b

+ 1 - 0
CHANGELOG.md

@@ -10,6 +10,7 @@ HEAD
 * Change the default of `ARDUINOJSON_USE_LONG_LONG` to `1` on 32-bit platforms
 * Add `as<JsonString>()` and `is<JsonString>()`
 * Add safe bool idiom in `JsonString`
+* Remove `DeserializationError == bool` and `DeserializationError != bool`
 
 v6.18.5 (2021-09-28)
 -------

+ 17 - 27
extras/tests/JsonDeserializer/DeserializationError.cpp

@@ -11,14 +11,14 @@ void testStringification(DeserializationError error, std::string expected) {
 
 void testBoolification(DeserializationError error, bool expected) {
   // DeserializationError on left-hand side
-  CHECK(error == expected);
-  CHECK(error != !expected);
-  CHECK(!error == !expected);
+  CHECK(bool(error) == expected);
+  CHECK(bool(error) != !expected);
+  CHECK(!bool(error) == !expected);
 
   // DeserializationError on right-hand side
-  CHECK(expected == error);
-  CHECK(!expected != error);
-  CHECK(!expected == !error);
+  CHECK(expected == bool(error));
+  CHECK(!expected != bool(error));
+  CHECK(!expected == !bool(error));
 }
 
 #define TEST_STRINGIFICATION(symbol) \
@@ -70,34 +70,24 @@ TEST_CASE("DeserializationError") {
     }
   }
 
-  SECTION("Comparisons") {
+  SECTION("Use in a condition") {
     DeserializationError invalidInput(DeserializationError::InvalidInput);
     DeserializationError ok(DeserializationError::Ok);
 
-    SECTION("DeserializationError == bool") {
-      REQUIRE(invalidInput == true);
-      REQUIRE(ok == false);
-    }
-
-    SECTION("bool == DeserializationError") {
-      REQUIRE(true == invalidInput);
-      REQUIRE(false == ok);
-    }
-
-    SECTION("DeserializationError != bool") {
-      REQUIRE(invalidInput != false);
-      REQUIRE(ok != true);
+    SECTION("if (!err)") {
+      if (!invalidInput)
+        FAIL();
     }
 
-    SECTION("bool != DeserializationError") {
-      REQUIRE(false != invalidInput);
-      REQUIRE(true != ok);
+    SECTION("if (err)") {
+      if (ok)
+        FAIL();
     }
+  }
 
-    SECTION("Negations") {
-      REQUIRE(!invalidInput == false);
-      REQUIRE(!ok == true);
-    }
+  SECTION("Comparisons") {
+    DeserializationError invalidInput(DeserializationError::InvalidInput);
+    DeserializationError ok(DeserializationError::Ok);
 
     SECTION("DeserializationError == Code") {
       REQUIRE(invalidInput == DeserializationError::InvalidInput);

+ 0 - 12
src/ArduinoJson/Deserialization/DeserializationError.hpp

@@ -57,18 +57,6 @@ class DeserializationError : public SafeBoolIdom<DeserializationError> {
   operator bool_type() const {
     return _code != Ok ? safe_true() : safe_false();
   }
-  friend bool operator==(bool value, const DeserializationError& err) {
-    return static_cast<bool>(err) == value;
-  }
-  friend bool operator==(const DeserializationError& err, bool value) {
-    return static_cast<bool>(err) == value;
-  }
-  friend bool operator!=(bool value, const DeserializationError& err) {
-    return static_cast<bool>(err) != value;
-  }
-  friend bool operator!=(const DeserializationError& err, bool value) {
-    return static_cast<bool>(err) != value;
-  }
 
   // Returns internal enum, useful for switch statement
   Code code() const {