Implemented reference semantics for JsonVariant

This commit is contained in:
Benoit Blanchon
2018-08-21 17:56:16 +02:00
parent 0454bd1ef6
commit 9cbc891816
53 changed files with 1196 additions and 839 deletions

View File

@ -9,7 +9,10 @@
template <typename T>
void checkValue(T expected) {
JsonVariant variant = expected;
DynamicJsonDocument doc;
JsonVariant variant = doc.to<JsonVariant>();
variant.set(expected);
REQUIRE(expected == variant.as<T>());
}
@ -21,11 +24,15 @@ void checkReference(T &expected) {
template <typename T>
void checkNumericType() {
DynamicJsonDocument docMin, docMax;
JsonVariant variantMin = docMin.to<JsonVariant>();
JsonVariant variantMax = docMax.to<JsonVariant>();
T min = std::numeric_limits<T>::min();
T max = std::numeric_limits<T>::max();
JsonVariant variantMin(min);
JsonVariant variantMax(max);
variantMin.set(min);
variantMax.set(max);
REQUIRE(min == variantMin.as<T>());
REQUIRE(max == variantMax.as<T>());
@ -41,9 +48,12 @@ TEST_CASE("JsonVariant set()/get()") {
SECTION("Null") {
checkValue<const char *>(NULL);
}
SECTION("String") {
SECTION("const char*") {
checkValue<const char *>("hello");
}
SECTION("std::string") {
checkValue<std::string>("hello");
}
SECTION("False") {
checkValue<bool>(false);