Fixed friend relationship generation in mermaid class diagram generator
This commit is contained in:
@@ -59,6 +59,7 @@ TEST_CASE("t00011", "[test-case][class]")
|
||||
auto src = generate_class_mermaid(diagram, *model);
|
||||
|
||||
mermaid::AliasMatcher _A(src);
|
||||
using mermaid::IsFriend;
|
||||
|
||||
REQUIRE_THAT(src, IsClass(_A("A")));
|
||||
REQUIRE_THAT(src, IsClass(_A("B")));
|
||||
@@ -67,7 +68,7 @@ TEST_CASE("t00011", "[test-case][class]")
|
||||
|
||||
REQUIRE_THAT(src, IsAssociation(_A("B"), _A("A")));
|
||||
REQUIRE_THAT(src, IsFriend<Public>(_A("A"), _A("B")));
|
||||
// REQUIRE_THAT(puml, IsFriend(_A("A"), _A("D<T>")));
|
||||
// REQUIRE_THAT(src, IsFriend(_A("A"), _A("D<T>")));
|
||||
|
||||
save_mermaid(config.output_directory(), diagram->name + ".mmd", src);
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ TEST_CASE("t00045", "[test-case][class]")
|
||||
auto src = generate_class_mermaid(diagram, *model);
|
||||
|
||||
mermaid::AliasMatcher _A(src);
|
||||
using mermaid::IsFriend;
|
||||
|
||||
REQUIRE_THAT(src, IsClass(_A("A")));
|
||||
REQUIRE_THAT(src, IsClass(_A("ns1::A")));
|
||||
|
||||
@@ -905,6 +905,26 @@ ContainsMatcher IsFriend(std::string const &from, std::string const &to,
|
||||
caseSensitivity));
|
||||
}
|
||||
|
||||
namespace mermaid {
|
||||
template <typename... Ts>
|
||||
ContainsMatcher IsFriend(std::string const &from, std::string const &to,
|
||||
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
|
||||
{
|
||||
std::string pattern;
|
||||
|
||||
if constexpr (has_type<Public, Ts...>())
|
||||
pattern = "+";
|
||||
else if constexpr (has_type<Protected, Ts...>())
|
||||
pattern = "#";
|
||||
else
|
||||
pattern = "-";
|
||||
|
||||
return ContainsMatcher(
|
||||
CasedString(fmt::format("{} <.. {} : {}[friend]", from, to, pattern),
|
||||
caseSensitivity));
|
||||
}
|
||||
}
|
||||
|
||||
ContainsMatcher IsPackage(std::string const &str,
|
||||
CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user