diff --git a/tests/t30001/.clang-uml b/tests/t30001/.clang-uml index e5faba78..05767605 100644 --- a/tests/t30001/.clang-uml +++ b/tests/t30001/.clang-uml @@ -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") }}' + + diff --git a/tests/t30001/test_case.h b/tests/t30001/test_case.h index 50faf08b..0b5fab4a 100644 --- a/tests/t30001/test_case.h +++ b/tests/t30001/test_case.h @@ -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); } } diff --git a/tests/t30002/test_case.h b/tests/t30002/test_case.h index 1ebcd105..4d8c0df0 100644 --- a/tests/t30002/test_case.h +++ b/tests/t30002/test_case.h @@ -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); } } diff --git a/tests/t30003/test_case.h b/tests/t30003/test_case.h index f001ca5e..09082966 100644 --- a/tests/t30003/test_case.h +++ b/tests/t30003/test_case.h @@ -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); } } diff --git a/tests/t30004/test_case.h b/tests/t30004/test_case.h index 61c5cd81..0eb17be6 100644 --- a/tests/t30004/test_case.h +++ b/tests/t30004/test_case.h @@ -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); } } diff --git a/tests/t30005/test_case.h b/tests/t30005/test_case.h index 3c297da7..75e5d45c 100644 --- a/tests/t30005/test_case.h +++ b/tests/t30005/test_case.h @@ -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); } } diff --git a/tests/t30006/test_case.h b/tests/t30006/test_case.h index 618a393a..bed6eeca 100644 --- a/tests/t30006/test_case.h +++ b/tests/t30006/test_case.h @@ -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); } } diff --git a/tests/t30007/test_case.h b/tests/t30007/test_case.h index 249f9a22..796f453b 100644 --- a/tests/t30007/test_case.h +++ b/tests/t30007/test_case.h @@ -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); } } diff --git a/tests/t30008/test_case.h b/tests/t30008/test_case.h index c737f815..8d724055 100644 --- a/tests/t30008/test_case.h +++ b/tests/t30008/test_case.h @@ -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); } } diff --git a/tests/t30009/test_case.h b/tests/t30009/test_case.h index 41e2575c..efb4902d 100644 --- a/tests/t30009/test_case.h +++ b/tests/t30009/test_case.h @@ -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); } } \ No newline at end of file diff --git a/tests/t30010/test_case.h b/tests/t30010/test_case.h index b2bd5dca..03a1e1ca 100644 --- a/tests/t30010/test_case.h +++ b/tests/t30010/test_case.h @@ -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); } } \ No newline at end of file diff --git a/tests/t30011/test_case.h b/tests/t30011/test_case.h index 3af06b7a..ac66a448 100644 --- a/tests/t30011/test_case.h +++ b/tests/t30011/test_case.h @@ -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); } } \ No newline at end of file diff --git a/tests/test_cases.h b/tests/test_cases.h index 7193e120..6b2b8bf3 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -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 ¬e = "", + 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) {