Added mermaid test cases for package diagrams

This commit is contained in:
Bartek Kryza
2023-09-13 00:24:45 +02:00
parent 57af380dfa
commit 9872e2d225
13 changed files with 407 additions and 186 deletions

View File

@@ -20,3 +20,15 @@ diagrams:
- 'note right of {{ alias("A::AA::AAA") }}: A AAA note...'
- '{% set e=element("A::AA") %} note top of {{ alias("A::AA") }} : {{ e.comment.formatted }}'
- '{% set e=element("B::AA") %} note top of {{ alias("B::AA") }} : {{ e.comment.formatted }}'
mermaid:
before:
- "%% t30001 test diagram of type {{ diagram.type }}"
after:
- 'N_0001(A AAA note...)'
- 'N_0001 -.- {{ alias("A::AA::AAA") }}'
- '{% set e=element("A::AA") %}N_0002({{ e.comment.formatted }})'
- '{% set e=element("B::AA") %}N_0003({{ e.comment.formatted }})'
- 'N_0002 -.- {{ alias("A::AA") }}'
- 'N_0003 -.- {{ alias("B::AA") }}'

View File

@@ -29,39 +29,39 @@ TEST_CASE("t30001", "[test-case][package]")
REQUIRE(model->name() == "t30001_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("AAA"));
REQUIRE_THAT(puml, IsPackage("AAA"));
REQUIRE_THAT(src, IsPackage("A"));
REQUIRE_THAT(src, IsPackage("AAA"));
REQUIRE_THAT(src, IsPackage("AAA"));
// TODO: Fix _A() to handle fully qualified names, right
// now it only finds the first element with unqualified
// name match
REQUIRE_THAT(puml,
REQUIRE_THAT(src,
HasNote(_A("AA"), "top", "This is namespace AA in namespace A"));
REQUIRE_THAT(puml,
REQUIRE_THAT(src,
HasLink(_A("AAA"),
fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/"
"t30001/t30001.cc#L6",
clanguml::util::get_git_commit()),
"AAA"));
REQUIRE_THAT(puml,
REQUIRE_THAT(src,
HasLink(_A("BBB"),
fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/"
"t30001/t30001.cc#L8",
clanguml::util::get_git_commit()),
"BBB"));
REQUIRE_THAT(puml, HasComment("t30001 test diagram of type package"));
REQUIRE_THAT(src, HasComment("t30001 test diagram of type package"));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -84,8 +84,41 @@ TEST_CASE("t30001", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
using mermaid::HasComment;
using mermaid::HasLink;
using mermaid::HasPackageNote;
using mermaid::IsPackage;
REQUIRE_THAT(src, IsPackage(_A("A")));
REQUIRE_THAT(src, IsPackage(_A("AAA")));
REQUIRE_THAT(src, IsPackage(_A("AAA")));
// TODO: Fix _A() to handle fully qualified names, right
// now it only finds the first element with unqualified
// name match
REQUIRE_THAT(src,
HasPackageNote(
_A("AA"), "top", "This is namespace AA in namespace A"));
REQUIRE_THAT(src,
HasLink(_A("AAA"),
fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/"
"t30001/t30001.cc#L6",
clanguml::util::get_git_commit()),
"AAA"));
REQUIRE_THAT(src,
HasLink(_A("BBB"),
fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/"
"t30001/t30001.cc#L8",
clanguml::util::get_git_commit()),
"BBB"));
REQUIRE_THAT(src, HasComment("t30001 test diagram of type package"));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,50 +29,50 @@ TEST_CASE("t30002", "[test-case][package]")
REQUIRE(model->name() == "t30002_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, 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("A18"));
REQUIRE_THAT(src, IsPackage("A1"));
REQUIRE_THAT(src, IsPackage("A2"));
REQUIRE_THAT(src, IsPackage("A3"));
REQUIRE_THAT(src, IsPackage("A4"));
REQUIRE_THAT(src, IsPackage("A5"));
REQUIRE_THAT(src, IsPackage("A6"));
REQUIRE_THAT(src, IsPackage("A7"));
REQUIRE_THAT(src, IsPackage("A8"));
REQUIRE_THAT(src, IsPackage("A9"));
REQUIRE_THAT(src, IsPackage("A11"));
REQUIRE_THAT(src, IsPackage("A12"));
REQUIRE_THAT(src, IsPackage("A13"));
REQUIRE_THAT(src, IsPackage("A14"));
REQUIRE_THAT(src, IsPackage("A15"));
REQUIRE_THAT(src, IsPackage("A16"));
REQUIRE_THAT(src, IsPackage("A17"));
REQUIRE_THAT(src, IsPackage("A18"));
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("A18")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A1")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A2")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A3")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A4")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A5")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A6")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A7")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A8")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A9")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A10")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A11")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A12")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A13")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A14")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A15")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A16")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A17")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("A18")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -123,8 +123,48 @@ TEST_CASE("t30002", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("A1")));
REQUIRE_THAT(src, IsPackage(_A("A2")));
REQUIRE_THAT(src, IsPackage(_A("A3")));
REQUIRE_THAT(src, IsPackage(_A("A4")));
REQUIRE_THAT(src, IsPackage(_A("A5")));
REQUIRE_THAT(src, IsPackage(_A("A6")));
REQUIRE_THAT(src, IsPackage(_A("A7")));
REQUIRE_THAT(src, IsPackage(_A("A8")));
REQUIRE_THAT(src, IsPackage(_A("A9")));
REQUIRE_THAT(src, IsPackage(_A("A11")));
REQUIRE_THAT(src, IsPackage(_A("A12")));
REQUIRE_THAT(src, IsPackage(_A("A13")));
REQUIRE_THAT(src, IsPackage(_A("A14")));
REQUIRE_THAT(src, IsPackage(_A("A15")));
REQUIRE_THAT(src, IsPackage(_A("A16")));
REQUIRE_THAT(src, IsPackage(_A("A17")));
REQUIRE_THAT(src, IsPackage(_A("A18")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A1")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A2")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A3")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A4")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A5")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A6")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A7")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A8")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A9")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A10")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A11")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A12")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A13")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A14")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A15")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A16")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A17")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("A18")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -28,22 +28,22 @@ TEST_CASE("t30003", "[test-case][package]")
REQUIRE(model->name() == "t30003_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, 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(src, IsPackage("ns1"));
REQUIRE_THAT(src, IsPackage("ns2"));
REQUIRE_THAT(src, IsPackage("ns3"));
REQUIRE_THAT(src, IsPackage("ns2_v1_0_0"));
REQUIRE_THAT(src, IsPackage("ns2_v0_9_0"));
REQUIRE_THAT(puml, IsDeprecated(_A("ns2_v0_9_0")));
REQUIRE_THAT(puml, IsDeprecated(_A("ns3")));
REQUIRE_THAT(src, IsDeprecated(_A("ns2_v0_9_0")));
REQUIRE_THAT(src, IsDeprecated(_A("ns3")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -65,8 +65,19 @@ TEST_CASE("t30003", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("ns1")));
REQUIRE_THAT(src, IsPackage(_A("ns2")));
REQUIRE_THAT(src, IsPackage(_A("ns3")));
REQUIRE_THAT(src, IsPackage(_A("ns2_v1_0_0")));
REQUIRE_THAT(src, IsPackage(_A("ns2_v0_9_0")));
// REQUIRE_THAT(src, IsDeprecated(_A("ns2_v0_9_0")));
// REQUIRE_THAT(src, IsDeprecated(_A("ns3")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,19 +29,19 @@ TEST_CASE("t30004", "[test-case][package]")
REQUIRE(model->name() == "t30004_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, 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(src, IsPackage("AAA"));
REQUIRE_THAT(src, IsPackage("BBB"));
REQUIRE_THAT(src, IsPackage("CCC"));
REQUIRE_THAT(src, !IsPackage("DDD"));
REQUIRE_THAT(src, IsPackage("EEE"));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -60,8 +60,16 @@ TEST_CASE("t30004", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("AAA")));
REQUIRE_THAT(src, IsPackage(_A("BBB")));
REQUIRE_THAT(src, IsPackage(_A("CCC")));
REQUIRE_THAT(src, !IsPackage(_A("DDD")));
REQUIRE_THAT(src, IsPackage(_A("EEE")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,20 +29,20 @@ TEST_CASE("t30005", "[test-case][package]")
REQUIRE(model->name() == "t30005_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("AAA"));
REQUIRE_THAT(puml, IsPackage("BBB"));
REQUIRE_THAT(puml, IsPackage("CCC"));
REQUIRE_THAT(src, IsPackage("AAA"));
REQUIRE_THAT(src, IsPackage("BBB"));
REQUIRE_THAT(src, IsPackage("CCC"));
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("AAA")));
REQUIRE_THAT(puml, IsDependency(_A("CCC"), _A("AAA")));
REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("AAA")));
REQUIRE_THAT(src, IsDependency(_A("CCC"), _A("AAA")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -67,8 +67,19 @@ TEST_CASE("t30005", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
REQUIRE_THAT(src, IsPackage(_A("AAA")));
REQUIRE_THAT(src, IsPackage(_A("BBB")));
REQUIRE_THAT(src, IsPackage(_A("CCC")));
REQUIRE_THAT(src, IsPackageDependency(_A("BBB"), _A("AAA")));
REQUIRE_THAT(src, IsPackageDependency(_A("CCC"), _A("AAA")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,20 +29,20 @@ TEST_CASE("t30006", "[test-case][package]")
REQUIRE(model->name() == "t30006_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(src, IsPackage("A"));
REQUIRE_THAT(src, IsPackage("B"));
REQUIRE_THAT(src, IsPackage("C"));
REQUIRE_THAT(puml, IsDependency(_A("A"), _A("B")));
REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C")));
REQUIRE_THAT(src, IsDependency(_A("A"), _A("B")));
REQUIRE_THAT(src, IsDependency(_A("A"), _A("C")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -61,8 +61,18 @@ TEST_CASE("t30006", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("A")));
REQUIRE_THAT(src, IsPackage(_A("B")));
REQUIRE_THAT(src, IsPackage(_A("C")));
REQUIRE_THAT(src, IsPackageDependency(_A("A"), _A("B")));
REQUIRE_THAT(src, IsPackageDependency(_A("A"), _A("C")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,23 +29,23 @@ TEST_CASE("t30007", "[test-case][package]")
REQUIRE(model->name() == "t30007_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("A"));
REQUIRE_THAT(puml, IsPackage("B"));
REQUIRE_THAT(puml, IsPackage("C"));
REQUIRE_THAT(src, IsPackage("A"));
REQUIRE_THAT(src, IsPackage("B"));
REQUIRE_THAT(src, IsPackage("C"));
REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("B")));
REQUIRE_THAT(puml, IsDependency(_A("AA"), _A("C")));
REQUIRE_THAT(src, IsDependency(_A("AA"), _A("B")));
REQUIRE_THAT(src, 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(src, IsLayoutHint(_A("C"), "up", _A("AA")));
REQUIRE_THAT(src, IsLayoutHint(_A("C"), "left", _A("B")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -65,8 +65,18 @@ TEST_CASE("t30007", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("A")));
REQUIRE_THAT(src, IsPackage(_A("B")));
REQUIRE_THAT(src, IsPackage(_A("C")));
REQUIRE_THAT(src, IsPackageDependency(_A("AA"), _A("B")));
REQUIRE_THAT(src, IsPackageDependency(_A("AA"), _A("C")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,29 +29,29 @@ TEST_CASE("t30008", "[test-case][package]")
REQUIRE(model->name() == "t30008_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, 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(src, IsPackage("A"));
REQUIRE_THAT(src, IsPackage("B"));
REQUIRE_THAT(src, IsPackage("C"));
REQUIRE_THAT(src, !IsPackage("X"));
REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A")));
REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B")));
REQUIRE_THAT(src, IsDependency(_A("B"), _A("A")));
REQUIRE_THAT(src, 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(src, IsPackage("D"));
REQUIRE_THAT(src, IsPackage("E"));
REQUIRE_THAT(src, IsPackage("F"));
REQUIRE_THAT(src, !IsPackage("Y"));
REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D")));
REQUIRE_THAT(puml, IsDependency(_A("F"), _A("E")));
REQUIRE_THAT(src, IsDependency(_A("E"), _A("D")));
REQUIRE_THAT(src, IsDependency(_A("F"), _A("E")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -79,8 +79,27 @@ TEST_CASE("t30008", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("A")));
REQUIRE_THAT(src, IsPackage(_A("B")));
REQUIRE_THAT(src, IsPackage(_A("C")));
REQUIRE_THAT(src, !IsPackage(_A("X")));
REQUIRE_THAT(src, IsPackageDependency(_A("B"), _A("A")));
REQUIRE_THAT(src, IsPackageDependency(_A("C"), _A("B")));
REQUIRE_THAT(src, IsPackage(_A("D")));
REQUIRE_THAT(src, IsPackage(_A("E")));
REQUIRE_THAT(src, IsPackage(_A("F")));
REQUIRE_THAT(src, !IsPackage(_A("Y")));
REQUIRE_THAT(src, IsPackageDependency(_A("E"), _A("D")));
REQUIRE_THAT(src, IsPackageDependency(_A("F"), _A("E")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,21 +29,21 @@ TEST_CASE("t30009", "[test-case][package]")
REQUIRE(model->name() == "t30009_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, 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"));
REQUIRE_THAT(src, IsPackage("One"));
REQUIRE_THAT(src, IsPackage("Two"));
REQUIRE_THAT(src, IsPackage("A"));
REQUIRE_THAT(src, IsPackage("B"));
REQUIRE_THAT(src, IsPackage("C"));
REQUIRE_THAT(src, IsPackage("D"));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -66,8 +66,17 @@ TEST_CASE("t30009", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("One")));
REQUIRE_THAT(src, IsPackage(_A("Two")));
REQUIRE_THAT(src, IsPackage(_A("A")));
REQUIRE_THAT(src, IsPackage(_A("B")));
REQUIRE_THAT(src, IsPackage(_A("C")));
REQUIRE_THAT(src, IsPackage(_A("D")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,25 +29,25 @@ TEST_CASE("t30010", "[test-case][package]")
REQUIRE(model->name() == "t30010_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("app"));
REQUIRE_THAT(puml, IsPackage("libraries"));
REQUIRE_THAT(puml, IsPackage("lib1"));
REQUIRE_THAT(puml, IsPackage("lib2"));
REQUIRE_THAT(puml, !IsPackage("library1"));
REQUIRE_THAT(puml, !IsPackage("library2"));
REQUIRE_THAT(src, IsPackage("app"));
REQUIRE_THAT(src, IsPackage("libraries"));
REQUIRE_THAT(src, IsPackage("lib1"));
REQUIRE_THAT(src, IsPackage("lib2"));
REQUIRE_THAT(src, !IsPackage("library1"));
REQUIRE_THAT(src, !IsPackage("library2"));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib4")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib4")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -59,8 +59,23 @@ TEST_CASE("t30010", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("app")));
REQUIRE_THAT(src, IsPackage(_A("libraries")));
REQUIRE_THAT(src, IsPackage(_A("lib1")));
REQUIRE_THAT(src, IsPackage(_A("lib2")));
REQUIRE_THAT(src, !IsPackage(_A("library1")));
REQUIRE_THAT(src, !IsPackage(_A("library2")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib4")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -29,25 +29,25 @@ TEST_CASE("t30011", "[test-case][package]")
REQUIRE(model->name() == "t30011_package");
{
auto puml = generate_package_puml(diagram, *model);
AliasMatcher _A(puml);
auto src = generate_package_puml(diagram, *model);
AliasMatcher _A(src);
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(src, StartsWith("@startuml"));
REQUIRE_THAT(src, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsPackage("app"));
REQUIRE_THAT(puml, IsPackage("libraries"));
REQUIRE_THAT(puml, IsPackage("lib1"));
REQUIRE_THAT(puml, IsPackage("lib2"));
REQUIRE_THAT(puml, !IsPackage("library1"));
REQUIRE_THAT(puml, !IsPackage("library2"));
REQUIRE_THAT(src, IsPackage("app"));
REQUIRE_THAT(src, IsPackage("libraries"));
REQUIRE_THAT(src, IsPackage("lib1"));
REQUIRE_THAT(src, IsPackage("lib2"));
REQUIRE_THAT(src, !IsPackage("library1"));
REQUIRE_THAT(src, !IsPackage("library2"));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(puml, IsDependency(_A("app"), _A("lib4")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(src, IsDependency(_A("app"), _A("lib4")));
save_puml(config.output_directory(), diagram->name + ".puml", puml);
save_puml(config.output_directory(), diagram->name + ".puml", src);
}
{
@@ -59,8 +59,23 @@ TEST_CASE("t30011", "[test-case][package]")
}
{
auto mmd = generate_package_mermaid(diagram, *model);
auto src = generate_package_mermaid(diagram, *model);
mermaid::AliasMatcher _A(src);
using mermaid::IsPackage;
using mermaid::IsPackageDependency;
save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd);
REQUIRE_THAT(src, IsPackage(_A("app")));
REQUIRE_THAT(src, IsPackage(_A("libraries")));
REQUIRE_THAT(src, IsPackage(_A("lib1")));
REQUIRE_THAT(src, IsPackage(_A("lib2")));
REQUIRE_THAT(src, !IsPackage(_A("library1")));
REQUIRE_THAT(src, !IsPackage(_A("library2")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib1")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib2")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib3")));
REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("lib4")));
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
}
}

View File

@@ -428,6 +428,8 @@ struct AliasMatcher {
patterns.push_back(
std::regex{"class\\s" + alias_regex + "\\[\"" + name + "\"\\]"});
patterns.push_back(
std::regex{"subgraph\\s" + alias_regex + "\\[" + name + "\\]"});
std::smatch base_match;
@@ -729,6 +731,17 @@ ContainsMatcher IsDependency(std::string const &from, std::string const &to,
CasedString(fmt::format("{} ..> {}", from, to), caseSensitivity));
}
namespace mermaid {
ContainsMatcher IsPackageDependency(std::string const &from,
std::string const &to,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return ContainsMatcher(
CasedString(fmt::format("{} -.-> {}", from, to), caseSensitivity));
}
}
ContainsMatcher IsConstraint(std::string const &from, std::string const &to,
std::string const &label = {},
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
@@ -825,6 +838,13 @@ ContainsMatcher HasNote(std::string const &cls,
return ContainsMatcher(
CasedString(fmt::format("note for {}", cls), caseSensitivity));
}
ContainsMatcher HasPackageNote(std::string const &cls,
std::string const &position = "", std::string const &note = "",
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return ContainsMatcher(
CasedString(fmt::format("-.- {}", cls), caseSensitivity));
}
}
ContainsMatcher HasMemberNote(std::string const &cls, std::string const &member,
@@ -1063,6 +1083,14 @@ ContainsMatcher IsPackage(std::string const &str,
CasedString("package [" + str + "]", caseSensitivity));
}
namespace mermaid {
ContainsMatcher IsPackage(std::string const &str,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{
return ContainsMatcher(CasedString("subgraph " + str, caseSensitivity));
}
}
ContainsMatcher IsFolder(std::string const &str,
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
{