{
string line;
getline(is, line);
+ line = strip_cr(line);
if (state == State::Start)
{
}
+ std::string
+ strip_cr(const std::string& in)
+ {
+ string::size_type length = in.size();
+
+ if (length > 0 && in[length - 1] == '\r')
+ return in.substr(0, length - 1);
+
+ return in;
+ }
+
+
std::string
escape_header(const std::string& in)
{
Message ack();
Message nack();
+ std::string strip_cr(const std::string& in);
+
std::string escape_header(const std::string& in);
std::string unescape_header(const std::string& in);
}
+BOOST_AUTO_TEST_CASE(cr1)
+{
+ // optional carriage returns
+
+ istringstream s1("HELLO\r\nkey:value\r\n\r\nWORLD" + null);
+ istream s2(s1.rdbuf());
+
+ Message msg = read_message(s2);
+
+ BOOST_CHECK_EQUAL(msg.command, "HELLO");
+
+ BOOST_CHECK_EQUAL(msg.headers.size(), 1);
+ BOOST_CHECK_EQUAL(msg.headers["key"], "value");
+
+ BOOST_CHECK_EQUAL(msg.body, "WORLD");
+}
+
+
BOOST_AUTO_TEST_CASE(escape1)
{
// special characters in header
--- /dev/null
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE snapper
+
+#include <boost/test/unit_test.hpp>
+
+#include "../Stomp.h"
+
+
+using namespace std;
+using namespace Stomp;
+
+
+BOOST_AUTO_TEST_CASE(cr)
+{
+ BOOST_CHECK_EQUAL(Stomp::strip_cr("hello"), "hello");
+ BOOST_CHECK_EQUAL(Stomp::strip_cr("hello\r"), "hello");
+ BOOST_CHECK_EQUAL(Stomp::strip_cr("hello\r\n"), "hello\r\n");
+}