Use raw literals for multi-line expected results
Prettyfies the test cases a bit, though there is a utiliity function needed now.
This commit is contained in:
parent
1c1c789084
commit
cd0c225a50
@ -35,6 +35,41 @@ using nlohmann::json;
|
|||||||
using nlohmann::fancy_dump;
|
using nlohmann::fancy_dump;
|
||||||
using nlohmann::fancy_serializer_style;
|
using nlohmann::fancy_serializer_style;
|
||||||
|
|
||||||
|
// Chops off the first line (if empty, but if it *isn't* empty you're
|
||||||
|
// probably using this wrong), measures the leading indent on the
|
||||||
|
// *next* line, then chops that amount off of all subsequent lines.
|
||||||
|
std::string dedent(const char* str)
|
||||||
|
{
|
||||||
|
std::stringstream out;
|
||||||
|
std::stringstream ss(str);
|
||||||
|
std::string line;
|
||||||
|
bool first = true;
|
||||||
|
int indent = -1;
|
||||||
|
|
||||||
|
while (getline(ss, line))
|
||||||
|
{
|
||||||
|
if (first && line.empty())
|
||||||
|
{
|
||||||
|
first = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (indent == -1)
|
||||||
|
{
|
||||||
|
indent = line.find_first_not_of(' ');
|
||||||
|
assert(indent != std::string::npos);
|
||||||
|
}
|
||||||
|
out << line.c_str() + indent << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string ans = out.str();
|
||||||
|
if (ans[ans.size() - 1] == '\n' and str[strlen(str) - 1] != '\n')
|
||||||
|
{
|
||||||
|
ans.resize(ans.size() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ans;
|
||||||
|
}
|
||||||
|
|
||||||
std::string fancy_to_string(json j, fancy_serializer_style style = fancy_serializer_style())
|
std::string fancy_to_string(json j, fancy_serializer_style style = fancy_serializer_style())
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -154,17 +189,17 @@ TEST_CASE("serialization")
|
|||||||
style.indent_step = 4;
|
style.indent_step = 4;
|
||||||
auto str = fancy_to_string({"foo", 1, 2, 3, false, {{"one", 1}}}, style);
|
auto str = fancy_to_string({"foo", 1, 2, 3, false, {{"one", 1}}}, style);
|
||||||
CHECK(str ==
|
CHECK(str ==
|
||||||
"[\n"
|
dedent(R"(
|
||||||
" \"foo\",\n"
|
[
|
||||||
" 1,\n"
|
"foo",
|
||||||
" 2,\n"
|
1,
|
||||||
" 3,\n"
|
2,
|
||||||
" false,\n"
|
3,
|
||||||
" {\n"
|
false,
|
||||||
" \"one\": 1\n"
|
{
|
||||||
" }\n"
|
"one": 1
|
||||||
"]"
|
}
|
||||||
);
|
])"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("given fill")
|
SECTION("given fill")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user