diff --git a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc index 5857b468..7bd8ef3d 100644 --- a/src/sequence_diagram/generators/json/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/json/sequence_diagram_generator.cc @@ -95,14 +95,42 @@ void generator::generate_call(const message &m, nlohmann::json &parent) const msg["name"] = message; msg["type"] = "message"; - msg["from"]["name"] = from.value().full_name(false); - msg["from"]["id"] = std::to_string(from.value().id()); + msg["from"]["activity_name"] = from.value().full_name(false); + msg["from"]["activity_id"] = std::to_string(from.value().id()); msg["to"]["activity_id"] = std::to_string(to.value().id()); msg["to"]["activity_name"] = to.value().full_name(false); + if (from.value().type_name() == "method") { + const auto &class_participant = + m_model.get_participant(from.value().id()).value(); + + msg["from"]["participant_id"] = + std::to_string(class_participant.class_id()); + msg["from"]["participant_name"] = + m_model.get_participant(class_participant.class_id()) + .value() + .full_name(false); + } + else if (from.value().type_name() == "function" || + from.value().type_name() == "function_template") { + if (m_config.combine_free_functions_into_file_participants()) { + const auto &file_participant = + m_model.get_participant(from.value().id()) + .value(); + msg["from"]["participant_id"] = + std::to_string(common::to_id(file_participant.file())); + msg["from"]["participant_name"] = file_participant.file_relative(); + } + else { + msg["from"]["participant_id"] = std::to_string(from.value().id()); + msg["from"]["participant_name"] = from.value().full_name(false); + } + } + if (to.value().type_name() == "method") { const auto &class_participant = m_model.get_participant(to.value().id()).value(); + msg["to"]["participant_id"] = std::to_string(class_participant.class_id()); msg["to"]["participant_name"] = @@ -110,13 +138,20 @@ void generator::generate_call(const message &m, nlohmann::json &parent) const .value() .full_name(false); } - else if (to.value().type_name() == "function" && - m_config.combine_free_functions_into_file_participants()) { - const auto &file_participant = - m_model.get_participant(to.value().id()).value(); - msg["to"]["participant_id"] = - std::to_string(common::to_id(file_participant.file())); - msg["to"]["participant_name"] = file_participant.file_relative(); + else if (to.value().type_name() == "function" || + to.value().type_name() == "function_template") { + if (m_config.combine_free_functions_into_file_participants()) { + const auto &file_participant = + m_model.get_participant(to.value().id()) + .value(); + msg["to"]["participant_id"] = + std::to_string(common::to_id(file_participant.file())); + msg["to"]["participant_name"] = file_participant.file_relative(); + } + else { + msg["to"]["participant_id"] = std::to_string(to.value().id()); + msg["to"]["participant_name"] = to.value().full_name(false); + } } msg["source_location"] = diff --git a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc index 87a20369..c2d226b6 100644 --- a/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc +++ b/src/sequence_diagram/generators/plantuml/sequence_diagram_generator.cc @@ -69,8 +69,10 @@ void generator::generate_call(const message &m, std::ostream &ostr) const render_mode = model::function::message_render_mode::no_arguments; if (to.value().type_name() == "method") { - message = dynamic_cast(to.value()) - .message_name(render_mode); + const auto &f = dynamic_cast(to.value()); + const std::string_view style = f.is_static() ? "__" : ""; + message = + fmt::format("{}{}{}", style, f.message_name(render_mode), style); } else if (m_config.combine_free_functions_into_file_participants()) { if (to.value().type_name() == "function") { diff --git a/src/sequence_diagram/model/participant.cc b/src/sequence_diagram/model/participant.cc index 5de94d30..1db4ac6d 100644 --- a/src/sequence_diagram/model/participant.cc +++ b/src/sequence_diagram/model/participant.cc @@ -185,7 +185,7 @@ std::string method::message_name(message_render_mode mode) const { constexpr auto kAbbreviatedMethodArgumentsLength{15}; - const std::string style = is_static() ? "__" : ""; + const std::string style = ""; if (mode == message_render_mode::no_arguments) { return fmt::format("{}{}(){}{}", style, method_name(), diff --git a/tests/t20001/test_case.h b/tests/t20001/test_case.h index 19d1694d..fbf91e1f 100644 --- a/tests/t20001/test_case.h +++ b/tests/t20001/test_case.h @@ -31,36 +31,43 @@ TEST_CASE("t20001", "[test-case][sequence]") REQUIRE(model->should_include("clanguml::t20001::A")); REQUIRE(!model->should_include("clanguml::t20001::detail::C")); REQUIRE(!model->should_include("std::vector")); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "add3(int,int,int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), "add(int,int)")); + REQUIRE_THAT(puml, !HasCall(_A("A"), _A("detail::C"), "add(int,int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), "__log_result(int)__")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "__log_result(int)__")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "add3(int,int,int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), "add(int,int)")); - REQUIRE_THAT(puml, !HasCall(_A("A"), _A("detail::C"), "add(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), "__log_result(int)__")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "__log_result(int)__")); + REQUIRE_THAT(puml, HasComment("t20001 test diagram of type sequence")); - REQUIRE_THAT(puml, HasComment("t20001 test diagram of type sequence")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + { + auto j = generate_sequence_json(diagram, *model); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + using namespace json; - auto j = generate_sequence_json(diagram, *model); + REQUIRE(IsFunctionParticipant(j, "tmain()")); + REQUIRE(IsClassParticipant(j, "A")); + REQUIRE(IsClassParticipant(j, "B")); - REQUIRE(j["participants"][0]["name"] == "clanguml::t20001::tmain()"); - REQUIRE(j["participants"][1]["name"] == "clanguml::t20001::A"); - REQUIRE(j["participants"][2]["name"] == "clanguml::t20001::B"); + std::vector messages = { + FindMessage(j, "tmain()", "A", "add(int,int)"), + FindMessage(j, "tmain()", "B", "wrap_add3(int,int,int)"), + FindMessage(j, "B", "A", "add3(int,int,int)"), + FindMessage(j, "A", "A", "add(int,int)"), + FindMessage(j, "A", "A", "log_result(int)"), + FindMessage(j, "B", "A", "log_result(int)")}; - auto &messages = j["sequences"][0]["messages"]; - REQUIRE(messages[0]["name"] == "add(int,int)"); - REQUIRE(messages[1]["name"] == "wrap_add3(int,int,int)"); - REQUIRE(messages[2]["name"] == "add3(int,int,int)"); - REQUIRE(messages[3]["name"] == "add(int,int)"); - REQUIRE(messages[4]["name"] == "__log_result(int)__"); - REQUIRE(messages[5]["name"] == "__log_result(int)__"); + REQUIRE(std::is_sorted(messages.begin(), messages.end())); - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t20002/test_case.h b/tests/t20002/test_case.h index 1008c217..092e514e 100644 --- a/tests/t20002/test_case.h +++ b/tests/t20002/test_case.h @@ -28,21 +28,37 @@ TEST_CASE("t20002", "[test-case][sequence]") REQUIRE(model->name() == "t20002_sequence"); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, HasCall(_A("m1()"), _A("m2()"), "")); - REQUIRE_THAT(puml, HasCall(_A("m2()"), _A("m3()"), "")); - REQUIRE_THAT(puml, HasCall(_A("m3()"), _A("m4()"), "")); + REQUIRE_THAT(puml, HasCall(_A("m1()"), _A("m2()"), "")); + REQUIRE_THAT(puml, HasCall(_A("m2()"), _A("m3()"), "")); + REQUIRE_THAT(puml, HasCall(_A("m3()"), _A("m4()"), "")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - auto j = generate_sequence_json(diagram, *model); + { + auto j = generate_sequence_json(diagram, *model); - // REQUIRE(j == nlohmann::json::parse(expected_json)); + using namespace json; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + REQUIRE(IsFunctionParticipant(j, "m1()")); + REQUIRE(IsFunctionParticipant(j, "m2()")); + REQUIRE(IsFunctionParticipant(j, "m3()")); + REQUIRE(IsFunctionParticipant(j, "m4()")); + + std::vector messages = {FindMessage(j, "m1()", "m2()", ""), + FindMessage(j, "m2()", "m3()", ""), + FindMessage(j, "m3()", "m4()", "")}; + + REQUIRE(std::is_sorted(messages.begin(), messages.end())); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t20003/test_case.h b/tests/t20003/test_case.h index cbd0b78e..76fe7b52 100644 --- a/tests/t20003/test_case.h +++ b/tests/t20003/test_case.h @@ -27,22 +27,32 @@ TEST_CASE("t20003", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20003_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, HasCall(_A("m1(T)"), _A("m2(T)"), "")); + REQUIRE_THAT(puml, HasCall(_A("m2(T)"), _A("m3(T)"), "")); + REQUIRE_THAT(puml, HasCall(_A("m3(T)"), _A("m4(T)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m1(T)"), _A("m2(T)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m2(T)"), _A("m3(T)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m3(T)"), _A("m4(T)"), "")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); + std::vector messages = {FindMessage(j, "m1(T)", "m2(T)", ""), + FindMessage(j, "m2(T)", "m3(T)", ""), + FindMessage(j, "m3(T)", "m4(T)", "")}; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + REQUIRE(std::is_sorted(messages.begin(), messages.end())); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t20004/test_case.h b/tests/t20004/test_case.h index 14ff035a..10a09a65 100644 --- a/tests/t20004/test_case.h +++ b/tests/t20004/test_case.h @@ -27,40 +27,59 @@ TEST_CASE("t20004", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20004_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, HasCall(_A("main()"), _A("m1(float)"), "")); + REQUIRE_THAT( + puml, !HasCall(_A("m1(float)"), _A("m1(float)"), "")); + REQUIRE_THAT( + puml, !HasCall(_A("m1(float)"), _A("m1(float)"), "")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, HasCall(_A("main()"), _A("m1(float)"), "")); - REQUIRE_THAT( - puml, !HasCall(_A("m1(float)"), _A("m1(float)"), "")); - REQUIRE_THAT( - puml, !HasCall(_A("m1(float)"), _A("m1(float)"), "")); + REQUIRE_THAT(puml, + HasCall(_A("main()"), _A("m1(unsigned long)"), "")); + REQUIRE_THAT(puml, + HasCall(_A("m1(unsigned long)"), + _A("m4(unsigned long)"), "")); - REQUIRE_THAT(puml, - HasCall(_A("main()"), _A("m1(unsigned long)"), "")); - REQUIRE_THAT(puml, - HasCall(_A("m1(unsigned long)"), - _A("m4(unsigned long)"), "")); + REQUIRE_THAT(puml, + HasCall(_A("main()"), _A("m1(std::string)"), "")); + REQUIRE_THAT(puml, + HasCall(_A("m1(std::string)"), + _A("m2(std::string)"), "")); - REQUIRE_THAT( - puml, HasCall(_A("main()"), _A("m1(std::string)"), "")); - REQUIRE_THAT(puml, - HasCall(_A("m1(std::string)"), - _A("m2(std::string)"), "")); + REQUIRE_THAT(puml, HasCall(_A("main()"), _A("m1(int)"), "")); + REQUIRE_THAT(puml, HasCall(_A("m1(int)"), _A("m2(int)"), "")); + REQUIRE_THAT(puml, HasCall(_A("m2(int)"), _A("m3(int)"), "")); + REQUIRE_THAT(puml, HasCall(_A("m3(int)"), _A("m4(int)"), "")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, HasCall(_A("main()"), _A("m1(int)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m1(int)"), _A("m2(int)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m2(int)"), _A("m3(int)"), "")); - REQUIRE_THAT(puml, HasCall(_A("m3(int)"), _A("m4(int)"), "")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); + std::vector messages = { + FindMessage(j, "main()", "m1(float)", ""), + FindMessage(j, "main()", "m1(unsigned long)", ""), + FindMessage(j, "m1(unsigned long)", + "m4(unsigned long)", ""), + FindMessage(j, "main()", "m1(std::string)", ""), + FindMessage(j, "m1(std::string)", + "m2(std::string)", ""), + FindMessage(j, "main()", "m1(int)", ""), + FindMessage(j, "m1(int)", "m2(int)", ""), + FindMessage(j, "m2(int)", "m3(int)", ""), + FindMessage(j, "m3(int)", "m4(int)", "")}; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + REQUIRE(std::is_sorted(messages.begin(), messages.end())); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20005/test_case.h b/tests/t20005/test_case.h index 3517260b..5be8dd0e 100644 --- a/tests/t20005/test_case.h +++ b/tests/t20005/test_case.h @@ -28,22 +28,28 @@ TEST_CASE("t20005", "[test-case][sequence]") REQUIRE(model->name() == "t20005_sequence"); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - // Check if all calls exist - REQUIRE_THAT(puml, HasEntrypoint(_A("C"), "c(T)")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b(T)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(T)")); - REQUIRE_THAT(puml, HasExitpoint(_A("C"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + // Check if all calls exist + REQUIRE_THAT(puml, HasEntrypoint(_A("C"), "c(T)")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b(T)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(T)")); + REQUIRE_THAT(puml, HasExitpoint(_A("C"))); - auto j = generate_sequence_json(diagram, *model); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - // REQUIRE(j == nlohmann::json::parse(expected_json)); + { + auto j = generate_sequence_json(diagram, *model); - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + using namespace json; + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20006/test_case.h b/tests/t20006/test_case.h index 534af040..025ab90e 100644 --- a/tests/t20006/test_case.h +++ b/tests/t20006/test_case.h @@ -27,53 +27,62 @@ TEST_CASE("t20006", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20006_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("B"), "b(std::string)")); + REQUIRE_THAT(puml, + HasCall( + _A("B"), _A("A"), "a2(std::string)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("B"), "b(std::string)")); - REQUIRE_THAT(puml, - HasCall(_A("B"), _A("A"), "a2(std::string)")); + REQUIRE_THAT( + puml, HasCall(_A("tmain()"), _A("BB"), "bb1(int,int)")); + REQUIRE_THAT( + puml, HasCall(_A("BB"), _A("AA"), "aa1(int)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("BB"), "bb1(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("BB"), _A("AA"), "aa1(int)")); + REQUIRE_THAT( + puml, HasCall(_A("tmain()"), _A("BB"), "bb2(int,int)")); + REQUIRE_THAT( + puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("BB"), "bb2(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("BB"), + "bb1(int,std::string)")); + REQUIRE_THAT(puml, + HasCall(_A("BB"), _A("AA"), "aa2(int)")); - REQUIRE_THAT(puml, - HasCall( - _A("tmain()"), _A("BB"), "bb1(int,std::string)")); - REQUIRE_THAT( - puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("BB"), + "bb2(int,std::string)")); + REQUIRE_THAT(puml, + HasCall(_A("BB"), _A("AA"), "aa1(int)")); - REQUIRE_THAT(puml, - HasCall( - _A("tmain()"), _A("BB"), "bb2(int,std::string)")); - REQUIRE_THAT( - puml, HasCall(_A("BB"), _A("AA"), "aa1(int)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("BB"), "bb1(int,float)")); + REQUIRE_THAT(puml, + HasCall( + _A("BB"), _A("BB"), "bb2(int,float)")); + REQUIRE_THAT( + puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("BB"), "bb1(int,float)")); - REQUIRE_THAT(puml, - HasCall(_A("BB"), _A("BB"), "bb2(int,float)")); - REQUIRE_THAT(puml, HasCall(_A("BB"), _A("AA"), "aa2(int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20007/test_case.h b/tests/t20007/test_case.h index 8a3d9fc3..8aab5141 100644 --- a/tests/t20007/test_case.h +++ b/tests/t20007/test_case.h @@ -27,28 +27,33 @@ TEST_CASE("t20007", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20007_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("Adder"), "add(int &&,int &&)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("Adder"), + "add(int &&,float &&,double &&)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), + _A("Adder"), + "add(std::string &&,std::string &&,std::string &&)")); - // Check if all calls exist - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), _A("Adder"), "add(int &&,int &&)")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), _A("Adder"), - "add(int &&,float &&,double &&)")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), _A("Adder"), - "add(std::string &&,std::string &&,std::string &&)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20008/test_case.h b/tests/t20008/test_case.h index 2ee3fc37..3947bb8d 100644 --- a/tests/t20008/test_case.h +++ b/tests/t20008/test_case.h @@ -27,35 +27,41 @@ TEST_CASE("t20008", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20008_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); + // REQUIRE_THAT(puml, !HasCall(_A("B"), _A("A"), + // "a2(int)")); REQUIRE_THAT(puml, !HasCall(_A("B"), + // _A("A"), "a3(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); - // REQUIRE_THAT(puml, !HasCall(_A("B"), _A("A"), "a2(int)")); - // REQUIRE_THAT(puml, !HasCall(_A("B"), _A("A"), "a3(int)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("B"), "b(const char *)")); + REQUIRE_THAT(puml, + HasCall(_A("B"), _A("A"), + "a2(const char *)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("B"), "b(const char *)")); - REQUIRE_THAT(puml, - HasCall( - _A("B"), _A("A"), "a2(const char *)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("B"), "b(std::string)")); + REQUIRE_THAT(puml, + HasCall( + _A("B"), _A("A"), "a3(std::string)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("B"), "b(std::string)")); - REQUIRE_THAT(puml, - HasCall(_A("B"), _A("A"), "a3(std::string)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20009/test_case.h b/tests/t20009/test_case.h index cc284870..6a9ee4b8 100644 --- a/tests/t20009/test_case.h +++ b/tests/t20009/test_case.h @@ -27,29 +27,34 @@ TEST_CASE("t20009", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20009_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("B"), "b(std::string)")); + REQUIRE_THAT(puml, + HasCall( + _A("B"), _A("A"), "a(std::string)")); - // Check if all calls exist - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("B"), "b(std::string)")); - REQUIRE_THAT(puml, - HasCall(_A("B"), _A("A"), "a(std::string)")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(int)")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(float)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(float)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b(float)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a(float)")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20010/test_case.h b/tests/t20010/test_case.h index 6e01b636..96c6d6e7 100644 --- a/tests/t20010/test_case.h +++ b/tests/t20010/test_case.h @@ -27,31 +27,35 @@ TEST_CASE("t20010", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20010_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b3()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b3()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b4()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a4()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b4()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a4()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20011/test_case.h b/tests/t20011/test_case.h index dd4f623e..917fd6f1 100644 --- a/tests/t20011/test_case.h +++ b/tests/t20011/test_case.h @@ -27,27 +27,41 @@ TEST_CASE("t20011", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20011_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a(int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a(int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a(int)")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "b(int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "c(int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "d(int)")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "c(int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "d(int)")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "b(int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); + REQUIRE(IsFunctionParticipant(j, "tmain()")); + REQUIRE(IsClassParticipant(j, "A")); - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + std::vector messages = {FindMessage(j, "tmain()", "A", "a(int)"), + FindMessage(j, "A", "A", "a(int)"), + FindMessage(j, "tmain()", "A", "b(int)"), + FindMessage(j, "A", "A", "c(int)")}; + + REQUIRE(std::is_sorted(messages.begin(), messages.end())); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20012/test_case.h b/tests/t20012/test_case.h index f76ba804..a310ee52 100644 --- a/tests/t20012/test_case.h +++ b/tests/t20012/test_case.h @@ -27,60 +27,64 @@ TEST_CASE("t20012", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20012_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), + _A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), + "operator()()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), + _A("A"), "a()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "aa()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "aaa()")); - // Check if all calls exist - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), - _A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), - "operator()()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), - _A("A"), "a()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "aa()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "aaa()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), + _A("B"), "b()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "bb()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "bbb()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), - _A("B"), "b()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "bb()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "bbb()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)"), + _A("C"), "c()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "cc()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "ccc()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)"), + _A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), + "operator()()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)"), - _A("C"), "c()")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "cc()")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "ccc()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:79:20)"), - _A("tmain()::(lambda ../../tests/t20012/t20012.cc:66:20)"), - "operator()()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "ccc()")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "ccc()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), + _A("R"), "r()")); + REQUIRE_THAT(puml, + HasCall(_A("R"), + _A("tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)"), + "operator()()")); + REQUIRE_THAT(puml, + HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)"), + _A("C"), "c()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), - _A("R"), "r()")); - REQUIRE_THAT(puml, - HasCall(_A("R"), - _A("tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)"), - "operator()()")); - REQUIRE_THAT(puml, - HasCall(_A("tmain()::(lambda ../../tests/t20012/t20012.cc:85:9)"), - _A("C"), "c()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("D"), "add5(int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("D"), "add5(int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20013/test_case.h b/tests/t20013/test_case.h index 5b92f91a..10bab9f9 100644 --- a/tests/t20013/test_case.h +++ b/tests/t20013/test_case.h @@ -27,29 +27,35 @@ TEST_CASE("t20013", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20013_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT( + puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); + REQUIRE_THAT( + puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(double)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(double)")); - REQUIRE_THAT(puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(double)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(double)")); + REQUIRE_THAT(puml, + HasCall(_A("tmain(int,char **)"), _A("B"), "b(const char *)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3(const char *)")); - REQUIRE_THAT( - puml, HasCall(_A("tmain(int,char **)"), _A("B"), "b(const char *)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a3(const char *)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20014/test_case.h b/tests/t20014/test_case.h index 85c13ba8..a7d615c2 100644 --- a/tests/t20014/test_case.h +++ b/tests/t20014/test_case.h @@ -27,28 +27,33 @@ TEST_CASE("t20014", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20014_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1(int,int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int,int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int,int)")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2(int,int)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(int,int)")); + REQUIRE_THAT( + puml, HasCall(_A("tmain()"), _A("C"), "c1(int,int)")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b1(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("C"), "c1(int,int)")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("B"), "b1(int,int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20015/test_case.h b/tests/t20015/test_case.h index 1bc01504..4bf33db1 100644 --- a/tests/t20015/test_case.h +++ b/tests/t20015/test_case.h @@ -27,30 +27,34 @@ TEST_CASE("t20015", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20015_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, + HasCall(_A("tmain()"), _A("B"), + "setup_a(std::shared_ptr &)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_x(int)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_y(int)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_z(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, - HasCall( - _A("tmain()"), _A("B"), "setup_a(std::shared_ptr &)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_x(int)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_y(int)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("detail::A"), "set_z(int)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_x(int)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_y(int)")); + REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_z(int)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_x(int)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_y(int)")); - REQUIRE_THAT(puml, !HasCall(_A("B"), _A("B"), "set_z(int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20016/test_case.h b/tests/t20016/test_case.h index 03967382..ce77d5f7 100644 --- a/tests/t20016/test_case.h +++ b/tests/t20016/test_case.h @@ -27,25 +27,29 @@ TEST_CASE("t20016", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20016_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1(long)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1(long)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a1(int)")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2(long)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(const long &)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2(long)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("A"), "a2(const long &)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20017/test_case.h b/tests/t20017/test_case.h index 101741ed..8496d5d5 100644 --- a/tests/t20017/test_case.h +++ b/tests/t20017/test_case.h @@ -27,32 +27,37 @@ TEST_CASE("t20017", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20017_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasEntrypoint(_A("t20017.cc"), "tmain()")); + REQUIRE_THAT(puml, + HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a1(int,int)")); + REQUIRE_THAT(puml, + HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a2(int,int)")); + REQUIRE_THAT(puml, + HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a3(int,int)")); + REQUIRE_THAT(puml, + HasCall(_A("t20017.cc"), _A("include/t20017_b.h"), "b1(int,int)")); + REQUIRE_THAT(puml, + HasCall( + _A("t20017.cc"), _A("include/t20017_b.h"), "b2(int,int)")); + REQUIRE_THAT(puml, HasExitpoint(_A("t20017.cc"))); - // Check if all calls exist - REQUIRE_THAT(puml, HasEntrypoint(_A("t20017.cc"), "tmain()")); - REQUIRE_THAT(puml, - HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a1(int,int)")); - REQUIRE_THAT(puml, - HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a2(int,int)")); - REQUIRE_THAT(puml, - HasCall(_A("t20017.cc"), _A("include/t20017_a.h"), "a3(int,int)")); - REQUIRE_THAT(puml, - HasCall(_A("t20017.cc"), _A("include/t20017_b.h"), "b1(int,int)")); - REQUIRE_THAT(puml, - HasCall(_A("t20017.cc"), _A("include/t20017_b.h"), "b2(int,int)")); - REQUIRE_THAT(puml, HasExitpoint(_A("t20017.cc"))); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20018/test_case.h b/tests/t20018/test_case.h index 82771236..dea3b7b4 100644 --- a/tests/t20018/test_case.h +++ b/tests/t20018/test_case.h @@ -28,34 +28,40 @@ TEST_CASE("t20018", "[test-case][sequence]") REQUIRE(model->name() == "t20018_sequence"); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - // Check if all calls exist - REQUIRE_THAT(puml, - HasCall(_A("tmain()"), _A("Answer,120>"), "__print()__")); - REQUIRE_THAT(puml, - HasCall(_A("Answer,120>"), _A("Factorial<5>"), - "__print(int)__")); - REQUIRE_THAT(puml, - HasCall(_A("Factorial<5>"), _A("Factorial<4>"), "__print(int)__")); - REQUIRE_THAT(puml, - HasCall(_A("Factorial<4>"), _A("Factorial<3>"), "__print(int)__")); - REQUIRE_THAT(puml, - HasCall(_A("Factorial<3>"), _A("Factorial<2>"), "__print(int)__")); - REQUIRE_THAT(puml, - HasCall(_A("Factorial<2>"), _A("Factorial<1>"), "__print(int)__")); - REQUIRE_THAT(puml, - HasCall(_A("Factorial<1>"), _A("Factorial<0>"), "__print(int)__")); + // Check if all calls exist + REQUIRE_THAT(puml, + HasCall( + _A("tmain()"), _A("Answer,120>"), "__print()__")); + REQUIRE_THAT(puml, + HasCall(_A("Answer,120>"), _A("Factorial<5>"), + "__print(int)__")); + REQUIRE_THAT(puml, + HasCall(_A("Factorial<5>"), _A("Factorial<4>"), "__print(int)__")); + REQUIRE_THAT(puml, + HasCall(_A("Factorial<4>"), _A("Factorial<3>"), "__print(int)__")); + REQUIRE_THAT(puml, + HasCall(_A("Factorial<3>"), _A("Factorial<2>"), "__print(int)__")); + REQUIRE_THAT(puml, + HasCall(_A("Factorial<2>"), _A("Factorial<1>"), "__print(int)__")); + REQUIRE_THAT(puml, + HasCall(_A("Factorial<1>"), _A("Factorial<0>"), "__print(int)__")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - auto j = generate_sequence_json(diagram, *model); + { + auto j = generate_sequence_json(diagram, *model); - // REQUIRE(j == nlohmann::json::parse(expected_json)); + using namespace json; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20019/test_case.h b/tests/t20019/test_case.h index 7276929f..ca664115 100644 --- a/tests/t20019/test_case.h +++ b/tests/t20019/test_case.h @@ -28,23 +28,28 @@ TEST_CASE("t20019", "[test-case][sequence]") REQUIRE(model->name() == "t20019_sequence"); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("Base"), "name()")); - REQUIRE_THAT(puml, HasCall(_A("Base"), _A("D1"), "impl()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("Base"), "name()")); - REQUIRE_THAT(puml, HasCall(_A("Base"), _A("D2"), "impl()")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("Base"), "name()")); + REQUIRE_THAT(puml, HasCall(_A("Base"), _A("D1"), "impl()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("Base"), "name()")); + REQUIRE_THAT(puml, HasCall(_A("Base"), _A("D2"), "impl()")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - auto j = generate_sequence_json(diagram, *model); + { + auto j = generate_sequence_json(diagram, *model); - // REQUIRE(j == nlohmann::json::parse(expected_json)); + using namespace json; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20020/test_case.h b/tests/t20020/test_case.h index 0c995955..1b59a799 100644 --- a/tests/t20020/test_case.h +++ b/tests/t20020/test_case.h @@ -27,34 +27,38 @@ TEST_CASE("t20020", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20020_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a1()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a2()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a3()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a1()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a2()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a3()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "log()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b1()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "log()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("C"), "c1()")); + REQUIRE_THAT(puml, HasCallInControlCondition(_A("C"), _A("C"), "c2()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c3(int)")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("C"), "c1()")); - REQUIRE_THAT(puml, HasCallInControlCondition(_A("C"), _A("C"), "c2()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c3(int)")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20021/test_case.h b/tests/t20021/test_case.h index 5e68aea7..2df05841 100644 --- a/tests/t20021/test_case.h +++ b/tests/t20021/test_case.h @@ -27,41 +27,46 @@ TEST_CASE("t20021", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20021_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a1()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a2()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a3()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a1()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("A"), "a2()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a3()")); + REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("B"), "b1()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); - REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("B"), "b1()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "b2()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c1()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c2()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c1()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c2()")); + // TODO: Why is this not working? + // REQUIRE_THAT( + // puml, HasCallInControlCondition(_A("tmain()"), _A("C"), + // "c3()")); + REQUIRE_THAT( + puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c4()")); + REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "c5()")); + REQUIRE_THAT(puml, + HasCallInControlCondition(_A("tmain()"), _A("C"), "contents()")); - // TODO: Why is this not working? - // REQUIRE_THAT( - // puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c3()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "c4()")); - REQUIRE_THAT(puml, HasCall(_A("C"), _A("C"), "c5()")); - REQUIRE_THAT( - puml, HasCallInControlCondition(_A("tmain()"), _A("C"), "contents()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20022/test_case.h b/tests/t20022/test_case.h index 56c81b26..e4fda9e7 100644 --- a/tests/t20022/test_case.h +++ b/tests/t20022/test_case.h @@ -27,22 +27,26 @@ TEST_CASE("t20022", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20022_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("B"), "b()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("B"), "b()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20023/test_case.h b/tests/t20023/test_case.h index 9a66753a..34ea65bc 100644 --- a/tests/t20023/test_case.h +++ b/tests/t20023/test_case.h @@ -27,25 +27,29 @@ TEST_CASE("t20023", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20023_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a1()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a2()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a3()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a4()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a1()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a2()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a3()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a4()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20024/test_case.h b/tests/t20024/test_case.h index e049cd0b..34cd2179 100644 --- a/tests/t20024/test_case.h +++ b/tests/t20024/test_case.h @@ -27,30 +27,34 @@ TEST_CASE("t20024", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20024_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "select(enum_a)")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a0()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a1()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a2()")); + REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a3()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "select(enum_a)")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a0()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a1()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a2()")); - REQUIRE_THAT(puml, HasCall(_A("A"), _A("A"), "a3()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "select(colors)")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "red()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "orange()")); + REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "green()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("B"), "select(colors)")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "red()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "orange()")); - REQUIRE_THAT(puml, HasCall(_A("B"), _A("B"), "green()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20025/test_case.h b/tests/t20025/test_case.h index b62945cb..5305628f 100644 --- a/tests/t20025/test_case.h +++ b/tests/t20025/test_case.h @@ -27,25 +27,29 @@ TEST_CASE("t20025", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20025_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "a1()")); + // REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "a2()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("add(int,int)"), "")); + REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("add2(int,int)"), "")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "a1()")); - // REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "a2()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("add(int,int)"), "")); - REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("add2(int,int)"), "")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20026/test_case.h b/tests/t20026/test_case.h index 1fa56093..2542b16d 100644 --- a/tests/t20026/test_case.h +++ b/tests/t20026/test_case.h @@ -27,21 +27,25 @@ TEST_CASE("t20026", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20026_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20027/test_case.h b/tests/t20027/test_case.h index 410f86af..5246bbb1 100644 --- a/tests/t20027/test_case.h +++ b/tests/t20027/test_case.h @@ -27,23 +27,27 @@ TEST_CASE("t20027", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20027_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aa()")); + REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aaa()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aa()")); - REQUIRE_THAT(puml, !HasCall(_A("A"), _A("A"), "aaa()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20028/test_case.h b/tests/t20028/test_case.h index da0c0e7e..be2c23de 100644 --- a/tests/t20028/test_case.h +++ b/tests/t20028/test_case.h @@ -27,25 +27,29 @@ TEST_CASE("t20028", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20028_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "b()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "c()")); + REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "d()")); + REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("B"), "e()")); - // Check if all calls exist - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "a()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "b()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "c()")); - REQUIRE_THAT(puml, HasCall(_A("tmain()"), _A("A"), "d()")); - REQUIRE_THAT(puml, !HasCall(_A("tmain()"), _A("B"), "e()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - // REQUIRE(j == nlohmann::json::parse(expected_json)); - - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/t20029/test_case.h b/tests/t20029/test_case.h index f2c0e311..78488db0 100644 --- a/tests/t20029/test_case.h +++ b/tests/t20029/test_case.h @@ -27,38 +27,47 @@ TEST_CASE("t20029", "[test-case][sequence]") auto model = generate_sequence_diagram(*db, diagram); REQUIRE(model->name() == "t20029_sequence"); + { + auto puml = generate_sequence_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_sequence_puml(diagram, *model); - AliasMatcher _A(puml); + REQUIRE_THAT(puml, StartsWith("@startuml")); + REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + // Check if all calls exist + REQUIRE_THAT( + puml, HasCall(_A("tmain()"), _A("ConnectionPool"), "connect()")); + REQUIRE_THAT(puml, + HasCallInControlCondition(_A("tmain()"), + _A("Encoder>"), + "send(std::string &&)")); - // Check if all calls exist - REQUIRE_THAT( - puml, HasCall(_A("tmain()"), _A("ConnectionPool"), "connect()")); - REQUIRE_THAT(puml, - HasCallInControlCondition(_A("tmain()"), - _A("Encoder>"), "send(std::string &&)")); + REQUIRE_THAT(puml, + HasCall(_A("Encoder>"), + _A("Encoder>"), + "encode(std::string &&)")); - REQUIRE_THAT(puml, - HasCall(_A("Encoder>"), - _A("Encoder>"), "encode(std::string &&)")); + REQUIRE_THAT(puml, + HasCall(_A("Encoder>"), + _A("encode_b64(std::string &&)"), "")); - REQUIRE_THAT(puml, - HasCall(_A("Encoder>"), - _A("encode_b64(std::string &&)"), "")); + REQUIRE_THAT(puml, + HasCallInControlCondition(_A("Retrier"), + _A("ConnectionPool"), "send(const std::string &)")); - REQUIRE_THAT(puml, - HasCallInControlCondition(_A("Retrier"), - _A("ConnectionPool"), "send(const std::string &)")); + REQUIRE_THAT(puml, + !HasCall( + _A("ConnectionPool"), _A("ConnectionPool"), "connect_impl()")); - REQUIRE_THAT(puml, - !HasCall(_A("ConnectionPool"), _A("ConnectionPool"), "connect_impl()")); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_sequence_json(diagram, *model); - auto j = generate_sequence_json(diagram, *model); + using namespace json; - save_json(config.output_directory() + "/" + diagram->name + ".json", j); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } \ No newline at end of file diff --git a/tests/test_cases.h b/tests/test_cases.h index 7ec35cda..621774db 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -631,6 +631,20 @@ std::optional get_element( return {}; } +std::optional get_participant( + const nlohmann::json &j, const std::string &name) +{ + if (!j.contains("participants")) + return {}; + + for (const nlohmann::json &e : j["participants"]) { + if (e["name"] == name) + return {e}; + } + + return {}; +} + auto get_relationship(const nlohmann::json &j, const nlohmann::json &from, const nlohmann::json &to, const std::string &type) { @@ -825,6 +839,82 @@ bool IsInnerClass( return rel != j["relationships"].end(); } +bool IsParticipant( + const nlohmann::json &j, const std::string &name, const std::string &type) +{ + auto p = get_participant(j, expand_name(j, name)); + + return p && (p->at("type") == type); +} + +bool IsFunctionParticipant(const nlohmann::json &j, const std::string &name) +{ + return IsParticipant(j, name, "function"); +} + +bool IsClassParticipant(const nlohmann::json &j, const std::string &name) +{ + return IsParticipant(j, name, "class"); +} + +bool IsFileParticipant(const nlohmann::json &j, const std::string &name) +{ + return IsParticipant(j, name, "file"); +} + +namespace detail { +int find_message_nested(const nlohmann::json &j, const std::string &from, + const std::string &to, const std::string &msg, const nlohmann::json &from_p, + const nlohmann::json &to_p, int &count) +{ + const auto &messages = j["messages"]; + + int res{-1}; + + for (const auto &m : messages) { + if (m.contains("branches")) { + for (const auto &b : m["branches"]) { + auto nested_res = + find_message_nested(b, from, to, msg, from_p, to_p, count); + + if (nested_res >= 0) + return nested_res; + } + } + else { + if ((m["from"]["participant_id"] == from_p["id"]) && + (m["to"]["participant_id"] == to_p["id"]) && (m["name"] == msg)) + return count; + + count++; + } + } + + return res; +} +} // namespace detail + +int FindMessage(const nlohmann::json &j, const std::string &from, + const std::string &to, const std::string &msg) +{ + auto from_p = get_participant(j, expand_name(j, from)); + auto to_p = get_participant(j, expand_name(j, to)); + + // TODO: support diagrams with multiple sequences... + const auto &sequence_0 = j["sequences"][0]; + + int count{0}; + + auto res = detail::find_message_nested( + sequence_0, from, to, msg, *from_p, *to_p, count); + + if (res >= 0) + return res; + + throw std::runtime_error( + fmt::format("No such message {} {} {}", from, to, msg)); +} + } // namespace json } }