forked from bblanchon/ArduinoJson
RawJson()
accepts any kind of string and obeys to duplication rules
This commit is contained in:
@ -84,7 +84,7 @@ TEST_CASE("JsonArray::add()") {
|
||||
REQUIRE(expectedSize == _jsonBuffer.size());
|
||||
}
|
||||
|
||||
SECTION("should duplicate char*") {
|
||||
SECTION("should duplicate char*") {
|
||||
_array.add(const_cast<char*>("world"));
|
||||
const size_t expectedSize = JSON_ARRAY_SIZE(1) + 6;
|
||||
REQUIRE(expectedSize == _jsonBuffer.size());
|
||||
@ -95,4 +95,16 @@ TEST_CASE("JsonArray::add()") {
|
||||
const size_t expectedSize = JSON_ARRAY_SIZE(1) + 6;
|
||||
REQUIRE(expectedSize == _jsonBuffer.size());
|
||||
}
|
||||
|
||||
SECTION("should not duplicate RawJson(const char*)") {
|
||||
_array.add(RawJson("{}"));
|
||||
const size_t expectedSize = JSON_ARRAY_SIZE(1);
|
||||
REQUIRE(expectedSize == _jsonBuffer.size());
|
||||
}
|
||||
|
||||
SECTION("should duplicate RawJson(char*)") {
|
||||
_array.add(RawJson(const_cast<char*>("{}")));
|
||||
const size_t expectedSize = JSON_ARRAY_SIZE(1) + 3;
|
||||
REQUIRE(expectedSize == _jsonBuffer.size());
|
||||
}
|
||||
}
|
||||
|
@ -8,10 +8,10 @@
|
||||
static void check(JsonArray &array, std::string expected) {
|
||||
std::string actual;
|
||||
size_t actualLen = array.printTo(actual);
|
||||
size_t measuredLen = array.measureLength();
|
||||
CHECK(actualLen == expected.size());
|
||||
CHECK(measuredLen == expected.size());
|
||||
REQUIRE(expected == actual);
|
||||
REQUIRE(actualLen == expected.size());
|
||||
size_t measuredLen = array.measureLength();
|
||||
REQUIRE(measuredLen == expected.size());
|
||||
}
|
||||
|
||||
TEST_CASE("JsonArray::printTo()") {
|
||||
@ -67,12 +67,22 @@ TEST_CASE("JsonArray::printTo()") {
|
||||
check(array, "[1,2]");
|
||||
}
|
||||
|
||||
SECTION("RawJson") {
|
||||
SECTION("RawJson(const char*)") {
|
||||
array.add(RawJson("{\"key\":\"value\"}"));
|
||||
|
||||
check(array, "[{\"key\":\"value\"}]");
|
||||
}
|
||||
|
||||
SECTION("RawJson(char*)") {
|
||||
DynamicJsonBuffer jb2;
|
||||
JsonArray &arr = jb2.createArray();
|
||||
|
||||
char tmp[] = "{\"key\":\"value\"}";
|
||||
arr.add(RawJson(tmp));
|
||||
|
||||
check(arr, "[{\"key\":\"value\"}]");
|
||||
}
|
||||
|
||||
SECTION("OneIntegerOverCapacity") {
|
||||
array.add(1);
|
||||
array.add(2);
|
||||
|
@ -8,6 +8,7 @@ add_executable(MiscTests
|
||||
std_stream.cpp
|
||||
std_string.cpp
|
||||
StringBuilder.cpp
|
||||
StringTraits.cpp
|
||||
TypeTraits.cpp
|
||||
unsigned_char.cpp
|
||||
vla.cpp
|
||||
|
22
test/Misc/StringTraits.cpp
Normal file
22
test/Misc/StringTraits.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
// ArduinoJson - arduinojson.org
|
||||
// Copyright Benoit Blanchon 2014-2018
|
||||
// MIT License
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <catch.hpp>
|
||||
|
||||
using namespace ArduinoJson::Internals;
|
||||
|
||||
template <typename String>
|
||||
bool should_duplicate() {
|
||||
return StringTraits<String>::should_duplicate;
|
||||
}
|
||||
|
||||
TEST_CASE("StringTraits") {
|
||||
SECTION("should_duplicate") {
|
||||
REQUIRE(false == should_duplicate<const char*>());
|
||||
REQUIRE(true == should_duplicate<char*>());
|
||||
REQUIRE(true == should_duplicate<RawJsonString<char*> >());
|
||||
REQUIRE(false == should_duplicate<RawJsonString<const char*> >());
|
||||
}
|
||||
}
|
@ -4,7 +4,6 @@
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <catch.hpp>
|
||||
#include <sstream>
|
||||
|
||||
using namespace ArduinoJson::TypeTraits;
|
||||
|
||||
@ -31,12 +30,6 @@ TEST_CASE("TypeTraits") {
|
||||
REQUIRE(static_cast<bool>(IsVariant<JsonVariant>::value));
|
||||
}
|
||||
|
||||
SECTION("IsString") {
|
||||
REQUIRE((IsString<const char*>::value));
|
||||
REQUIRE((IsString<std::string>::value));
|
||||
REQUIRE_FALSE((IsString<double>::value));
|
||||
}
|
||||
|
||||
SECTION("IsConst") {
|
||||
REQUIRE_FALSE((IsConst<char>::value));
|
||||
REQUIRE((IsConst<const char>::value));
|
||||
|
Reference in New Issue
Block a user