From aa2d3099de6b6afda56d2343e7f7f1098d71bdf6 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 25 Mar 2023 13:39:53 +0100 Subject: [PATCH] Added JSON package diagram generator test cases --- .../json/package_diagram_generator.cc | 2 +- tests/t30001/test_case.h | 11 ++ tests/t30002/test_case.h | 126 ++++++++++++------ tests/t30003/t30003.cc | 16 +-- tests/t30003/test_case.h | 44 ++++-- tests/t30004/test_case.h | 38 ++++-- tests/t30005/test_case.h | 44 ++++-- tests/t30006/test_case.h | 38 ++++-- tests/t30007/test_case.h | 43 ++++-- tests/t30008/test_case.h | 61 ++++++--- tests/t30009/test_case.h | 46 +++++-- tests/test_cases.h | 6 + 12 files changed, 345 insertions(+), 130 deletions(-) diff --git a/src/package_diagram/generators/json/package_diagram_generator.cc b/src/package_diagram/generators/json/package_diagram_generator.cc index b1c62a51..e5d7b154 100644 --- a/src/package_diagram/generators/json/package_diagram_generator.cc +++ b/src/package_diagram/generators/json/package_diagram_generator.cc @@ -53,7 +53,7 @@ void generator::generate(const package &p, nlohmann::json &parent) const LOG_DBG("Generating package {}", p.name()); nlohmann::json j; - j["id"] = p.id(); + j["id"] = std::to_string(p.id()); j["name"] = p.name(); j["type"] = "namespace"; j["display_name"] = p.full_name(false); diff --git a/tests/t30001/test_case.h b/tests/t30001/test_case.h index 25fa9c2e..c5e64c1b 100644 --- a/tests/t30001/test_case.h +++ b/tests/t30001/test_case.h @@ -74,6 +74,17 @@ TEST_CASE("t30001", "[test-case][package]") using namespace json; + REQUIRE(IsPackage(j, "A")); + REQUIRE(IsPackage(j, "A::AA")); + REQUIRE(IsPackage(j, "A::AA::AAA")); + REQUIRE(IsPackage(j, "A::AA::BBB")); + REQUIRE(IsPackage(j, "A::BB")); + REQUIRE(IsPackage(j, "B")); + REQUIRE(IsPackage(j, "B::AA")); + REQUIRE(IsPackage(j, "B::AA::AAA")); + REQUIRE(IsPackage(j, "B::AA::BBB")); + REQUIRE(IsPackage(j, "B::BB")); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); } } diff --git a/tests/t30002/test_case.h b/tests/t30002/test_case.h index e4ef8c77..ef88d9bf 100644 --- a/tests/t30002/test_case.h +++ b/tests/t30002/test_case.h @@ -28,46 +28,96 @@ TEST_CASE("t30002", "[test-case][package]") REQUIRE(model->name() == "t30002_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("A1")); - REQUIRE_THAT(puml, IsPackage("A2")); - REQUIRE_THAT(puml, IsPackage("A3")); - REQUIRE_THAT(puml, IsPackage("A4")); - REQUIRE_THAT(puml, IsPackage("A5")); - REQUIRE_THAT(puml, IsPackage("A6")); - REQUIRE_THAT(puml, IsPackage("A7")); - REQUIRE_THAT(puml, IsPackage("A8")); - REQUIRE_THAT(puml, IsPackage("A9")); - REQUIRE_THAT(puml, IsPackage("A11")); - REQUIRE_THAT(puml, IsPackage("A12")); - REQUIRE_THAT(puml, IsPackage("A13")); - REQUIRE_THAT(puml, IsPackage("A14")); - REQUIRE_THAT(puml, IsPackage("A15")); - REQUIRE_THAT(puml, IsPackage("A16")); - REQUIRE_THAT(puml, IsPackage("A17")); + REQUIRE_THAT(puml, IsPackage("A1")); + REQUIRE_THAT(puml, IsPackage("A2")); + REQUIRE_THAT(puml, IsPackage("A3")); + REQUIRE_THAT(puml, IsPackage("A4")); + REQUIRE_THAT(puml, IsPackage("A5")); + REQUIRE_THAT(puml, IsPackage("A6")); + REQUIRE_THAT(puml, IsPackage("A7")); + REQUIRE_THAT(puml, IsPackage("A8")); + REQUIRE_THAT(puml, IsPackage("A9")); + REQUIRE_THAT(puml, IsPackage("A11")); + REQUIRE_THAT(puml, IsPackage("A12")); + REQUIRE_THAT(puml, IsPackage("A13")); + REQUIRE_THAT(puml, IsPackage("A14")); + REQUIRE_THAT(puml, IsPackage("A15")); + REQUIRE_THAT(puml, IsPackage("A16")); + REQUIRE_THAT(puml, IsPackage("A17")); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A1"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A2"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A3"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A4"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A5"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A6"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A7"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A8"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A9"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A10"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A11"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A12"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A13"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A14"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A15"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A16"))); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A17"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A1"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A2"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A3"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A4"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A5"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A6"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A7"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A8"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A9"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A10"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A11"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A12"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A13"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A14"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A15"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A16"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A17"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "A::AA")); + REQUIRE(IsPackage(j, "A::AA::A1")); + REQUIRE(IsPackage(j, "A::AA::A2")); + REQUIRE(IsPackage(j, "A::AA::A3")); + REQUIRE(IsPackage(j, "A::AA::A4")); + REQUIRE(IsPackage(j, "A::AA::A5")); + REQUIRE(IsPackage(j, "A::AA::A6")); + REQUIRE(IsPackage(j, "A::AA::A7")); + REQUIRE(IsPackage(j, "A::AA::A8")); + REQUIRE(IsPackage(j, "A::AA::A9")); + REQUIRE(IsPackage(j, "A::AA::A10")); + REQUIRE(IsPackage(j, "A::AA::A11")); + REQUIRE(IsPackage(j, "A::AA::A12")); + REQUIRE(IsPackage(j, "A::AA::A13")); + REQUIRE(IsPackage(j, "A::AA::A14")); + REQUIRE(IsPackage(j, "A::AA::A15")); + REQUIRE(IsPackage(j, "A::AA::A16")); + REQUIRE(IsPackage(j, "A::AA::A17")); + + REQUIRE(IsPackage(j, "B::BB::BBB")); + + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A1")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A2")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A3")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A4")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A5")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A6")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A7")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A8")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A9")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A10")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A11")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A12")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A13")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A14")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A15")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A16")); + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::A17")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30003/t30003.cc b/tests/t30003/t30003.cc index 134e675d..f5691f9d 100644 --- a/tests/t30003/t30003.cc +++ b/tests/t30003/t30003.cc @@ -4,24 +4,24 @@ namespace t30003 { namespace ns1 { namespace ns2_v1_0_0 { class A { }; -} +} // namespace ns2_v1_0_0 namespace [[deprecated]] ns2_v0_9_0 { class A { }; -} +} // namespace ns2_v0_9_0 namespace { class Anon final { }; -} -} +} // namespace +} // namespace ns1 namespace [[deprecated]] ns3 { namespace ns1::ns2 { class Anon : public t30003::ns1::ns2_v1_0_0::A { }; -} +} // namespace ns1::ns2 class B : public ns1::ns2::Anon { }; -} -} -} \ No newline at end of file +} // namespace ns3 +} // namespace t30003 +} // namespace clanguml \ No newline at end of file diff --git a/tests/t30003/test_case.h b/tests/t30003/test_case.h index c9026838..c9b9e200 100644 --- a/tests/t30003/test_case.h +++ b/tests/t30003/test_case.h @@ -27,21 +27,41 @@ TEST_CASE("t30003", "[test-case][package]") auto model = generate_package_diagram(*db, diagram); REQUIRE(model->name() == "t30003_package"); + { + auto puml = generate_package_puml(diagram, *model); + AliasMatcher _A(puml); - auto puml = generate_package_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, IsPackage("ns1")); + REQUIRE_THAT(puml, IsPackage("ns2")); + REQUIRE_THAT(puml, IsPackage("ns3")); + REQUIRE_THAT(puml, IsPackage("ns2_v1_0_0")); + REQUIRE_THAT(puml, IsPackage("ns2_v0_9_0")); - REQUIRE_THAT(puml, IsPackage("ns1")); - REQUIRE_THAT(puml, IsPackage("ns2")); - REQUIRE_THAT(puml, IsPackage("ns3")); - REQUIRE_THAT(puml, IsPackage("ns2_v1_0_0")); - REQUIRE_THAT(puml, IsPackage("ns2_v0_9_0")); + REQUIRE_THAT(puml, IsDeprecated(_A("ns2_v0_9_0"))); + REQUIRE_THAT(puml, IsDeprecated(_A("ns3"))); - REQUIRE_THAT(puml, IsDeprecated(_A("ns2_v0_9_0"))); - REQUIRE_THAT(puml, IsDeprecated(_A("ns3"))); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "ns1")); + REQUIRE(IsPackage(j, "ns1::ns2_v1_0_0")); + REQUIRE(IsPackage(j, "ns1::ns2_v0_9_0")); + REQUIRE(IsPackage(j, "ns3")); + REQUIRE(IsPackage(j, "ns3::ns1")); + REQUIRE(IsPackage(j, "ns3::ns1::ns2")); + + REQUIRE(IsDeprecated(j, "ns1::ns2_v0_9_0")); + REQUIRE(IsDeprecated(j, "ns3")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30004/test_case.h b/tests/t30004/test_case.h index 6c471d87..ef97bd49 100644 --- a/tests/t30004/test_case.h +++ b/tests/t30004/test_case.h @@ -28,17 +28,35 @@ TEST_CASE("t30004", "[test-case][package]") REQUIRE(model->name() == "t30004_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("AAA")); - REQUIRE_THAT(puml, IsPackage("BBB")); - REQUIRE_THAT(puml, IsPackage("CCC")); - REQUIRE_THAT(puml, !IsPackage("DDD")); - REQUIRE_THAT(puml, IsPackage("EEE")); + REQUIRE_THAT(puml, IsPackage("AAA")); + REQUIRE_THAT(puml, IsPackage("BBB")); + REQUIRE_THAT(puml, IsPackage("CCC")); + REQUIRE_THAT(puml, !IsPackage("DDD")); + REQUIRE_THAT(puml, IsPackage("EEE")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "A")); + REQUIRE(IsPackage(j, "A::AAA")); + REQUIRE(IsPackage(j, "A::BBB")); + REQUIRE(IsPackage(j, "A::CCC")); + REQUIRE(!IsPackage(j, "A::DDD")); + REQUIRE(IsPackage(j, "A::EEE")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30005/test_case.h b/tests/t30005/test_case.h index 3afa00ee..18665830 100644 --- a/tests/t30005/test_case.h +++ b/tests/t30005/test_case.h @@ -28,18 +28,42 @@ TEST_CASE("t30005", "[test-case][package]") REQUIRE(model->name() == "t30005_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("AAA")); - REQUIRE_THAT(puml, IsPackage("BBB")); - REQUIRE_THAT(puml, IsPackage("CCC")); + REQUIRE_THAT(puml, IsPackage("AAA")); + REQUIRE_THAT(puml, IsPackage("BBB")); + REQUIRE_THAT(puml, IsPackage("CCC")); - REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA"))); - REQUIRE_THAT(puml, IsDependency(_A("CCC"), _A("AAA"))); + REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA"))); + REQUIRE_THAT(puml, IsDependency(_A("CCC"), _A("AAA"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "A")); + REQUIRE(IsPackage(j, "A::AA")); + REQUIRE(IsPackage(j, "A::AA::AAA")); + REQUIRE(IsPackage(j, "B")); + REQUIRE(IsPackage(j, "B::BB")); + REQUIRE(IsPackage(j, "B::BB::BBB")); + REQUIRE(IsPackage(j, "C")); + REQUIRE(IsPackage(j, "C::CC")); + REQUIRE(IsPackage(j, "C::CC::CCC")); + + REQUIRE(IsDependency(j, "B::BB::BBB", "A::AA::AAA")); + REQUIRE(IsDependency(j, "C::CC::CCC", "A::AA::AAA")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30006/test_case.h b/tests/t30006/test_case.h index 9d7808ef..b238f55e 100644 --- a/tests/t30006/test_case.h +++ b/tests/t30006/test_case.h @@ -28,18 +28,36 @@ TEST_CASE("t30006", "[test-case][package]") REQUIRE(model->name() == "t30006_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("A")); - REQUIRE_THAT(puml, IsPackage("B")); - REQUIRE_THAT(puml, IsPackage("C")); + REQUIRE_THAT(puml, IsPackage("A")); + REQUIRE_THAT(puml, IsPackage("B")); + REQUIRE_THAT(puml, IsPackage("C")); - REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B"))); - REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C"))); + REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B"))); + REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "A")); + REQUIRE(IsPackage(j, "B")); + REQUIRE(IsPackage(j, "C")); + + REQUIRE(IsDependency(j, "A", "B")); + REQUIRE(IsDependency(j, "A", "C")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30007/test_case.h b/tests/t30007/test_case.h index 1fbb7399..6262c0c5 100644 --- a/tests/t30007/test_case.h +++ b/tests/t30007/test_case.h @@ -28,21 +28,40 @@ TEST_CASE("t30007", "[test-case][package]") REQUIRE(model->name() == "t30007_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("A")); - REQUIRE_THAT(puml, IsPackage("B")); - REQUIRE_THAT(puml, IsPackage("C")); + REQUIRE_THAT(puml, IsPackage("A")); + REQUIRE_THAT(puml, IsPackage("B")); + REQUIRE_THAT(puml, IsPackage("C")); - REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("B"))); - REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("C"))); + REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("B"))); + REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("C"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "up", _A("AA"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "left", _A("B"))); + REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "up", _A("AA"))); + REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "left", _A("B"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "A")); + REQUIRE(IsPackage(j, "A::AA")); + REQUIRE(IsPackage(j, "B")); + REQUIRE(IsPackage(j, "C")); + + REQUIRE(IsDependency(j, "A::AA", "B")); + REQUIRE(IsDependency(j, "A::AA", "C")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30008/test_case.h b/tests/t30008/test_case.h index c14d183f..a6bd9b7b 100644 --- a/tests/t30008/test_case.h +++ b/tests/t30008/test_case.h @@ -28,27 +28,54 @@ TEST_CASE("t30008", "[test-case][package]") REQUIRE(model->name() == "t30008_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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, IsPackage("A")); - REQUIRE_THAT(puml, IsPackage("B")); - REQUIRE_THAT(puml, IsPackage("C")); - REQUIRE_THAT(puml, !IsPackage("X")); + REQUIRE_THAT(puml, IsPackage("A")); + REQUIRE_THAT(puml, IsPackage("B")); + REQUIRE_THAT(puml, IsPackage("C")); + REQUIRE_THAT(puml, !IsPackage("X")); - REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A"))); - REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B"))); + REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A"))); + REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B"))); - REQUIRE_THAT(puml, IsPackage("D")); - REQUIRE_THAT(puml, IsPackage("E")); - REQUIRE_THAT(puml, IsPackage("F")); - REQUIRE_THAT(puml, !IsPackage("Y")); + REQUIRE_THAT(puml, IsPackage("D")); + REQUIRE_THAT(puml, IsPackage("E")); + REQUIRE_THAT(puml, IsPackage("F")); + REQUIRE_THAT(puml, !IsPackage("Y")); - REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D"))); - REQUIRE_THAT(puml, IsDependency(_A("F"), _A("E"))); + REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D"))); + REQUIRE_THAT(puml, IsDependency(_A("F"), _A("E"))); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "dependants::A")); + REQUIRE(IsPackage(j, "dependants::B")); + REQUIRE(IsPackage(j, "dependants::C")); + REQUIRE(!IsPackage(j, "dependants::X")); + + REQUIRE(IsDependency(j, "dependants::B", "dependants::A")); + REQUIRE(IsDependency(j, "dependants::C", "dependants::B")); + + REQUIRE(IsPackage(j, "dependencies::D")); + REQUIRE(IsPackage(j, "dependencies::E")); + REQUIRE(IsPackage(j, "dependencies::F")); + REQUIRE(!IsPackage(j, "dependencies::Y")); + + REQUIRE(IsDependency(j, "dependencies::E", "dependencies::D")); + REQUIRE(IsDependency(j, "dependencies::F", "dependencies::E")); + + save_json(config.output_directory() + "/" + diagram->name + ".json", j); + } } diff --git a/tests/t30009/test_case.h b/tests/t30009/test_case.h index 90343059..8ee85cfb 100644 --- a/tests/t30009/test_case.h +++ b/tests/t30009/test_case.h @@ -28,19 +28,41 @@ TEST_CASE("t30009", "[test-case][package]") REQUIRE(model->name() == "t30009_package"); - auto puml = generate_package_puml(diagram, *model); - AliasMatcher _A(puml); + { + auto puml = generate_package_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 packages exist - REQUIRE_THAT(puml, IsPackage("One")); - REQUIRE_THAT(puml, IsPackage("Two")); - REQUIRE_THAT(puml, IsPackage("A")); - REQUIRE_THAT(puml, IsPackage("B")); - REQUIRE_THAT(puml, IsPackage("C")); - REQUIRE_THAT(puml, IsPackage("D")); + // Check if all packages exist + REQUIRE_THAT(puml, IsPackage("One")); + REQUIRE_THAT(puml, IsPackage("Two")); + REQUIRE_THAT(puml, IsPackage("A")); + REQUIRE_THAT(puml, IsPackage("B")); + REQUIRE_THAT(puml, IsPackage("C")); + REQUIRE_THAT(puml, IsPackage("D")); - save_puml(config.output_directory() + "/" + diagram->name + ".puml", puml); + save_puml( + config.output_directory() + "/" + diagram->name + ".puml", puml); + } + + { + auto j = generate_package_json(diagram, *model); + + using namespace json; + + REQUIRE(IsPackage(j, "One")); + REQUIRE(IsPackage(j, "Two")); + REQUIRE(IsPackage(j, "One::A")); + REQUIRE(IsPackage(j, "One::B")); + REQUIRE(IsPackage(j, "One::C")); + REQUIRE(IsPackage(j, "One::D")); + REQUIRE(IsPackage(j, "Two::A")); + REQUIRE(IsPackage(j, "Two::B")); + REQUIRE(IsPackage(j, "Two::C")); + REQUIRE(IsPackage(j, "Two::D")); + + 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 4503c79c..3f60fc4b 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -714,6 +714,12 @@ bool IsPackage(const nlohmann::json &j, const std::string &name) return e && e->at("type") == "namespace"; } +bool IsDeprecated(const nlohmann::json &j, const std::string &name) +{ + auto e = get_element(j, expand_name(j, name)); + return e && e->at("is_deprecated") == true; +} + bool IsBaseClass(const nlohmann::json &j, const std::string &base, const std::string &subclass) {