Clean up tests of adaptString()

This commit is contained in:
Benoit Blanchon
2024-11-14 14:20:35 +01:00
parent 9cf4f3871d
commit 67a512a923

View File

@ -12,77 +12,101 @@
#include "custom_string.hpp" #include "custom_string.hpp"
#include "weird_strcmp.hpp" #include "weird_strcmp.hpp"
using ArduinoJson::JsonString;
using namespace ArduinoJson::detail; using namespace ArduinoJson::detail;
TEST_CASE("ZeroTerminatedRamString") { TEST_CASE("adaptString()") {
SECTION("null") { SECTION("null const char*") {
ZeroTerminatedRamString s = adaptString(static_cast<const char*>(0)); auto s = adaptString(static_cast<const char*>(0));
CHECK(s.isNull() == true); CHECK(s.isNull() == true);
CHECK(s.size() == 0); CHECK(s.size() == 0);
CHECK(s.isLinked() == true);
} }
SECTION("non-null") { SECTION("non-null const char*") {
ZeroTerminatedRamString s = adaptString("bravo"); auto s = adaptString("bravo");
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
CHECK(s.isLinked() == true);
} }
}
TEST_CASE("SizedRamString") { SECTION("null const char* + size") {
SECTION("null") { auto s = adaptString(static_cast<const char*>(0), 10);
SizedRamString s = adaptString(static_cast<const char*>(0), 10);
CHECK(s.isNull() == true); CHECK(s.isNull() == true);
CHECK(s.isLinked() == false);
} }
SECTION("non-null") { SECTION("non-null const char* + size") {
SizedRamString s = adaptString("bravo", 5); auto s = adaptString("bravo", 5);
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
CHECK(s.isLinked() == false);
} }
}
TEST_CASE("FlashString") { SECTION("null Flash string") {
SECTION("null") { auto s = adaptString(static_cast<const __FlashStringHelper*>(0));
FlashString s = adaptString(static_cast<const __FlashStringHelper*>(0));
CHECK(s.isNull() == true); CHECK(s.isNull() == true);
CHECK(s.size() == 0); CHECK(s.size() == 0);
CHECK(s.isLinked() == false);
} }
SECTION("non-null") { SECTION("non-null Flash string") {
FlashString s = adaptString(F("bravo")); auto s = adaptString(F("bravo"));
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
CHECK(s.isLinked() == false);
} }
}
TEST_CASE("std::string") { SECTION("std::string") {
std::string orig("bravo"); std::string orig("bravo");
SizedRamString s = adaptString(orig); auto s = adaptString(orig);
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
} CHECK(s.isLinked() == false);
}
TEST_CASE("Arduino String") { SECTION("Arduino String") {
::String orig("bravo"); ::String orig("bravo");
SizedRamString s = adaptString(orig); auto s = adaptString(orig);
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
} CHECK(s.isLinked() == false);
}
TEST_CASE("custom_string") { SECTION("custom_string") {
custom_string orig("bravo"); custom_string orig("bravo");
SizedRamString s = adaptString(orig); auto s = adaptString(orig);
CHECK(s.isNull() == false); CHECK(s.isNull() == false);
CHECK(s.size() == 5); CHECK(s.size() == 5);
CHECK(s.isLinked() == false);
}
SECTION("JsonString linked") {
JsonString orig("hello", JsonString::Ownership::Linked);
auto s = adaptString(orig);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
CHECK(s.isLinked() == true);
}
SECTION("JsonString copied") {
JsonString orig("hello", JsonString::Ownership::Copied);
auto s = adaptString(orig);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
CHECK(s.isLinked() == false);
}
} }
struct EmptyStruct {}; struct EmptyStruct {};
@ -97,6 +121,7 @@ TEST_CASE("IsString<T>") {
CHECK(IsString<::String>::value == true); CHECK(IsString<::String>::value == true);
CHECK(IsString<::StringSumHelper>::value == true); CHECK(IsString<::StringSumHelper>::value == true);
CHECK(IsString<const EmptyStruct*>::value == false); CHECK(IsString<const EmptyStruct*>::value == false);
CHECK(IsString<JsonString>::value == true);
} }
TEST_CASE("stringCompare") { TEST_CASE("stringCompare") {