From 69a94bcc43b32bc88540c2594638849e98ec07a7 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Wed, 5 Apr 2023 23:28:51 +0200 Subject: [PATCH] Extended t00044 with JSON checks --- src/class_diagram/model/class.cc | 6 ++--- .../visitor/translation_unit_visitor.cc | 2 ++ tests/t00044/test_case.h | 24 ++++++++++++------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/class_diagram/model/class.cc b/src/class_diagram/model/class.cc index 93c9d5e4..bc516aa6 100644 --- a/src/class_diagram/model/class.cc +++ b/src/class_diagram/model/class.cc @@ -74,7 +74,7 @@ std::string class_::full_name_no_ns() const ostr << name(); - render_template_params(ostr, using_namespace(), false); + render_template_params(ostr, using_namespace(), true); return ostr.str(); } @@ -115,9 +115,7 @@ int class_::calculate_template_specialization_match(const class_ &other) const { int res{0}; - const std::string left = name_and_ns(); - // TODO: handle variadic templates - if (left != other.name_and_ns()) { + if (name_and_ns() != other.name_and_ns()) { return res; } diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 9752286b..836ea600 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -1763,6 +1763,7 @@ translation_unit_visitor::process_template_specialization( { auto c_ptr{std::make_unique(config_.using_namespace())}; auto &template_instantiation = *c_ptr; + template_instantiation.is_template(true); // TODO: refactor to method get_qualified_name() auto qualified_name = cls->getQualifiedNameAsString(); @@ -2192,6 +2193,7 @@ std::unique_ptr translation_unit_visitor::build_template_instantiation( std::make_unique(config_.using_namespace()); auto &template_instantiation = *template_instantiation_ptr; + template_instantiation.is_template(true); std::string full_template_specialization_name = common::to_string( template_type.desugar(), diff --git a/tests/t00044/test_case.h b/tests/t00044/test_case.h index aea3c283..8ae83a72 100644 --- a/tests/t00044/test_case.h +++ b/tests/t00044/test_case.h @@ -41,18 +41,16 @@ TEST_CASE("t00044", "[test-case][class]") REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "Ret(Args...),A")); REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "void(int),bool")); - REQUIRE_THAT(puml, - IsClassTemplate( - "sink", "clanguml::t00044::signal_handler")); - - REQUIRE_THAT(puml, - IsInstantiation(_A("sink"), - _A("sink>"))); + REQUIRE_THAT( + puml, IsClassTemplate("sink", "signal_handler")); REQUIRE_THAT(puml, IsInstantiation( - _A("sink>"), - _A("sink>"))); + _A("sink"), _A("sink>"))); + + REQUIRE_THAT(puml, + IsInstantiation(_A("sink>"), + _A("sink>"))); REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A")); REQUIRE_THAT(puml, @@ -71,6 +69,14 @@ TEST_CASE("t00044", "[test-case][class]") using namespace json; + REQUIRE(IsClassTemplate(j, "sink")); + REQUIRE(IsClassTemplate(j, "signal_handler")); + REQUIRE(IsClassTemplate(j, "signal_handler")); + REQUIRE(IsClassTemplate(j, "signal_handler")); + REQUIRE(IsClassTemplate( + j, "sink>")); + REQUIRE(IsClass(j, "R")); + save_json(config.output_directory() + "/" + diagram->name + ".json", j); } }