Просмотр исходного кода

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

Benoit Blanchon 9 лет назад
Родитель
Сommit
a3a2ca4796
3 измененных файлов с 22 добавлено и 0 удалено
  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
 =======================
 
+HEAD
+----
+
+* Added `JsonVariant::success()` (issue #279)
+
 v5.4.0
 ------
 

+ 2 - 0
include/ArduinoJson/JsonVariant.hpp

@@ -256,6 +256,8 @@ class JsonVariant : public JsonVariantBase<JsonVariant> {
     return isObject();
   }
 
+  bool success() const { return _type != Internals::JSON_UNDEFINED; }
+
   // Serialize the variant to a JsonWriter
   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>());
   }
 
+  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<JsonObject>();
 }
 
 TEST_F(JsonParser_Variant_Test, EmptyArray) {
   whenInputIs("[]");
+  resultMustBeValid();
   resultTypeMustBe<JsonArray>();
 }
 
 TEST_F(JsonParser_Variant_Test, Integer) {
   whenInputIs("42");
+  resultMustBeValid();
   resultTypeMustBe<int>();
   resultMustEqual(42);
 }
 
 TEST_F(JsonParser_Variant_Test, Double) {
   whenInputIs("3.14");
+  resultMustBeValid();
   resultTypeMustBe<double>();
   resultMustEqual(3.14);
 }
 
 TEST_F(JsonParser_Variant_Test, String) {
   whenInputIs("\"hello world\"");
+  resultMustBeValid();
   resultTypeMustBe<char*>();
   resultMustEqual("hello world");
 }
 
 TEST_F(JsonParser_Variant_Test, True) {
   whenInputIs("true");
+  resultMustBeValid();
   resultTypeMustBe<bool>();
   resultMustEqual(true);
 }
 
 TEST_F(JsonParser_Variant_Test, False) {
   whenInputIs("false");
+  resultMustBeValid();
   resultTypeMustBe<bool>();
   resultMustEqual(false);
 }
+
+TEST_F(JsonParser_Variant_Test, Invalid) {
+  whenInputIs("{");
+  resultMustBeInvalid();
+}