4#include <catch2/catch_all.hpp>
7TEST_CASE(
"Serializer::message_termination",
"[Protocol][Protocol::Serialization]")
11TEST_CASE(
"Serializer::serializeValue<direct>()",
"[Protocol][Protocol::Serialization]")
15 int value = GENERATE(1, 2, 3, 4, 5);
22 double value = GENERATE(1.0, 2.5, 3.14, 4.2, 5.0, -31.4, 0.0);
29 std::string
value = GENERATE(
"",
"hello",
"world",
"test",
"12345");
36TEST_CASE(
"Serializer::serializeValue<variant>()",
"[Protocol][Protocol::Serialization]")
40 int value = GENERATE(1, 2, 3, 4, 5);
48 double value = GENERATE(1.0, 2.5, 3.14, 4.2, 5.0, -31.4, 0.0);
57 std::make_pair(
"",
"{}"),
58 std::make_pair(
"hello",
"{hello}"),
59 std::make_pair(
"world",
"{world}"),
60 std::make_pair(
"test",
"{test}"),
61 std::make_pair(
"12345",
"{12345}"));
68TEST_CASE(
"Serializer::serialize<direct>(Success)",
"[Protocol][Protocol::Serialization]")
73 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
74 auto value = GENERATE(
82 std::string expectedHeader =
83 std::string(identifier) +
"=" +
87 CHECK(serialized.header == expectedHeader);
89 CHECK(serialized.payloadSize() == 0);
94 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
95 auto inquery_result = GENERATE(
102 std::string expectedHeader =
103 std::string(identifier) +
"=" +
107 CHECK(serialized.header == expectedHeader);
109 CHECK(serialized.payloadSize() == 0);
113 auto identifier = GENERATE(
"x",
"it",
"long_identifier");
117 std::string expectedHeader = std::string(identifier) +
";\n";
119 CHECK(serialized.header == expectedHeader);
121 CHECK(serialized.payloadSize() == 0);
125TEST_CASE(
"Serializer::serialize<variant>(Success)",
"[Protocol][Protocol::Serialization]")
130 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
131 auto value = GENERATE(
139 std::string expectedHeader =
140 std::string(identifier) +
"=" +
144 CHECK(serialized.header == expectedHeader);
146 CHECK(serialized.payloadSize() == 0);
151 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
152 auto inquery_result = GENERATE(
160 std::string expectedHeader =
161 std::string(identifier) +
"=" +
165 CHECK(serialized.header == expectedHeader);
167 CHECK(serialized.payloadSize() == 0);
171 auto identifier = GENERATE(
"x",
"it",
"long_identifier");
176 std::string expectedHeader = std::string(identifier) +
";\n";
178 CHECK(serialized.header == expectedHeader);
180 CHECK(serialized.payloadSize() == 0);
184TEST_CASE(
"Serializer::serialize<direct>(Error)",
"[Protocol][Protocol::Serialization]")
186 auto description = GENERATE(
"",
"hello world",
"error description");
190 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
191 auto value = GENERATE(
199 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
202 CHECK(serialized.header == expectedHeader);
204 CHECK(serialized.payloadSize() == 0);
209 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
213 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
216 CHECK(serialized.header == expectedHeader);
218 CHECK(serialized.payloadSize() == 0);
222 auto identifier = GENERATE(
"x",
"it",
"long_identifier");
226 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
229 CHECK(serialized.header == expectedHeader);
231 CHECK(serialized.payloadSize() == 0);
234TEST_CASE(
"Serializer::serialize<variant>(Error)",
"[Protocol][Protocol::Serialization]")
236 auto description = GENERATE(
"",
"hello world",
"error description");
240 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
241 auto value = GENERATE(
250 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
253 CHECK(serialized.header == expectedHeader);
255 CHECK(serialized.payloadSize() == 0);
260 GENERATE(
"x",
"it",
"long_identifier",
"sequence_identifier[5]",
"nested_identifier[3][2]");
265 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
268 CHECK(serialized.header == expectedHeader);
270 CHECK(serialized.payloadSize() == 0);
274 auto identifier = GENERATE(
"x",
"it",
"long_identifier");
279 std::string expectedHeader = std::string(identifier) +
": Error: " +
description +
282 CHECK(serialized.header == expectedHeader);
284 CHECK(serialized.payloadSize() == 0);
static constexpr const char * message_termination
Message line termination sequence (newline character) used to "close" a serialized message.
static std::string serializeValue(irsol::types::protocol_value_t &&value)
Serialize a protocol primitive value to a string.
static internal::SerializedMessage serialize(OutMessage &&msg)
Serialize an irsol::protocol::OutMessage variant into a serialized protocol message.
std::variant< Success, BinaryDataBuffer, ImageBinaryData, ColorImageBinaryData, Error > OutMessage
Variant type representing any outgoing message.
std::variant< int, double, std::string > protocol_value_t
Variant type representing protocol values that can be one of several types.
Serialization utilities for protocol messages and primitive values.
Represents an assignment operation in the protocol.
Represents a command invocation in the protocol.
static Error from(const T &msg, const std::string &description)
Creates an error from a specific incoming message type.
Represents a value inquiry in the protocol.
Represents a success response message from the server.
static Success from(const Assignment &msg, std::optional< irsol::types::protocol_value_t > overrideValue=std::nullopt)
Creates a success message from an Assignment.
CHECK(m.identifier==identifier)
CHECK_FALSE(m.hasDouble())
irsol::protocol::Assignment assignment
TEST_CASE("Serializer::message_termination", "[Protocol][Protocol::Serialization]")
std::vector< std::string > expected