- Adding default pretty-printer for Task

- Adding equivalency check for Task
- Adding test to ensure serialization / deserialization is reproducible.
This commit is contained in:
Ian Roddis
2021-08-11 10:16:38 -03:00
parent a152588368
commit 4d519cc596
4 changed files with 32 additions and 4 deletions

View File

@@ -55,8 +55,20 @@ TEST_CASE("Task Serialization", "[serialize_tasks]") {
SECTION("Build with no expansion") {
std::string testTasks = R"([{"name": "A", "command": ["/bin/echo", "A"], "children": ["C"]}, {"name": "B", "command": ["/bin/echo", "B"], "children": ["C"]},{"name": "C", "command": ["/bin/echo", "C"]}])";
auto tasks = daggy::tasksFromJSON(testTasks);
std::unordered_map<std::string, size_t> taskMap;
for (size_t i = 0; i < tasks.size(); ++i) {
taskMap[tasks[i].name] = i;
}
auto genJSON = daggy::tasksToJSON(tasks);
std::cout << genJSON << std::endl;
REQUIRE_NOTHROW(daggy::tasksFromJSON(genJSON));
auto regenTasks = daggy::tasksFromJSON(genJSON);
REQUIRE(regenTasks.size() == tasks.size());
for (const auto &task : regenTasks) {
const auto &other = tasks[taskMap[task.name]];
REQUIRE(task == other);
}
}
}