Added JSON package diagram generator test cases

This commit is contained in:
Bartek Kryza
2023-03-25 13:39:53 +01:00
parent c1bce60656
commit aa2d3099de
12 changed files with 345 additions and 130 deletions

View File

@@ -53,7 +53,7 @@ void generator::generate(const package &p, nlohmann::json &parent) const
LOG_DBG("Generating package {}", p.name()); LOG_DBG("Generating package {}", p.name());
nlohmann::json j; nlohmann::json j;
j["id"] = p.id(); j["id"] = std::to_string(p.id());
j["name"] = p.name(); j["name"] = p.name();
j["type"] = "namespace"; j["type"] = "namespace";
j["display_name"] = p.full_name(false); j["display_name"] = p.full_name(false);

View File

@@ -74,6 +74,17 @@ TEST_CASE("t30001", "[test-case][package]")
using namespace json; 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); save_json(config.output_directory() + "/" + diagram->name + ".json", j);
} }
} }

View File

@@ -28,46 +28,96 @@ TEST_CASE("t30002", "[test-case][package]")
REQUIRE(model->name() == "t30002_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A1")); REQUIRE_THAT(puml, IsPackage("A1"));
REQUIRE_THAT(puml, IsPackage("A2")); REQUIRE_THAT(puml, IsPackage("A2"));
REQUIRE_THAT(puml, IsPackage("A3")); REQUIRE_THAT(puml, IsPackage("A3"));
REQUIRE_THAT(puml, IsPackage("A4")); REQUIRE_THAT(puml, IsPackage("A4"));
REQUIRE_THAT(puml, IsPackage("A5")); REQUIRE_THAT(puml, IsPackage("A5"));
REQUIRE_THAT(puml, IsPackage("A6")); REQUIRE_THAT(puml, IsPackage("A6"));
REQUIRE_THAT(puml, IsPackage("A7")); REQUIRE_THAT(puml, IsPackage("A7"));
REQUIRE_THAT(puml, IsPackage("A8")); REQUIRE_THAT(puml, IsPackage("A8"));
REQUIRE_THAT(puml, IsPackage("A9")); REQUIRE_THAT(puml, IsPackage("A9"));
REQUIRE_THAT(puml, IsPackage("A11")); REQUIRE_THAT(puml, IsPackage("A11"));
REQUIRE_THAT(puml, IsPackage("A12")); REQUIRE_THAT(puml, IsPackage("A12"));
REQUIRE_THAT(puml, IsPackage("A13")); REQUIRE_THAT(puml, IsPackage("A13"));
REQUIRE_THAT(puml, IsPackage("A14")); REQUIRE_THAT(puml, IsPackage("A14"));
REQUIRE_THAT(puml, IsPackage("A15")); REQUIRE_THAT(puml, IsPackage("A15"));
REQUIRE_THAT(puml, IsPackage("A16")); REQUIRE_THAT(puml, IsPackage("A16"));
REQUIRE_THAT(puml, IsPackage("A17")); REQUIRE_THAT(puml, IsPackage("A17"));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A1"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A1")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A2"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A2")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A3"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A3")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A4"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A4")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A5"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A5")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A6"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A6")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A7"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A7")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A8"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A8")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A9"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A9")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A10"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A10")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A11"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A11")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A12"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A12")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A13"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A13")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A14"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A14")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A15"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A15")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A16"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A16")));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A17"))); 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);
}
} }

View File

@@ -4,24 +4,24 @@ namespace t30003 {
namespace ns1 { namespace ns1 {
namespace ns2_v1_0_0 { namespace ns2_v1_0_0 {
class A { }; class A { };
} } // namespace ns2_v1_0_0
namespace [[deprecated]] ns2_v0_9_0 { namespace [[deprecated]] ns2_v0_9_0 {
class A { }; class A { };
} } // namespace ns2_v0_9_0
namespace { namespace {
class Anon final { }; class Anon final { };
} } // namespace
} } // namespace ns1
namespace [[deprecated]] ns3 { namespace [[deprecated]] ns3 {
namespace ns1::ns2 { namespace ns1::ns2 {
class Anon : public t30003::ns1::ns2_v1_0_0::A { }; class Anon : public t30003::ns1::ns2_v1_0_0::A { };
} } // namespace ns1::ns2
class B : public ns1::ns2::Anon { }; class B : public ns1::ns2::Anon { };
} } // namespace ns3
} } // namespace t30003
} } // namespace clanguml

View File

