mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-18 04:52:22 +02:00
Converted JsonArray::copyFrom()/copyTo()
to free functions copyArray()
This commit is contained in:
@ -7,6 +7,8 @@ HEAD
|
|||||||
* Decode escaped Unicode characters like \u00DE (issue #304, PR #791)
|
* Decode escaped Unicode characters like \u00DE (issue #304, PR #791)
|
||||||
Many thanks to Daniel Schulte (aka @trilader) who implemented this feature.
|
Many thanks to Daniel Schulte (aka @trilader) who implemented this feature.
|
||||||
* Add option ARDUINOJSON_DECODE_UNICODE to enable it
|
* Add option ARDUINOJSON_DECODE_UNICODE to enable it
|
||||||
|
* Converted `JsonArray::copyFrom()/copyTo()` to free functions `copyArray()`
|
||||||
|
* Renamed `JsonArray::copyFrom()` and `JsonObject::copyFrom()` to `set()`
|
||||||
|
|
||||||
v6.8.0-beta (2019-01-30)
|
v6.8.0-beta (2019-01-30)
|
||||||
-----------
|
-----------
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include "ArduinoJson/Array/ArrayImpl.hpp"
|
#include "ArduinoJson/Array/ArrayImpl.hpp"
|
||||||
#include "ArduinoJson/Array/ElementProxy.hpp"
|
#include "ArduinoJson/Array/ElementProxy.hpp"
|
||||||
|
#include "ArduinoJson/Array/Utilities.hpp"
|
||||||
#include "ArduinoJson/Collection/CollectionImpl.hpp"
|
#include "ArduinoJson/Collection/CollectionImpl.hpp"
|
||||||
#include "ArduinoJson/Object/MemberProxy.hpp"
|
#include "ArduinoJson/Object/MemberProxy.hpp"
|
||||||
#include "ArduinoJson/Object/ObjectImpl.hpp"
|
#include "ArduinoJson/Object/ObjectImpl.hpp"
|
||||||
@ -39,6 +40,7 @@ typedef ARDUINOJSON_NAMESPACE::String JsonString;
|
|||||||
typedef ARDUINOJSON_NAMESPACE::UInt JsonUInt;
|
typedef ARDUINOJSON_NAMESPACE::UInt JsonUInt;
|
||||||
typedef ARDUINOJSON_NAMESPACE::VariantConstRef JsonVariantConst;
|
typedef ARDUINOJSON_NAMESPACE::VariantConstRef JsonVariantConst;
|
||||||
typedef ARDUINOJSON_NAMESPACE::VariantRef JsonVariant;
|
typedef ARDUINOJSON_NAMESPACE::VariantRef JsonVariant;
|
||||||
|
using ARDUINOJSON_NAMESPACE::copyArray;
|
||||||
using ARDUINOJSON_NAMESPACE::DeserializationError;
|
using ARDUINOJSON_NAMESPACE::DeserializationError;
|
||||||
using ARDUINOJSON_NAMESPACE::deserializeJson;
|
using ARDUINOJSON_NAMESPACE::deserializeJson;
|
||||||
using ARDUINOJSON_NAMESPACE::deserializeMsgPack;
|
using ARDUINOJSON_NAMESPACE::deserializeMsgPack;
|
||||||
|
@ -115,65 +115,12 @@ class ArrayRef : public ArrayRefBase<CollectionData>,
|
|||||||
return iterator();
|
return iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Imports a 1D array
|
|
||||||
template <typename T, size_t N>
|
|
||||||
FORCE_INLINE bool copyFrom(T (&array)[N]) const {
|
|
||||||
return copyFrom(array, N);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Imports a 1D array
|
|
||||||
template <typename T>
|
|
||||||
bool copyFrom(T* array, size_t len) const {
|
|
||||||
bool ok = true;
|
|
||||||
for (size_t i = 0; i < len; i++) {
|
|
||||||
ok &= add(array[i]);
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Imports a 2D array
|
|
||||||
template <typename T, size_t N1, size_t N2>
|
|
||||||
bool copyFrom(T (&array)[N1][N2]) const {
|
|
||||||
bool ok = true;
|
|
||||||
for (size_t i = 0; i < N1; i++) {
|
|
||||||
ArrayRef nestedArray = createNestedArray();
|
|
||||||
for (size_t j = 0; j < N2; j++) {
|
|
||||||
ok &= nestedArray.add(array[i][j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy a ArrayRef
|
// Copy a ArrayRef
|
||||||
FORCE_INLINE bool copyFrom(ArrayConstRef src) const {
|
FORCE_INLINE bool set(ArrayConstRef src) const {
|
||||||
if (!_data || !src._data) return false;
|
if (!_data || !src._data) return false;
|
||||||
return _data->copyFrom(*src._data, _pool);
|
return _data->copyFrom(*src._data, _pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exports a 1D array
|
|
||||||
template <typename T, size_t N>
|
|
||||||
FORCE_INLINE size_t copyTo(T (&array)[N]) const {
|
|
||||||
return copyTo(array, N);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exports a 1D array
|
|
||||||
template <typename T>
|
|
||||||
size_t copyTo(T* array, size_t len) const {
|
|
||||||
size_t i = 0;
|
|
||||||
for (iterator it = begin(); it != end() && i < len; ++it) array[i++] = *it;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exports a 2D array
|
|
||||||
template <typename T, size_t N1, size_t N2>
|
|
||||||
void copyTo(T (&array)[N1][N2]) const {
|
|
||||||
if (!_data) return;
|
|
||||||
size_t i = 0;
|
|
||||||
for (iterator it = begin(); it != end() && i < N1; ++it) {
|
|
||||||
it->as<ArrayRef>().copyTo(array[i++]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FORCE_INLINE bool operator==(ArrayRef rhs) const {
|
FORCE_INLINE bool operator==(ArrayRef rhs) const {
|
||||||
return arrayEquals(_data, rhs._data);
|
return arrayEquals(_data, rhs._data);
|
||||||
}
|
}
|
||||||
|
66
src/ArduinoJson/Array/Utilities.hpp
Normal file
66
src/ArduinoJson/Array/Utilities.hpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// ArduinoJson - arduinojson.org
|
||||||
|
// Copyright Benoit Blanchon 2014-2019
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ArrayRef.hpp"
|
||||||
|
|
||||||
|
namespace ARDUINOJSON_NAMESPACE {
|
||||||
|
|
||||||
|
// Copy a 1D array to a JsonArray
|
||||||
|
template <typename T, size_t N>
|
||||||
|
inline bool copyArray(T (&src)[N], ArrayRef dst) {
|
||||||
|
return copyArray(src, N, dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy a 1D array to a JsonArray
|
||||||
|
template <typename T>
|
||||||
|
inline bool copyArray(T* src, size_t len, ArrayRef dst) {
|
||||||
|
bool ok = true;
|
||||||
|
for (size_t i = 0; i < len; i++) {
|
||||||
|
ok &= dst.add(src[i]);
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy a 2D array to a JsonArray
|
||||||
|
template <typename T, size_t N1, size_t N2>
|
||||||
|
inline bool copyArray(T (&src)[N1][N2], ArrayRef dst) {
|
||||||
|
bool ok = true;
|
||||||
|
for (size_t i = 0; i < N1; i++) {
|
||||||
|
ArrayRef nestedArray = dst.createNestedArray();
|
||||||
|
for (size_t j = 0; j < N2; j++) {
|
||||||
|
ok &= nestedArray.add(src[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy a JsonArray to a 1D array
|
||||||
|
template <typename T, size_t N>
|
||||||
|
inline size_t copyArray(ArrayConstRef src, T (&dst)[N]) {
|
||||||
|
return copyArray(src, dst, N);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy a JsonArray to a 1D array
|
||||||
|
template <typename T>
|
||||||
|
inline size_t copyArray(ArrayConstRef src, T* dst, size_t len) {
|
||||||
|
size_t i = 0;
|
||||||
|
for (ArrayConstRef::iterator it = src.begin(); it != src.end() && i < len;
|
||||||
|
++it)
|
||||||
|
dst[i++] = *it;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy a JsonArray to a 2D array
|
||||||
|
template <typename T, size_t N1, size_t N2>
|
||||||
|
inline void copyArray(ArrayConstRef src, T (&dst)[N1][N2]) {
|
||||||
|
size_t i = 0;
|
||||||
|
for (ArrayConstRef::iterator it = src.begin(); it != src.end() && i < N1;
|
||||||
|
++it) {
|
||||||
|
copyArray(it->as<ArrayConstRef>(), dst[i++]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ARDUINOJSON_NAMESPACE
|
@ -161,7 +161,7 @@ class ObjectRef : public ObjectRefBase<CollectionData>,
|
|||||||
_data->clear();
|
_data->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE bool copyFrom(ObjectConstRef src) {
|
FORCE_INLINE bool set(ObjectConstRef src) {
|
||||||
if (!_data || !src._data) return false;
|
if (!_data || !src._data) return false;
|
||||||
return _data->copyFrom(*src._data, _pool);
|
return _data->copyFrom(*src._data, _pool);
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,7 @@
|
|||||||
|
|
||||||
add_executable(JsonArrayTests
|
add_executable(JsonArrayTests
|
||||||
add.cpp
|
add.cpp
|
||||||
copyFrom.cpp
|
copyArray.cpp
|
||||||
copyTo.cpp
|
|
||||||
createNested.cpp
|
createNested.cpp
|
||||||
equals.cpp
|
equals.cpp
|
||||||
get.cpp
|
get.cpp
|
||||||
|
117
test/JsonArray/copyArray.cpp
Normal file
117
test/JsonArray/copyArray.cpp
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
// ArduinoJson - arduinojson.org
|
||||||
|
// Copyright Benoit Blanchon 2014-2019
|
||||||
|
// MIT License
|
||||||
|
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <catch.hpp>
|
||||||
|
|
||||||
|
TEST_CASE("copyArray()") {
|
||||||
|
SECTION("1D -> JsonArray") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
JsonArray array = doc.to<JsonArray>();
|
||||||
|
char json[32];
|
||||||
|
int source[] = {1, 2, 3};
|
||||||
|
|
||||||
|
bool ok = copyArray(source, array);
|
||||||
|
REQUIRE(ok);
|
||||||
|
|
||||||
|
serializeJson(array, json, sizeof(json));
|
||||||
|
REQUIRE(std::string("[1,2,3]") == json);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("1D -> JsonArray, but not enough memory") {
|
||||||
|
const size_t SIZE = JSON_ARRAY_SIZE(2);
|
||||||
|
StaticJsonDocument<SIZE> doc;
|
||||||
|
JsonArray array = doc.to<JsonArray>();
|
||||||
|
char json[32];
|
||||||
|
int source[] = {1, 2, 3};
|
||||||
|
|
||||||
|
bool ok = copyArray(source, array);
|
||||||
|
REQUIRE_FALSE(ok);
|
||||||
|
|
||||||
|
serializeJson(array, json, sizeof(json));
|
||||||
|
REQUIRE(std::string("[1,2]") == json);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("2D -> JsonArray") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
JsonArray array = doc.to<JsonArray>();
|
||||||
|
char json[32];
|
||||||
|
int source[][3] = {{1, 2, 3}, {4, 5, 6}};
|
||||||
|
|
||||||
|
bool ok = copyArray(source, array);
|
||||||
|
REQUIRE(ok);
|
||||||
|
|
||||||
|
serializeJson(array, json, sizeof(json));
|
||||||
|
REQUIRE(std::string("[[1,2,3],[4,5,6]]") == json);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("2D -> JsonArray, but not enough memory") {
|
||||||
|
const size_t SIZE =
|
||||||
|
JSON_ARRAY_SIZE(2) + JSON_ARRAY_SIZE(3) + JSON_ARRAY_SIZE(2);
|
||||||
|
StaticJsonDocument<SIZE> doc;
|
||||||
|
JsonArray array = doc.to<JsonArray>();
|
||||||
|
char json[32] = "";
|
||||||
|
int source[][3] = {{1, 2, 3}, {4, 5, 6}};
|
||||||
|
|
||||||
|
CAPTURE(SIZE)
|
||||||
|
|
||||||
|
bool ok = copyArray(source, array);
|
||||||
|
CAPTURE(doc.memoryUsage());
|
||||||
|
CHECK_FALSE(ok);
|
||||||
|
|
||||||
|
serializeJson(array, json, sizeof(json));
|
||||||
|
REQUIRE(std::string("[[1,2,3],[4,5]]") == json);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("JsonArray -> 1D, with more space than needed") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
char json[] = "[1,2,3]";
|
||||||
|
DeserializationError err = deserializeJson(doc, json);
|
||||||
|
REQUIRE(err == DeserializationError::Ok);
|
||||||
|
JsonArray array = doc.as<JsonArray>();
|
||||||
|
|
||||||
|
int destination[4] = {0};
|
||||||
|
size_t result = copyArray(array, destination);
|
||||||
|
|
||||||
|
REQUIRE(3 == result);
|
||||||
|
REQUIRE(1 == destination[0]);
|
||||||
|
REQUIRE(2 == destination[1]);
|
||||||
|
REQUIRE(3 == destination[2]);
|
||||||
|
REQUIRE(0 == destination[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("JsonArray -> 1D, without enough space") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
char json[] = "[1,2,3]";
|
||||||
|
DeserializationError err = deserializeJson(doc, json);
|
||||||
|
REQUIRE(err == DeserializationError::Ok);
|
||||||
|
JsonArray array = doc.as<JsonArray>();
|
||||||
|
|
||||||
|
int destination[2] = {0};
|
||||||
|
size_t result = copyArray(array, destination);
|
||||||
|
|
||||||
|
REQUIRE(2 == result);
|
||||||
|
REQUIRE(1 == destination[0]);
|
||||||
|
REQUIRE(2 == destination[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("JsonArray -> 2D") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
char json[] = "[[1,2],[3],[4]]";
|
||||||
|
|
||||||
|
DeserializationError err = deserializeJson(doc, json);
|
||||||
|
REQUIRE(err == DeserializationError::Ok);
|
||||||
|
JsonArray array = doc.as<JsonArray>();
|
||||||
|
|
||||||
|
int destination[3][2] = {{0}};
|
||||||
|
copyArray(array, destination);
|
||||||
|
|
||||||
|
REQUIRE(1 == destination[0][0]);
|
||||||
|
REQUIRE(2 == destination[0][1]);
|
||||||
|
REQUIRE(3 == destination[1][0]);
|
||||||
|
REQUIRE(0 == destination[1][1]);
|
||||||
|
REQUIRE(4 == destination[2][0]);
|
||||||
|
REQUIRE(0 == destination[2][1]);
|
||||||
|
}
|
||||||
|
}
|
@ -1,66 +0,0 @@
|
|||||||
// ArduinoJson - arduinojson.org
|
|
||||||
// Copyright Benoit Blanchon 2014-2019
|
|
||||||
// MIT License
|
|
||||||
|
|
||||||
#include <ArduinoJson.h>
|
|
||||||
#include <catch.hpp>
|
|
||||||
|
|
||||||
TEST_CASE("JsonArray::copyFrom()") {
|
|
||||||
SECTION("OneDimension") {
|
|
||||||
DynamicJsonDocument doc(4096);
|
|
||||||
JsonArray array = doc.to<JsonArray>();
|
|
||||||
char json[32];
|
|
||||||
int source[] = {1, 2, 3};
|
|
||||||
|
|
||||||
bool ok = array.copyFrom(source);
|
|
||||||
REQUIRE(ok);
|
|
||||||
|
|
||||||
serializeJson(array, json, sizeof(json));
|
|
||||||
REQUIRE(std::string("[1,2,3]") == json);
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("OneDimension_MemoryPoolTooSmall") {
|
|
||||||
const size_t SIZE = JSON_ARRAY_SIZE(2);
|
|
||||||
StaticJsonDocument<SIZE> doc;
|
|
||||||
JsonArray array = doc.to<JsonArray>();
|
|
||||||
char json[32];
|
|
||||||
int source[] = {1, 2, 3};
|
|
||||||
|
|
||||||
bool ok = array.copyFrom(source);
|
|
||||||
REQUIRE_FALSE(ok);
|
|
||||||
|
|
||||||
serializeJson(array, json, sizeof(json));
|
|
||||||
REQUIRE(std::string("[1,2]") == json);
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("TwoDimensions") {
|
|
||||||
DynamicJsonDocument doc(4096);
|
|
||||||
JsonArray array = doc.to<JsonArray>();
|
|
||||||
char json[32];
|
|
||||||
int source[][3] = {{1, 2, 3}, {4, 5, 6}};
|
|
||||||
|
|
||||||
bool ok = array.copyFrom(source);
|
|
||||||
REQUIRE(ok);
|
|
||||||
|
|
||||||
serializeJson(array, json, sizeof(json));
|
|
||||||
REQUIRE(std::string("[[1,2,3],[4,5,6]]") == json);
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("TwoDimensions_MemoryPoolTooSmall") {
|
|
||||||
const size_t SIZE =
|
|
||||||
JSON_ARRAY_SIZE(2) + JSON_ARRAY_SIZE(3) + JSON_ARRAY_SIZE(2);
|
|
||||||
StaticJsonDocument<SIZE> doc;
|
|
||||||
JsonArray array = doc.to<JsonArray>();
|
|
||||||
char json[32] = "";
|
|
||||||
int source[][3] = {{1, 2, 3}, {4, 5, 6}};
|
|
||||||
|
|
||||||
CAPTURE(SIZE)
|
|
||||||
|
|
||||||
bool ok = array.copyFrom(source);
|
|
||||||
CAPTURE(doc.memoryUsage());
|
|
||||||
CHECK_FALSE(ok);
|
|
||||||
|
|
||||||
serializeJson(array, json, sizeof(json));
|
|
||||||
REQUIRE(std::string("[[1,2,3],[4,5]]") == json);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
// ArduinoJson - arduinojson.org
|
|
||||||
// Copyright Benoit Blanchon 2014-2019
|
|
||||||
// MIT License
|
|
||||||
|
|
||||||
#include <ArduinoJson.h>
|
|
||||||
#include <catch.hpp>
|
|
||||||
|
|
||||||
TEST_CASE("JsonArray::copyTo()") {
|
|
||||||
DynamicJsonDocument doc(4096);
|
|
||||||
|
|
||||||
SECTION("BiggerOneDimensionIntegerArray") {
|
|
||||||
char json[] = "[1,2,3]";
|
|
||||||
DeserializationError err = deserializeJson(doc, json);
|
|
||||||
REQUIRE(err == DeserializationError::Ok);
|
|
||||||
JsonArray array = doc.as<JsonArray>();
|
|
||||||
|
|
||||||
int destination[4] = {0};
|
|
||||||
size_t result = array.copyTo(destination);
|
|
||||||
|
|
||||||
REQUIRE(3 == result);
|
|
||||||
REQUIRE(1 == destination[0]);
|
|
||||||
REQUIRE(2 == destination[1]);
|
|
||||||
REQUIRE(3 == destination[2]);
|
|
||||||
REQUIRE(0 == destination[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("SmallerOneDimensionIntegerArray") {
|
|
||||||
char json[] = "[1,2,3]";
|
|
||||||
DeserializationError err = deserializeJson(doc, json);
|
|
||||||
REQUIRE(err == DeserializationError::Ok);
|
|
||||||
JsonArray array = doc.as<JsonArray>();
|
|
||||||
|
|
||||||
int destination[2] = {0};
|
|
||||||
size_t result = array.copyTo(destination);
|
|
||||||
|
|
||||||
REQUIRE(2 == result);
|
|
||||||
REQUIRE(1 == destination[0]);
|
|
||||||
REQUIRE(2 == destination[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION("TwoOneDimensionIntegerArray") {
|
|
||||||
char json[] = "[[1,2],[3],[4]]";
|
|
||||||
|
|
||||||
DeserializationError err = deserializeJson(doc, json);
|
|
||||||
REQUIRE(err == DeserializationError::Ok);
|
|
||||||
JsonArray array = doc.as<JsonArray>();
|
|
||||||
|
|
||||||
int destination[3][2] = {{0}};
|
|
||||||
array.copyTo(destination);
|
|
||||||
|
|
||||||
REQUIRE(1 == destination[0][0]);
|
|
||||||
REQUIRE(2 == destination[0][1]);
|
|
||||||
REQUIRE(3 == destination[1][0]);
|
|
||||||
REQUIRE(0 == destination[1][1]);
|
|
||||||
REQUIRE(4 == destination[2][0]);
|
|
||||||
REQUIRE(0 == destination[2][1]);
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,7 +5,7 @@
|
|||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <catch.hpp>
|
#include <catch.hpp>
|
||||||
|
|
||||||
TEST_CASE("JsonObject::copyFrom()") {
|
TEST_CASE("JsonObject::set()") {
|
||||||
DynamicJsonDocument doc1(4096);
|
DynamicJsonDocument doc1(4096);
|
||||||
DynamicJsonDocument doc2(4096);
|
DynamicJsonDocument doc2(4096);
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("doesn't copy static string in key or value") {
|
SECTION("doesn't copy static string in key or value") {
|
||||||
obj1["hello"] = "world";
|
obj1["hello"] = "world";
|
||||||
|
|
||||||
obj2.copyFrom(obj1);
|
obj2.set(obj1);
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
@ -24,7 +24,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("copy local string value") {
|
SECTION("copy local string value") {
|
||||||
obj1["hello"] = std::string("world");
|
obj1["hello"] = std::string("world");
|
||||||
|
|
||||||
obj2.copyFrom(obj1);
|
obj2.set(obj1);
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
@ -33,7 +33,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("copy local key") {
|
SECTION("copy local key") {
|
||||||
obj1[std::string("hello")] = "world";
|
obj1[std::string("hello")] = "world";
|
||||||
|
|
||||||
obj2.copyFrom(obj1);
|
obj2.set(obj1);
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
@ -42,7 +42,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("copy string from deserializeJson()") {
|
SECTION("copy string from deserializeJson()") {
|
||||||
deserializeJson(doc1, "{'hello':'world'}");
|
deserializeJson(doc1, "{'hello':'world'}");
|
||||||
|
|
||||||
obj2.copyFrom(obj1);
|
obj2.set(obj1);
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
@ -51,7 +51,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("copy string from deserializeMsgPack()") {
|
SECTION("copy string from deserializeMsgPack()") {
|
||||||
deserializeMsgPack(doc1, "\x81\xA5hello\xA5world");
|
deserializeMsgPack(doc1, "\x81\xA5hello\xA5world");
|
||||||
|
|
||||||
obj2.copyFrom(obj1);
|
obj2.set(obj1);
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
@ -60,7 +60,7 @@ TEST_CASE("JsonObject::copyFrom()") {
|
|||||||
SECTION("should work with JsonObjectConst") {
|
SECTION("should work with JsonObjectConst") {
|
||||||
obj1["hello"] = "world";
|
obj1["hello"] = "world";
|
||||||
|
|
||||||
obj2.copyFrom(static_cast<JsonObjectConst>(obj1));
|
obj2.set(static_cast<JsonObjectConst>(obj1));
|
||||||
|
|
||||||
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
REQUIRE(doc1.memoryUsage() == doc2.memoryUsage());
|
||||||
REQUIRE(obj2["hello"] == std::string("world"));
|
REQUIRE(obj2["hello"] == std::string("world"));
|
||||||
|
Reference in New Issue
Block a user