Bladeren bron

`JsonObject::createNestedArray()` returns `JsonArray::invalid()` if key is null

Benoit Blanchon 2 jaren geleden
bovenliggende
commit
46bd98fd10
4 gewijzigde bestanden met toevoegingen van 29 en 3 verwijderingen
  1. 1 1
      CHANGELOG.md
  2. 4 2
      src/ArduinoJson/JsonObjectImpl.hpp
  3. 1 0
      test/JsonObject/CMakeLists.txt
  4. 23 0
      test/JsonObject/createNestedArray.cpp

+ 1 - 1
CHANGELOG.md

@@ -5,6 +5,7 @@ HEAD
 ----
 
 * `JsonObject::createNestedObject()` returns `JsonObject::invalid()` if key is null (issue #1891)
+* `JsonObject::createNestedArray()` returns `JsonArray::invalid()` if key is null
 
 v5.13.5
 -------
@@ -492,4 +493,3 @@ v4.0
 > ### BREAKING CHANGES :warning:
 >
 > API changed significantly since v3, see [Migrating code to the new API](https://arduinojson.org/doc/migration/).
-

+ 4 - 2
src/ArduinoJson/JsonObjectImpl.hpp

@@ -14,8 +14,10 @@ template <typename TStringRef>
 inline JsonArray &JsonObject::createNestedArray_impl(TStringRef key) {
   if (!_buffer) return JsonArray::invalid();
   JsonArray &array = _buffer->createArray();
-  set(key, array);
-  return array;
+  if (set(key, array))
+    return array;
+  else
+    return JsonArray::invalid();
 }
 
 template <typename TStringRef>

+ 1 - 0
test/JsonObject/CMakeLists.txt

@@ -5,6 +5,7 @@
 add_executable(JsonObjectTests
 	basics.cpp
 	containsKey.cpp
+	createNestedArray.cpp
 	createNestedObject.cpp
 	get.cpp
 	invalid.cpp

+ 23 - 0
test/JsonObject/createNestedArray.cpp

@@ -0,0 +1,23 @@
+// ArduinoJson - arduinojson.org
+// Copyright Benoit Blanchon 2014-2023
+// MIT License
+
+#include <ArduinoJson.h>
+
+#include <catch.hpp>
+
+TEST_CASE("JsonObject::createNestedArray()") {
+  DynamicJsonBuffer _jsonBuffer;
+  JsonObject& _object = _jsonBuffer.createObject();
+
+  SECTION("success() should return true if key is non-null") {
+    JsonArray& arr = _object.createNestedArray("key");
+    REQUIRE(arr.success() == true);
+  }
+
+  SECTION("success() should return false if key is null") {
+    const char* null = 0;
+    JsonArray& arr = _object.createNestedArray(null);
+    REQUIRE(arr.success() == false);
+  }
+}