You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MicroDexed/third-party/ArduinoJson/extras/tests/Misc/StringAdapters.cpp

144 lines
3.3 KiB

// ArduinoJson - https://arduinojson.org
// Copyright Benoit Blanchon 2014-2021
// MIT License
#define ARDUINOJSON_ENABLE_PROGMEM 1
#define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
#include "custom_string.hpp"
#include "progmem_emulation.hpp"
#include "weird_strcmp.hpp"
#include <ArduinoJson/Strings/StringAdapters.hpp>
#include <catch.hpp>
using namespace ARDUINOJSON_NAMESPACE;
TEST_CASE("const char*") {
SECTION("null") {
StringAdapter<const char*> adapter(NULL);
CHECK(adapter.compare("bravo") < 0);
CHECK(adapter.compare(NULL) == 0);
CHECK(adapter.size() == 0);
}
SECTION("non-null") {
StringAdapter<const char*> adapter("bravo");
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
}
TEST_CASE("const char* + size") {
SECTION("null") {
StringAdapter<const char*, true> adapter(NULL, 10);
CHECK(adapter.compare("bravo") < 0);
CHECK(adapter.compare(NULL) == 0);
CHECK(adapter.size() == 10);
}
SECTION("non-null") {
StringAdapter<const char*, true> adapter("bravo", 5);
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
}
TEST_CASE("const __FlashStringHelper*") {
SECTION("null") {
StringAdapter<const __FlashStringHelper*> adapter(NULL);
CHECK(adapter.compare("bravo") < 0);
CHECK(adapter.compare(NULL) == 0);
CHECK(adapter.size() == 0);
}
SECTION("non-null") {
StringAdapter<const __FlashStringHelper*> adapter = adaptString(F("bravo"));
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
}
TEST_CASE("std::string") {
std::string str("bravo");
StringAdapter<std::string> adapter(str);
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
TEST_CASE("Arduino String") {
::String str("bravo");
StringAdapter< ::String> adapter(str);
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
TEST_CASE("custom_string") {
custom_string str("bravo");
StringAdapter<custom_string> adapter(str);
CHECK(adapter.compare(NULL) > 0);
CHECK(adapter.compare("alpha") > 0);
CHECK(adapter.compare("bravo") == 0);
CHECK(adapter.compare("charlie") < 0);
CHECK(adapter.size() == 5);
}
TEST_CASE("IsString<T>") {
SECTION("std::string") {
CHECK(IsString<std::string>::value == true);
}
SECTION("basic_string<wchar_t>") {
CHECK(IsString<std::basic_string<wchar_t> >::value == false);
}
SECTION("custom_string") {
CHECK(IsString<custom_string>::value == true);
}
SECTION("const __FlashStringHelper*") {
CHECK(IsString<const __FlashStringHelper*>::value == true);
}
SECTION("const char*") {
CHECK(IsString<const char*>::value == true);
}
SECTION("const char[]") {
CHECK(IsString<const char[8]>::value == true);
}
}