mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
141 lines
2.9 KiB
C++
141 lines
2.9 KiB
C++
|
|
// StreamUtils - github.com/bblanchon/ArduinoStreamUtils
|
||
|
|
// Copyright Benoit Blanchon 2019-2021
|
||
|
|
// MIT License
|
||
|
|
|
||
|
|
#include "FailingAllocator.hpp"
|
||
|
|
|
||
|
|
#include "StreamUtils/Clients/MemoryClient.hpp"
|
||
|
|
#include "StreamUtils/Clients/SpyingClient.hpp"
|
||
|
|
#include "StreamUtils/Clients/WriteLoggingClient.hpp"
|
||
|
|
#include "StreamUtils/Prints/StringPrint.hpp"
|
||
|
|
|
||
|
|
#include "doctest.h"
|
||
|
|
|
||
|
|
using namespace StreamUtils;
|
||
|
|
|
||
|
|
TEST_CASE("WriteLoggingClient") {
|
||
|
|
MemoryClient target(4);
|
||
|
|
|
||
|
|
StringPrint log;
|
||
|
|
SpyingClient spy{target, log};
|
||
|
|
|
||
|
|
StringPrint output;
|
||
|
|
WriteLoggingClient loggingClient{spy, output};
|
||
|
|
|
||
|
|
SUBCASE("available()") {
|
||
|
|
target.print("ABC");
|
||
|
|
|
||
|
|
size_t n = loggingClient.available();
|
||
|
|
|
||
|
|
CHECK(n == 3);
|
||
|
|
CHECK(log.str() == "available() -> 3");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("connect(IPAddress)") {
|
||
|
|
int n = loggingClient.connect(IPAddress("1.2.3.4"), 80);
|
||
|
|
|
||
|
|
CHECK(n == 1);
|
||
|
|
CHECK(log.str() == "connect('1.2.3.4', 80) -> 1");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("connect(const char*)") {
|
||
|
|
int n = loggingClient.connect("1.2.3.4", 80);
|
||
|
|
|
||
|
|
CHECK(n == 1);
|
||
|
|
CHECK(log.str() == "connect('1.2.3.4', 80) -> 1");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("connected()") {
|
||
|
|
uint8_t n = loggingClient.connected();
|
||
|
|
|
||
|
|
CHECK(n == false);
|
||
|
|
CHECK(log.str() == "connected() -> 0");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("stop()") {
|
||
|
|
loggingClient.stop();
|
||
|
|
|
||
|
|
CHECK(log.str() == "stop()");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("operator bool()") {
|
||
|
|
bool n = loggingClient.operator bool();
|
||
|
|
|
||
|
|
CHECK(n == true);
|
||
|
|
CHECK(log.str() == "operator bool() -> true");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("peek()") {
|
||
|
|
target.print("ABC");
|
||
|
|
|
||
|
|
int n = loggingClient.peek();
|
||
|
|
|
||
|
|
CHECK(n == 'A');
|
||
|
|
CHECK(log.str() == "peek() -> 65");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("read()") {
|
||
|
|
target.print("ABC");
|
||
|
|
|
||
|
|
int n = loggingClient.read();
|
||
|
|
|
||
|
|
CHECK(n == 'A');
|
||
|
|
CHECK(log.str() == "read() -> 65");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("read(uint8_t*,size_t)") {
|
||
|
|
target.print("ABC");
|
||
|
|
|
||
|
|
uint8_t s[4] = {0};
|
||
|
|
size_t n = loggingClient.read(s, 4);
|
||
|
|
|
||
|
|
CHECK(n == 3);
|
||
|
|
CHECK(log.str() == "read(4) -> 3 [timeout]");
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("readBytes()") {
|
||
|
|
target.print("ABC");
|
||
|
|
|
||
|
|
char s[4] = {0};
|
||
|
|
size_t n = loggingClient.readBytes(s, 4);
|
||
|
|
|
||
|
|
CHECK(n == 3);
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
#if STREAMUTILS_STREAM_READBYTES_IS_VIRTUAL
|
||
|
|
CHECK(log.str() == "readBytes(4) -> 3 [timeout]");
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("write(char)") {
|
||
|
|
int n = loggingClient.write('A');
|
||
|
|
|
||
|
|
CHECK(n == 1);
|
||
|
|
CHECK(log.str() == "write('A') -> 1");
|
||
|
|
CHECK(output.str() == "A");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("write(char*,size_t)") {
|
||
|
|
int n = loggingClient.write("ABCDEF", 6);
|
||
|
|
|
||
|
|
CHECK(n == 4);
|
||
|
|
CHECK(log.str() == "write('ABCDEF', 6) -> 4");
|
||
|
|
CHECK(output.str() == "ABCD");
|
||
|
|
}
|
||
|
|
|
||
|
|
SUBCASE("flush()") {
|
||
|
|
loggingClient.flush();
|
||
|
|
|
||
|
|
CHECK(output.str() == "");
|
||
|
|
CHECK(log.str() == "flush()");
|
||
|
|
}
|
||
|
|
}
|