38TEST(customcontrolchannel, msgroundtrip)
42 auto controlmsg = acmc.format_message(
"flower",
messagetext);
44 EXPECT_EQ(controlmsg.size(), 3);
49 for (
const auto &cmsg : controlmsg)
51 ASSERT_LE(cmsg.size(), 140);
55 ASSERT_TRUE(received);
57 auto [recv_proto, received_message] = accrecv.
get_message();
59 ASSERT_EQ(recv_proto,
"flower");
62TEST(customcontrolchannel, msgroundtripascii)
67 auto messagetextNoCR = std::regex_replace(
messagetext, std::regex{
"\n"},
"");
68 auto controlmsg = acmc.format_message(
"flower", messagetextNoCR);
71 EXPECT_EQ(controlmsg.size(), 2);
76 for (
const auto &cmsg : controlmsg)
78 ASSERT_LE(cmsg.size(), 140);
79 received = accrecv.receive_message(cmsg);
82 ASSERT_TRUE(received);
83 auto [recv_proto, received_message] = accrecv.get_message();
84 ASSERT_EQ(received_message, messagetextNoCR);
85 ASSERT_EQ(recv_proto,
"flower");
88TEST(customcontrolchannel, msgroundtriponepacket)
92 acmc.max_msg_size = 2000;
93 auto controlmsg = acmc.format_message(
"flower",
messagetext);
96 EXPECT_EQ(controlmsg.size(), 1);
103 ASSERT_TRUE(received);
104 auto [recv_proto, received_message] = accrecv.get_message();
106 ASSERT_EQ(recv_proto,
"flower");
109TEST(customcontrolchannel, tinymessage)
111 std::string request{
"I want a cookie!"};
113 acmc.supported_protocols.push_back(
"fortune");
114 auto cmsgs = acmc.format_message(
"fortune", request);
115 EXPECT_EQ(cmsgs.size(), 1);
117 EXPECT_EQ(cmsgs.at(0), std::string(
"ACC,fortune,16,A,I want a cookie!"));
128TEST(customcontrolchannel, recv_with_nul)
130 std::string control_msg{
"ACC,fortune,64,6,InsgIm1lIjogImZyb2ciLCAAeGZm/SJtc2ciOiAiSSBhbSAAS2VybWl0IiB9Ig=="};
132 bool received =
false;
138 char data[] =
"\"{ \"me\": \"frog\", \0xff\xfd\"msg\": \"I am \0Kermit\" }\"";
139 const std::string expected_string{data,
sizeof(data) - 1};
141 ASSERT_TRUE(received);
142 auto [recv_proto, received_message] = accrecv.get_message();
143 ASSERT_EQ(46, received_message.length());
144 ASSERT_EQ(received_message, expected_string);
145 ASSERT_EQ(recv_proto,
"fortune");
148TEST(customcontrolchannel, send_with_nul)
151 acmc.supported_protocols.push_back(
"fortune");
154 char data[] =
"\"{ \"me\": \"frog\", \0xff\xfd\"msg\": \"I am \0Kermit\" }\"";
155 const std::string string_with_nul{data,
sizeof(data) - 1};
157 const auto cmsgs = acmc.format_message(
"fortune", string_with_nul);
159 const std::string expected_control_msg{
"ACC,fortune,64,6,InsgIm1lIjogImZyb2ciLCAAeGZm/SJtc2ciOiAiSSBhbSAAS2VybWl0IiB9Ig=="};
161 EXPECT_EQ(cmsgs.size(), 1);
162 EXPECT_EQ(cmsgs[0], expected_control_msg);