Permet de lire les données de la passerelle enphase pour piloter la chauffe d'un cumulus via un relais statique.
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.
 
 
 
 

190 lines
6.3 KiB

// ArduinoJson - https://arduinojson.org
// Copyright © 2014-2024, Benoit BLANCHON
// MIT License
#include <Arduino.h>
#include <ArduinoJson/Strings/IsString.hpp>
#include <ArduinoJson/Strings/StringAdapters.hpp>
#include <catch.hpp>
#include "custom_string.hpp"
#include "weird_strcmp.hpp"
using namespace ArduinoJson::detail;
TEST_CASE("ZeroTerminatedRamString") {
SECTION("null") {
ZeroTerminatedRamString s = adaptString(static_cast<const char*>(0));
CHECK(s.isNull() == true);
CHECK(s.size() == 0);
}
SECTION("non-null") {
ZeroTerminatedRamString s = adaptString("bravo");
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
}
TEST_CASE("SizedRamString") {
SECTION("null") {
SizedRamString s = adaptString(static_cast<const char*>(0), 10);
CHECK(s.isNull() == true);
}
SECTION("non-null") {
SizedRamString s = adaptString("bravo", 5);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
}
TEST_CASE("FlashString") {
SECTION("null") {
FlashString s = adaptString(static_cast<const __FlashStringHelper*>(0));
CHECK(s.isNull() == true);
CHECK(s.size() == 0);
}
SECTION("non-null") {
FlashString s = adaptString(F("bravo"));
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
}
TEST_CASE("std::string") {
std::string orig("bravo");
SizedRamString s = adaptString(orig);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
TEST_CASE("Arduino String") {
::String orig("bravo");
SizedRamString s = adaptString(orig);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
TEST_CASE("custom_string") {
custom_string orig("bravo");
SizedRamString s = adaptString(orig);
CHECK(s.isNull() == false);
CHECK(s.size() == 5);
}
struct EmptyStruct {};
TEST_CASE("IsString<T>") {
CHECK(IsString<std::string>::value == true);
CHECK(IsString<std::basic_string<wchar_t>>::value == false);
CHECK(IsString<custom_string>::value == true);
CHECK(IsString<const __FlashStringHelper*>::value == true);
CHECK(IsString<const char*>::value == true);
CHECK(IsString<const char[8]>::value == true);
CHECK(IsString<::String>::value == true);
CHECK(IsString<::StringSumHelper>::value == true);
CHECK(IsString<const EmptyStruct*>::value == false);
}
TEST_CASE("stringCompare") {
SECTION("ZeroTerminatedRamString vs ZeroTerminatedRamString") {
CHECK(stringCompare(adaptString("bravo"), adaptString("alpha")) > 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("bravo")) == 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("charlie")) < 0);
}
SECTION("ZeroTerminatedRamString vs SizedRamString") {
CHECK(stringCompare(adaptString("bravo"), adaptString("alpha?", 5)) > 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("bravo?", 4)) > 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("bravo?", 5)) == 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("bravo?", 6)) < 0);
CHECK(stringCompare(adaptString("bravo"), adaptString("charlie?", 7)) < 0);
}
SECTION("SizedRamString vs SizedRamString") {
// clang-format off
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("alpha?", 5)) > 0);
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("bravo?", 5)) == 0);
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("charlie?", 7)) < 0);
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("bravo!", 4)) > 0);
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("bravo!", 5)) == 0);
CHECK(stringCompare(adaptString("bravo!", 5), adaptString("bravo!", 6)) < 0);
// clang-format on
}
SECTION("FlashString vs FlashString") {
// clang-format off
CHECK(stringCompare(adaptString(F("bravo")), adaptString(F("alpha"))) > 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString(F("bravo"))) == 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString(F("charlie"))) < 0);
// clang-format on
}
SECTION("FlashString vs SizedRamString") {
// clang-format off
CHECK(stringCompare(adaptString(F("bravo")), adaptString("alpha?", 5)) > 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString("bravo?", 5)) == 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString("charlie?", 7)) < 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString("bravo!", 4)) > 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString("bravo!", 5)) == 0);
CHECK(stringCompare(adaptString(F("bravo")), adaptString("bravo!", 6)) < 0);
// clang-format on
}
SECTION("ZeroTerminatedRamString vs FlashString") {
// clang-format off
CHECK(stringCompare(adaptString("bravo"), adaptString(F("alpha?"), 5)) > 0);
CHECK(stringCompare(adaptString("bravo"), adaptString(F("bravo?"), 4)) > 0);
CHECK(stringCompare(adaptString("bravo"), adaptString(F("bravo?"), 5)) == 0);
CHECK(stringCompare(adaptString("bravo"), adaptString(F("bravo?"), 6)) < 0);
CHECK(stringCompare(adaptString("bravo"), adaptString(F("charlie?"), 7)) < 0);
// clang-format on
}
}
TEST_CASE("stringEquals()") {
SECTION("ZeroTerminatedRamString vs ZeroTerminatedRamString") {
CHECK(stringEquals(adaptString("bravo"), adaptString("brav")) == false);
CHECK(stringEquals(adaptString("bravo"), adaptString("bravo")) == true);
CHECK(stringEquals(adaptString("bravo"), adaptString("bravo!")) == false);
}
SECTION("ZeroTerminatedRamString vs SizedRamString") {
// clang-format off
CHECK(stringEquals(adaptString("bravo"), adaptString("bravo!", 4)) == false);
CHECK(stringEquals(adaptString("bravo"), adaptString("bravo!", 5)) == true);
CHECK(stringEquals(adaptString("bravo"), adaptString("bravo!", 6)) == false);
// clang-format on
}
SECTION("FlashString vs SizedRamString") {
// clang-format off
CHECK(stringEquals(adaptString(F("bravo")), adaptString("bravo!", 4)) == false);
CHECK(stringEquals(adaptString(F("bravo")), adaptString("bravo!", 5)) == true);
CHECK(stringEquals(adaptString(F("bravo")), adaptString("bravo!", 6)) == false);
// clang-format on
}
SECTION("SizedRamString vs SizedRamString") {
// clang-format off
CHECK(stringEquals(adaptString("bravo?", 5), adaptString("bravo!", 4)) == false);
CHECK(stringEquals(adaptString("bravo?", 5), adaptString("bravo!", 5)) == true);
CHECK(stringEquals(adaptString("bravo?", 5), adaptString("bravo!", 6)) == false);
// clang-format on
}
}