mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-16 20:12:16 +02:00
Increased test coverage
This commit is contained in:
@ -29,6 +29,14 @@ TEST_CASE("nullptr") {
|
|||||||
REQUIRE(variant.isNull());
|
REQUIRE(variant.isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("JsonVariant.set(nullptr) with unbound reference") {
|
||||||
|
JsonVariant unboundReference;
|
||||||
|
|
||||||
|
unboundReference.set(nullptr);
|
||||||
|
|
||||||
|
REQUIRE(variant.isNull());
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("JsonVariant.is<nullptr_t>()") {
|
SECTION("JsonVariant.is<nullptr_t>()") {
|
||||||
variant.set(42);
|
variant.set(42);
|
||||||
REQUIRE(variant.is<std::nullptr_t>() == false);
|
REQUIRE(variant.is<std::nullptr_t>() == false);
|
||||||
|
@ -7,73 +7,83 @@
|
|||||||
|
|
||||||
TEST_CASE("JsonArray::remove()") {
|
TEST_CASE("JsonArray::remove()") {
|
||||||
DynamicJsonDocument doc(4096);
|
DynamicJsonDocument doc(4096);
|
||||||
JsonArray _array = doc.to<JsonArray>();
|
JsonArray array = doc.to<JsonArray>();
|
||||||
_array.add(1);
|
array.add(1);
|
||||||
_array.add(2);
|
array.add(2);
|
||||||
_array.add(3);
|
array.add(3);
|
||||||
|
|
||||||
SECTION("RemoveFirstByIndex") {
|
SECTION("remove first by index") {
|
||||||
_array.remove(0);
|
array.remove(0);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 2);
|
REQUIRE(array[0] == 2);
|
||||||
REQUIRE(_array[1] == 3);
|
REQUIRE(array[1] == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("RemoveMiddleByIndex") {
|
SECTION("remove middle by index") {
|
||||||
_array.remove(1);
|
array.remove(1);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 1);
|
REQUIRE(array[0] == 1);
|
||||||
REQUIRE(_array[1] == 3);
|
REQUIRE(array[1] == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("RemoveLastByIndex") {
|
SECTION("remove last by index") {
|
||||||
_array.remove(2);
|
array.remove(2);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 1);
|
REQUIRE(array[0] == 1);
|
||||||
REQUIRE(_array[1] == 2);
|
REQUIRE(array[1] == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("RemoveFirstByIterator") {
|
SECTION("remove first by iterator") {
|
||||||
JsonArray::iterator it = _array.begin();
|
JsonArray::iterator it = array.begin();
|
||||||
_array.remove(it);
|
array.remove(it);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 2);
|
REQUIRE(array[0] == 2);
|
||||||
REQUIRE(_array[1] == 3);
|
REQUIRE(array[1] == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("RemoveMiddleByIterator") {
|
SECTION("remove middle by iterator") {
|
||||||
JsonArray::iterator it = _array.begin();
|
JsonArray::iterator it = array.begin();
|
||||||
++it;
|
++it;
|
||||||
_array.remove(it);
|
array.remove(it);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 1);
|
REQUIRE(array[0] == 1);
|
||||||
REQUIRE(_array[1] == 3);
|
REQUIRE(array[1] == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("RemoveLastByIterator") {
|
SECTION("remove last bty iterator") {
|
||||||
JsonArray::iterator it = _array.begin();
|
JsonArray::iterator it = array.begin();
|
||||||
++it;
|
++it;
|
||||||
++it;
|
++it;
|
||||||
_array.remove(it);
|
array.remove(it);
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 1);
|
REQUIRE(array[0] == 1);
|
||||||
REQUIRE(_array[1] == 2);
|
REQUIRE(array[1] == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("In a loop") {
|
SECTION("In a loop") {
|
||||||
for (JsonArray::iterator it = _array.begin(); it != _array.end(); ++it) {
|
for (JsonArray::iterator it = array.begin(); it != array.end(); ++it) {
|
||||||
if (*it == 2)
|
if (*it == 2)
|
||||||
_array.remove(it);
|
array.remove(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
REQUIRE(2 == _array.size());
|
REQUIRE(2 == array.size());
|
||||||
REQUIRE(_array[0] == 1);
|
REQUIRE(array[0] == 1);
|
||||||
REQUIRE(_array[1] == 3);
|
REQUIRE(array[1] == 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("remove by index on unbound reference") {
|
||||||
|
JsonArray unboundArray;
|
||||||
|
unboundArray.remove(20);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("remove by iterator on unbound reference") {
|
||||||
|
JsonArray unboundArray;
|
||||||
|
unboundArray.remove(unboundArray.begin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,8 +70,13 @@ TEST_CASE("JsonObject::remove()") {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SECTION("should work on null object") {
|
SECTION("remove by key on unbound reference") {
|
||||||
JsonObject null;
|
JsonObject unboundObject;
|
||||||
null.remove("key");
|
unboundObject.remove("key");
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("remove by iterator on unbound reference") {
|
||||||
|
JsonObject unboundObject;
|
||||||
|
unboundObject.remove(unboundObject.begin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,21 +10,37 @@ TEST_CASE("JsonVariant::add()") {
|
|||||||
DynamicJsonDocument doc(4096);
|
DynamicJsonDocument doc(4096);
|
||||||
JsonVariant var = doc.to<JsonVariant>();
|
JsonVariant var = doc.to<JsonVariant>();
|
||||||
|
|
||||||
SECTION("integer") {
|
SECTION("add integer to new variant") {
|
||||||
var.add(42);
|
var.add(42);
|
||||||
|
|
||||||
REQUIRE(var.as<std::string>() == "[42]");
|
REQUIRE(var.as<std::string>() == "[42]");
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("const char*") {
|
SECTION("add const char* to new variant") {
|
||||||
var.add("hello");
|
var.add("hello");
|
||||||
|
|
||||||
REQUIRE(var.as<std::string>() == "[\"hello\"]");
|
REQUIRE(var.as<std::string>() == "[\"hello\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("std::string") {
|
SECTION("add std::string to new variant") {
|
||||||
var.add(std::string("hello"));
|
var.add(std::string("hello"));
|
||||||
|
|
||||||
REQUIRE(var.as<std::string>() == "[\"hello\"]");
|
REQUIRE(var.as<std::string>() == "[\"hello\"]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("add integer to integer") {
|
||||||
|
var.set(123);
|
||||||
|
|
||||||
|
var.add(456); // no-op
|
||||||
|
|
||||||
|
REQUIRE(var.as<std::string>() == "123");
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("add integer to object") {
|
||||||
|
var["val"] = 123;
|
||||||
|
|
||||||
|
var.add(456); // no-op
|
||||||
|
|
||||||
|
REQUIRE(var.as<std::string>() == "{\"val\":123}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -158,6 +158,18 @@ TEST_CASE("Compare JsonVariant with JsonVariant") {
|
|||||||
CHECK_FALSE(a > b);
|
CHECK_FALSE(a > b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("42 vs 42U") {
|
||||||
|
a.set(42);
|
||||||
|
b.set(42U);
|
||||||
|
|
||||||
|
CHECK(a == b);
|
||||||
|
CHECK(a <= b);
|
||||||
|
CHECK(a >= b);
|
||||||
|
CHECK_FALSE(a != b);
|
||||||
|
CHECK_FALSE(a < b);
|
||||||
|
CHECK_FALSE(a > b);
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("42 vs 42.0") {
|
SECTION("42 vs 42.0") {
|
||||||
a.set(42);
|
a.set(42);
|
||||||
b.set(42.0);
|
b.set(42.0);
|
||||||
@ -230,6 +242,30 @@ TEST_CASE("Compare JsonVariant with JsonVariant") {
|
|||||||
CHECK_FALSE(a == b);
|
CHECK_FALSE(a == b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("42U vs 42U") {
|
||||||
|
a.set(42U);
|
||||||
|
b.set(42U);
|
||||||
|
|
||||||
|
CHECK(a == b);
|
||||||
|
CHECK(a <= b);
|
||||||
|
CHECK(a >= b);
|
||||||
|
CHECK_FALSE(a != b);
|
||||||
|
CHECK_FALSE(a < b);
|
||||||
|
CHECK_FALSE(a > b);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("42U vs 42") {
|
||||||
|
a.set(42U);
|
||||||
|
b.set(42);
|
||||||
|
|
||||||
|
CHECK(a == b);
|
||||||
|
CHECK(a <= b);
|
||||||
|
CHECK(a >= b);
|
||||||
|
CHECK_FALSE(a != b);
|
||||||
|
CHECK_FALSE(a < b);
|
||||||
|
CHECK_FALSE(a > b);
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("[1] vs [1]") {
|
SECTION("[1] vs [1]") {
|
||||||
a.add(1);
|
a.add(1);
|
||||||
b.add(1);
|
b.add(1);
|
||||||
|
@ -83,4 +83,13 @@ TEST_CASE("JsonVariant::set(JsonVariant)") {
|
|||||||
REQUIRE(doc1.memoryUsage() == JSON_STRING_SIZE(7));
|
REQUIRE(doc1.memoryUsage() == JSON_STRING_SIZE(7));
|
||||||
REQUIRE(doc2.memoryUsage() == JSON_STRING_SIZE(7));
|
REQUIRE(doc2.memoryUsage() == JSON_STRING_SIZE(7));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("destination is unbound") {
|
||||||
|
JsonVariant unboundVariant;
|
||||||
|
|
||||||
|
unboundVariant.set(var1);
|
||||||
|
|
||||||
|
REQUIRE(unboundVariant.isUndefined());
|
||||||
|
REQUIRE(unboundVariant.isNull());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,15 @@ TEST_CASE("JsonVariant::operator[]") {
|
|||||||
REQUIRE(1 == var[0].size());
|
REQUIRE(1 == var[0].size());
|
||||||
REQUIRE(std::string("world") == var[0]["hello"]);
|
REQUIRE(std::string("world") == var[0]["hello"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("variant[0] when variant contains an integer") {
|
||||||
|
var.set(123);
|
||||||
|
|
||||||
|
var[0] = 345; // no-op
|
||||||
|
|
||||||
|
REQUIRE(var.is<int>());
|
||||||
|
REQUIRE(var.as<int>() == 123);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("The JsonVariant is a JsonObject") {
|
SECTION("The JsonVariant is a JsonObject") {
|
||||||
|
@ -15,6 +15,11 @@ static size_t print(StringWriter& writer, const char* s) {
|
|||||||
return writer.write(reinterpret_cast<const uint8_t*>(s), strlen(s));
|
return writer.write(reinterpret_cast<const uint8_t*>(s), strlen(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename StringWriter>
|
||||||
|
static size_t print(StringWriter& writer, char c) {
|
||||||
|
return writer.write(static_cast<uint8_t>(c));
|
||||||
|
}
|
||||||
|
|
||||||
template <typename StringWriter, typename String>
|
template <typename StringWriter, typename String>
|
||||||
void common_tests(StringWriter& writer, const String& output) {
|
void common_tests(StringWriter& writer, const String& output) {
|
||||||
SECTION("InitialState") {
|
SECTION("InitialState") {
|
||||||
@ -47,6 +52,7 @@ TEST_CASE("StaticStringWriter") {
|
|||||||
SECTION("OverCapacity") {
|
SECTION("OverCapacity") {
|
||||||
REQUIRE(20 == print(writer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
|
REQUIRE(20 == print(writer, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
|
||||||
REQUIRE(0 == print(writer, "ABC"));
|
REQUIRE(0 == print(writer, "ABC"));
|
||||||
|
REQUIRE(0 == print(writer, 'D'));
|
||||||
REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20));
|
REQUIRE("ABCDEFGHIJKLMNOPQRST" == std::string(output, 20));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
namespace ARDUINOJSON_NAMESPACE {
|
namespace ARDUINOJSON_NAMESPACE {
|
||||||
|
|
||||||
//
|
|
||||||
enum {
|
enum {
|
||||||
VALUE_MASK = 0x7F,
|
VALUE_MASK = 0x7F,
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user