Changeset View
Changeset View
Standalone View
Standalone View
src/test/torcontrol_tests.cpp
Show All 13 Lines | |||||
std::pair<std::string, std::string> SplitTorReplyLine(const std::string &s); | std::pair<std::string, std::string> SplitTorReplyLine(const std::string &s); | ||||
std::map<std::string, std::string> ParseTorReplyMapping(const std::string &s); | std::map<std::string, std::string> ParseTorReplyMapping(const std::string &s); | ||||
BOOST_FIXTURE_TEST_SUITE(torcontrol_tests, BasicTestingSetup) | BOOST_FIXTURE_TEST_SUITE(torcontrol_tests, BasicTestingSetup) | ||||
static void CheckSplitTorReplyLine(std::string input, std::string command, | static void CheckSplitTorReplyLine(std::string input, std::string command, | ||||
std::string args) { | std::string args) { | ||||
BOOST_TEST_MESSAGE(std::string("CheckSplitTorReplyLine(") + input + ")"); | |||||
auto ret = SplitTorReplyLine(input); | auto ret = SplitTorReplyLine(input); | ||||
BOOST_CHECK_EQUAL(ret.first, command); | BOOST_CHECK_EQUAL(ret.first, command); | ||||
BOOST_CHECK_EQUAL(ret.second, args); | BOOST_CHECK_EQUAL(ret.second, args); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(util_SplitTorReplyLine) { | BOOST_AUTO_TEST_CASE(util_SplitTorReplyLine) { | ||||
// Data we should receive during normal usage | // Data we should receive during normal usage | ||||
CheckSplitTorReplyLine("PROTOCOLINFO PIVERSION", "PROTOCOLINFO", | CheckSplitTorReplyLine("PROTOCOLINFO PIVERSION", "PROTOCOLINFO", | ||||
Show All 21 Lines | BOOST_AUTO_TEST_CASE(util_SplitTorReplyLine) { | ||||
CheckSplitTorReplyLine("COMMAND ARGS", "COMMAND", " ARGS"); | CheckSplitTorReplyLine("COMMAND ARGS", "COMMAND", " ARGS"); | ||||
CheckSplitTorReplyLine("COMMAND EVEN+more ARGS", "COMMAND", | CheckSplitTorReplyLine("COMMAND EVEN+more ARGS", "COMMAND", | ||||
" EVEN+more ARGS"); | " EVEN+more ARGS"); | ||||
} | } | ||||
static void | static void | ||||
CheckParseTorReplyMapping(std::string input, | CheckParseTorReplyMapping(std::string input, | ||||
std::map<std::string, std::string> expected) { | std::map<std::string, std::string> expected) { | ||||
BOOST_TEST_MESSAGE(std::string("CheckParseTorReplyMapping(") + input + ")"); | |||||
auto ret = ParseTorReplyMapping(input); | auto ret = ParseTorReplyMapping(input); | ||||
BOOST_CHECK_EQUAL(ret.size(), expected.size()); | BOOST_CHECK_EQUAL(ret.size(), expected.size()); | ||||
auto r_it = ret.begin(); | auto r_it = ret.begin(); | ||||
auto e_it = expected.begin(); | auto e_it = expected.begin(); | ||||
while (r_it != ret.end() && e_it != expected.end()) { | while (r_it != ret.end() && e_it != expected.end()) { | ||||
BOOST_CHECK_EQUAL(r_it->first, e_it->first); | BOOST_CHECK_EQUAL(r_it->first, e_it->first); | ||||
BOOST_CHECK_EQUAL(r_it->second, e_it->second); | BOOST_CHECK_EQUAL(r_it->second, e_it->second); | ||||
r_it++; | r_it++; | ||||
▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(util_ParseTorReplyMapping) { | ||||
CheckParseTorReplyMapping("OneOctal=\"OneEnd\\1\" TwoOctal=\"TwoEnd\\11\"", | CheckParseTorReplyMapping("OneOctal=\"OneEnd\\1\" TwoOctal=\"TwoEnd\\11\"", | ||||
{ | { | ||||
{"OneOctal", "OneEnd\1"}, | {"OneOctal", "OneEnd\1"}, | ||||
{"TwoOctal", "TwoEnd\11"}, | {"TwoOctal", "TwoEnd\11"}, | ||||
}); | }); | ||||
// Special handling for null case | // Special handling for null case | ||||
// (needed because string comparison reads the null as end-of-string) | // (needed because string comparison reads the null as end-of-string) | ||||
BOOST_TEST_MESSAGE(std::string("CheckParseTorReplyMapping(Null=\"\\0\")")); | |||||
auto ret = ParseTorReplyMapping("Null=\"\\0\""); | auto ret = ParseTorReplyMapping("Null=\"\\0\""); | ||||
BOOST_CHECK_EQUAL(ret.size(), 1U); | BOOST_CHECK_EQUAL(ret.size(), 1U); | ||||
auto r_it = ret.begin(); | auto r_it = ret.begin(); | ||||
BOOST_CHECK_EQUAL(r_it->first, "Null"); | BOOST_CHECK_EQUAL(r_it->first, "Null"); | ||||
BOOST_CHECK_EQUAL(r_it->second.size(), 1U); | BOOST_CHECK_EQUAL(r_it->second.size(), 1U); | ||||
BOOST_CHECK_EQUAL(r_it->second[0], '\0'); | BOOST_CHECK_EQUAL(r_it->second[0], '\0'); | ||||
// A more complex valid grammar. PROTOCOLINFO accepts a VersionLine that | // A more complex valid grammar. PROTOCOLINFO accepts a VersionLine that | ||||
Show All 23 Lines |