Quellcode durchsuchen

Added `JsonVariant::success()` (issue #279)

Benoit Blanchon vor 9 Jahren
Ursprung
Commit
a3a2ca4796
3 geänderte Dateien mit 22 neuen und 0 gelöschten Zeilen
  1. 5 0
      CHANGELOG.md
  2. 2 0
      include/ArduinoJson/JsonVariant.hpp
  3. 15 0
      test/JsonParser_Variant_Tests.cpp

+ 5 - 0
CHANGELOG.md

@@ -1,6 +1,11 @@
 ArduinoJson: change log
 ArduinoJson: change log
 =======================
 =======================
 
 
+HEAD
+----
+
+* Added `JsonVariant::success()` (issue #279)
+
 v5.4.0
 v5.4.0
 ------
 ------
 
 

+ 2 - 0
include/ArduinoJson/JsonVariant.hpp

@@ -256,6 +256,8 @@ class JsonVariant : public JsonVariantBase<JsonVariant> {
     return isObject();
     return isObject();
   }
   }
 
 
+  bool success() const { return _type != Internals::JSON_UNDEFINED; }
+
   // Serialize the variant to a JsonWriter
   // Serialize the variant to a JsonWriter
   void writeTo(Internals::JsonWriter &writer) const;
   void writeTo(Internals::JsonWriter &writer) const;
 
 

+ 15 - 0
test/JsonParser_Variant_Tests.cpp

@@ -29,6 +29,9 @@ class JsonParser_Variant_Test : public testing::Test {
     EXPECT_TRUE(_result.is<T>());
     EXPECT_TRUE(_result.is<T>());
   }
   }
 
 
+  void resultMustBeInvalid() { EXPECT_FALSE(_result.success()); }
+  void resultMustBeValid() { EXPECT_TRUE(_result.success()); }
+
  private:
  private:
   DynamicJsonBuffer _jsonBuffer;
   DynamicJsonBuffer _jsonBuffer;
   JsonVariant _result;
   JsonVariant _result;
@@ -37,40 +40,52 @@ class JsonParser_Variant_Test : public testing::Test {
 
 
 TEST_F(JsonParser_Variant_Test, EmptyObject) {
 TEST_F(JsonParser_Variant_Test, EmptyObject) {
   whenInputIs("{}");
   whenInputIs("{}");
+  resultMustBeValid();
   resultTypeMustBe<JsonObject>();
   resultTypeMustBe<JsonObject>();
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, EmptyArray) {
 TEST_F(JsonParser_Variant_Test, EmptyArray) {
   whenInputIs("[]");
   whenInputIs("[]");
+  resultMustBeValid();
   resultTypeMustBe<JsonArray>();
   resultTypeMustBe<JsonArray>();
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, Integer) {
 TEST_F(JsonParser_Variant_Test, Integer) {
   whenInputIs("42");
   whenInputIs("42");
+  resultMustBeValid();
   resultTypeMustBe<int>();
   resultTypeMustBe<int>();
   resultMustEqual(42);
   resultMustEqual(42);
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, Double) {
 TEST_F(JsonParser_Variant_Test, Double) {
   whenInputIs("3.14");
   whenInputIs("3.14");
+  resultMustBeValid();
   resultTypeMustBe<double>();
   resultTypeMustBe<double>();
   resultMustEqual(3.14);
   resultMustEqual(3.14);
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, String) {
 TEST_F(JsonParser_Variant_Test, String) {
   whenInputIs("\"hello world\"");
   whenInputIs("\"hello world\"");
+  resultMustBeValid();
   resultTypeMustBe<char*>();
   resultTypeMustBe<char*>();
   resultMustEqual("hello world");
   resultMustEqual("hello world");
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, True) {
 TEST_F(JsonParser_Variant_Test, True) {
   whenInputIs("true");
   whenInputIs("true");
+  resultMustBeValid();
   resultTypeMustBe<bool>();
   resultTypeMustBe<bool>();
   resultMustEqual(true);
   resultMustEqual(true);
 }
 }
 
 
 TEST_F(JsonParser_Variant_Test, False) {
 TEST_F(JsonParser_Variant_Test, False) {
   whenInputIs("false");
   whenInputIs("false");
+  resultMustBeValid();
   resultTypeMustBe<bool>();
   resultTypeMustBe<bool>();
   resultMustEqual(false);
   resultMustEqual(false);
 }
 }
+
+TEST_F(JsonParser_Variant_Test, Invalid) {
+  whenInputIs("{");
+  resultMustBeInvalid();
+}