diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ab725d3..7fc53bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Added `JsonVariant::success()` (issue #279) + v5.4.0 ------ diff --git a/include/ArduinoJson/JsonVariant.hpp b/include/ArduinoJson/JsonVariant.hpp index 79e48bea..b5329558 100644 --- a/include/ArduinoJson/JsonVariant.hpp +++ b/include/ArduinoJson/JsonVariant.hpp @@ -256,6 +256,8 @@ class JsonVariant : public JsonVariantBase { return isObject(); } + bool success() const { return _type != Internals::JSON_UNDEFINED; } + // Serialize the variant to a JsonWriter void writeTo(Internals::JsonWriter &writer) const; diff --git a/test/JsonParser_Variant_Tests.cpp b/test/JsonParser_Variant_Tests.cpp index b87734dc..567b4d94 100644 --- a/test/JsonParser_Variant_Tests.cpp +++ b/test/JsonParser_Variant_Tests.cpp @@ -29,6 +29,9 @@ class JsonParser_Variant_Test : public testing::Test { EXPECT_TRUE(_result.is()); } + void resultMustBeInvalid() { EXPECT_FALSE(_result.success()); } + void resultMustBeValid() { EXPECT_TRUE(_result.success()); } + private: DynamicJsonBuffer _jsonBuffer; JsonVariant _result; @@ -37,40 +40,52 @@ class JsonParser_Variant_Test : public testing::Test { TEST_F(JsonParser_Variant_Test, EmptyObject) { whenInputIs("{}"); + resultMustBeValid(); resultTypeMustBe(); } TEST_F(JsonParser_Variant_Test, EmptyArray) { whenInputIs("[]"); + resultMustBeValid(); resultTypeMustBe(); } TEST_F(JsonParser_Variant_Test, Integer) { whenInputIs("42"); + resultMustBeValid(); resultTypeMustBe(); resultMustEqual(42); } TEST_F(JsonParser_Variant_Test, Double) { whenInputIs("3.14"); + resultMustBeValid(); resultTypeMustBe(); resultMustEqual(3.14); } TEST_F(JsonParser_Variant_Test, String) { whenInputIs("\"hello world\""); + resultMustBeValid(); resultTypeMustBe(); resultMustEqual("hello world"); } TEST_F(JsonParser_Variant_Test, True) { whenInputIs("true"); + resultMustBeValid(); resultTypeMustBe(); resultMustEqual(true); } TEST_F(JsonParser_Variant_Test, False) { whenInputIs("false"); + resultMustBeValid(); resultTypeMustBe(); resultMustEqual(false); } + +TEST_F(JsonParser_Variant_Test, Invalid) { + whenInputIs("{"); + resultMustBeInvalid(); +}