Fixed multiple relationship generation for template instantiation
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
#include <memory>
|
||||
|
||||
namespace clanguml {
|
||||
namespace t00025 {
|
||||
|
||||
class Target {
|
||||
public:
|
||||
virtual ~Target() = 0;
|
||||
|
||||
virtual void m1() = 0;
|
||||
virtual void m2() = 0;
|
||||
};
|
||||
|
||||
class Target1 : public Target {
|
||||
public:
|
||||
void m1() override {}
|
||||
void m2() override {}
|
||||
};
|
||||
|
||||
class Target2 : public Target {
|
||||
public:
|
||||
void m1() override {}
|
||||
void m2() override {}
|
||||
};
|
||||
|
||||
class Proxy : public Target {
|
||||
public:
|
||||
Proxy(std::shared_ptr<Target> target)
|
||||
: m_target{std::move(target)}
|
||||
{
|
||||
}
|
||||
void m1() override { m_target->m1(); }
|
||||
void m2() override { m_target->m2(); }
|
||||
|
||||
private:
|
||||
std::shared_ptr<Target> m_target;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -5,20 +5,20 @@ namespace t00025 {
|
||||
|
||||
class Target1 {
|
||||
public:
|
||||
void m1() { }
|
||||
void m2() { }
|
||||
void m1() {}
|
||||
void m2() {}
|
||||
};
|
||||
|
||||
class Target2 {
|
||||
public:
|
||||
void m1() { }
|
||||
void m2() { }
|
||||
void m1() {}
|
||||
void m2() {}
|
||||
};
|
||||
|
||||
template <typename T> class Proxy {
|
||||
public:
|
||||
Proxy(std::shared_ptr<T> target)
|
||||
: m_target {std::move(target)}
|
||||
: m_target{std::move(target)}
|
||||
{
|
||||
}
|
||||
void m1() { m_target->m1(); }
|
||||
|
||||
@@ -46,10 +46,14 @@ TEST_CASE("t00025", "[test-case][class]")
|
||||
REQUIRE_THAT(puml, IsClassTemplate("Proxy", "T"));
|
||||
REQUIRE_THAT(puml, IsInstantiation(_A("Proxy<T>"), _A("Proxy<Target1>")));
|
||||
REQUIRE_THAT(puml, IsInstantiation(_A("Proxy<T>"), _A("Proxy<Target2>")));
|
||||
REQUIRE_THAT(puml, IsAggregation(_A("ProxyHolder"), _A("Proxy<Target1>"), "+proxy1"));
|
||||
REQUIRE_THAT(puml, IsAggregation(_A("ProxyHolder"), _A("Proxy<Target2>"), "+proxy2"));
|
||||
REQUIRE_THAT(puml, !IsAggregation(_A("ProxyHolder"), _A("Target1"), "+proxy1"));
|
||||
REQUIRE_THAT(puml, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2"));
|
||||
REQUIRE_THAT(puml,
|
||||
IsAggregation(_A("ProxyHolder"), _A("Proxy<Target1>"), "+proxy1"));
|
||||
REQUIRE_THAT(puml,
|
||||
IsAggregation(_A("ProxyHolder"), _A("Proxy<Target2>"), "+proxy2"));
|
||||
REQUIRE_THAT(
|
||||
puml, !IsAggregation(_A("ProxyHolder"), _A("Target1"), "+proxy1"));
|
||||
REQUIRE_THAT(
|
||||
puml, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2"));
|
||||
|
||||
save_puml(
|
||||
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
|
||||
|
||||
Reference in New Issue
Block a user