4#include <catch2/catch_all.hpp>
6TEST_CASE(
"Parsing invalid identifier",
"[Protocol][Protocol::Parser]")
9 auto identifier = GENERATE(
11 "identifier with spaces",
12 "identifier-with-dashes",
17 auto suffix = GENERATE(
"=value",
"=42",
"=3.14",
"?",
"");
19 std::string line = std::string(identifier) + suffix;
25TEST_CASE(
"Assignment parsing int",
"[Protocol][Protocol::Parser]")
27 auto identifier = GENERATE(
28 "x",
"it",
"long_identifier",
"sequence_identifier[4]",
"nested_sequence_identifier[4][423]");
29 auto value = GENERATE(42, 5, 32121);
31 std::string
input = std::string(identifier) +
"=" + std::to_string(
value);
36 auto asg = std::get<irsol::protocol::Assignment>(*
msg);
42TEST_CASE(
"Assignment parsing double",
"[Protocol][Protocol::Parser]")
44 auto identifier = GENERATE(
45 "x",
"it",
"long_identifier",
"sequence_identifier[4]",
"nested_sequence_identifier[4][423]");
46 auto value = GENERATE(42.0, 0, 5, 32121.4234234);
48 std::string
input = std::string(identifier) +
"=" + std::to_string(
value);
53 auto asg = std::get<irsol::protocol::Assignment>(*
msg);
59TEST_CASE(
"Assignment parsing string",
"[Protocol][Protocol::Parser]")
61 auto identifier = GENERATE(
62 "x",
"it",
"long_identifier",
"sequence_identifier[4]",
"nested_sequence_identifier[4][423]");
63 auto value = GENERATE(
"c",
"longer",
"long_string_with_underscores",
"5è4?-é");
65 std::string
input = std::string(identifier) +
"=" +
value;
70 auto asg = std::get<irsol::protocol::Assignment>(*
msg);
75TEST_CASE(
"Assignment parsing string (quoted)",
"[Protocol][Protocol::Parser]")
77 auto identifier = GENERATE(
78 "x",
"it",
"long_identifier",
"sequence_identifier[4]",
"nested_sequence_identifier[4][423]");
79 auto value = GENERATE(
"c",
"longer",
"long_string_with_underscores",
"5è4?-é");
88 auto asg = std::get<irsol::protocol::Assignment>(*
msg);
94TEST_CASE(
"Inquiry parsing",
"[Protocol][Protocol::Parser]")
96 auto identifier = GENERATE(
97 "x",
"it",
"long_identifier",
"sequence_identifier[4]",
"nested_sequence_identifier[4][423]");
99 std::string
input = std::string(identifier) +
"?";
102 auto inq = std::get<irsol::protocol::Inquiry>(*
msg);
103 CHECK(inq.identifier == identifier);
106TEST_CASE(
"Command parsing",
"[Protocol][Protocol::Parser]")
108 auto identifier = GENERATE(
"x",
"it",
"long_identifier");
110 std::string
input = std::string(identifier);
113 auto inq = std::get<irsol::protocol::Command>(*
msg);
114 CHECK(inq.identifier == identifier);
static std::optional< InMessage > parse(const std::string &line)
Attempts to parse a single protocol input line into a structured InMessage.
Parses raw protocol input strings into structured messages.
TEST_CASE("Parsing invalid identifier", "[Protocol][Protocol::Parser]")
CHECK(asg.identifier==identifier)