@@ -27,21 +27,41 @@ TEST_CASE("t30003", "[test-case][package]")
auto model = generate_package_diagram(*db, diagram); auto model = generate_package_diagram(*db, diagram);
REQUIRE(model->name() == "t30003_package"); REQUIRE(model->name() == "t30003_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto puml = generate_package_puml(diagram, *model); REQUIRE_THAT(puml, StartsWith("@startuml"));
AliasMatcher _A(puml); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, StartsWith("@startuml")); REQUIRE_THAT(puml, IsPackage("ns1"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); 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, IsDeprecated(_A("ns2_v0_9_0")));
REQUIRE_THAT(puml, IsPackage("ns2")); REQUIRE_THAT(puml, IsDeprecated(_A("ns3")));
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"))); save_puml(
REQUIRE_THAT(puml, IsDeprecated(_A("ns3"))); 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);
}
} }

View File

@@ -28,17 +28,35 @@ TEST_CASE("t30004", "[test-case][package]")
REQUIRE(model->name() == "t30004_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("AAA")); REQUIRE_THAT(puml, IsPackage("AAA"));
REQUIRE_THAT(puml, IsPackage("BBB")); REQUIRE_THAT(puml, IsPackage("BBB"));
REQUIRE_THAT(puml, IsPackage("CCC")); REQUIRE_THAT(puml, IsPackage("CCC"));
REQUIRE_THAT(puml, !IsPackage("DDD")); REQUIRE_THAT(puml, !IsPackage("DDD"));
REQUIRE_THAT(puml, IsPackage("EEE")); 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);
}
} }

View File

@@ -28,18 +28,42 @@ TEST_CASE("t30005", "[test-case][package]")
REQUIRE(model->name() == "t30005_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("AAA")); REQUIRE_THAT(puml, IsPackage("AAA"));
REQUIRE_THAT(puml, IsPackage("BBB")); REQUIRE_THAT(puml, IsPackage("BBB"));
REQUIRE_THAT(puml, IsPackage("CCC")); REQUIRE_THAT(puml, IsPackage("CCC"));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA"))); REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA")));
REQUIRE_THAT(puml, IsDependency(_A("CCC"), _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);
}
} }

View File

@@ -28,18 +28,36 @@ TEST_CASE("t30006", "[test-case][package]")
REQUIRE(model->name() == "t30006_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A")); REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B")); REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C")); REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B"))); REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B")));
REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C"))); 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);
}
} }

View File

@@ -28,21 +28,40 @@ TEST_CASE("t30007", "[test-case][package]")
REQUIRE(model->name() == "t30007_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A")); REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B")); REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C")); REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("B"))); REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("B")));
REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("C"))); REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("C")));
REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "up", _A("AA"))); REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "up", _A("AA")));
REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "left", _A("B"))); 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);
}
} }

View File

@@ -28,27 +28,54 @@ TEST_CASE("t30008", "[test-case][package]")
REQUIRE(model->name() == "t30008_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A")); REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B")); REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C")); REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(puml, !IsPackage("X")); REQUIRE_THAT(puml, !IsPackage("X"));
REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A"))); REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A")));
REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B"))); REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B")));
REQUIRE_THAT(puml, IsPackage("D")); REQUIRE_THAT(puml, IsPackage("D"));
REQUIRE_THAT(puml, IsPackage("E")); REQUIRE_THAT(puml, IsPackage("E"));
REQUIRE_THAT(puml, IsPackage("F")); REQUIRE_THAT(puml, IsPackage("F"));
REQUIRE_THAT(puml, !IsPackage("Y")); REQUIRE_THAT(puml, !IsPackage("Y"));
REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D"))); REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D")));
REQUIRE_THAT(puml, IsDependency(_A("F"), _A("E"))); 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);
}
} }

View File

@@ -28,19 +28,41 @@ TEST_CASE("t30009", "[test-case][package]")
REQUIRE(model->name() == "t30009_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, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n")); REQUIRE_THAT(puml, EndsWith("@enduml\n"));
// Check if all packages exist // Check if all packages exist
REQUIRE_THAT(puml, IsPackage("One")); REQUIRE_THAT(puml, IsPackage("One"));
REQUIRE_THAT(puml, IsPackage("Two")); REQUIRE_THAT(puml, IsPackage("Two"));
REQUIRE_THAT(puml, IsPackage("A")); REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B")); REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C")); REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(puml, IsPackage("D")); 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);
}
} }

View File

@@ -714,6 +714,12 @@ bool IsPackage(const nlohmann::json &j, const std::string &name)
return e && e->at("type") == "namespace"; 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, bool IsBaseClass(const nlohmann::json &j, const std::string &base,
const std::string &subclass) const std::string &subclass)
{ {