diff --git a/src/class_diagram/generators/json/class_diagram_generator.cc b/src/class_diagram/generators/json/class_diagram_generator.cc index 340065ee..7c6f3697 100644 --- a/src/class_diagram/generators/json/class_diagram_generator.cc +++ b/src/class_diagram/generators/json/class_diagram_generator.cc @@ -247,18 +247,33 @@ void generator::generate(const package &p, nlohmann::json &parent) const void generator::generate(const class_ &c, nlohmann::json &parent) const { nlohmann::json object = c; + + if (!config().generate_fully_qualified_name()) + object["display_name"] = + common::generators::json::render_name(c.full_name_no_ns()); + parent["elements"].push_back(std::move(object)); } void generator::generate(const enum_ &e, nlohmann::json &parent) const { nlohmann::json object = e; + + if (!config().generate_fully_qualified_name()) + object["display_name"] = + common::generators::json::render_name(e.full_name_no_ns()); + parent["elements"].push_back(std::move(object)); } void generator::generate(const concept_ &c, nlohmann::json &parent) const { nlohmann::json object = c; + + if (!config().generate_fully_qualified_name()) + object["display_name"] = + common::generators::json::render_name(c.full_name_no_ns()); + parent["elements"].push_back(std::move(object)); } diff --git a/src/class_diagram/generators/mermaid/class_diagram_generator.cc b/src/class_diagram/generators/mermaid/class_diagram_generator.cc index f5bbb17d..436d60b4 100644 --- a/src/class_diagram/generators/mermaid/class_diagram_generator.cc +++ b/src/class_diagram/generators/mermaid/class_diagram_generator.cc @@ -281,7 +281,8 @@ void generator::generate_member( void generator::generate(const concept_ &c, std::ostream &ostr) const { - ostr << indent(1) << "class" << " " << c.alias(); + ostr << indent(1) << "class" + << " " << c.alias(); ostr << " {" << '\n'; ostr << indent(2) << "<>\n"; @@ -299,7 +300,8 @@ void generator::generate(const concept_ &c, std::ostream &ostr) const << fmt::format("\"({})\"\n", fmt::join(parameters, ",")); for (const auto &req : c.requires_statements()) { - ostr << indent(2) << fmt::format("\"{}\"\n", render_name(req)); + ostr << indent(2) + << fmt::format("\"{}\"\n", render_name(req, false)); } } diff --git a/src/class_diagram/generators/plantuml/class_diagram_generator.cc b/src/class_diagram/generators/plantuml/class_diagram_generator.cc index 0a5b6fa8..67016667 100644 --- a/src/class_diagram/generators/plantuml/class_diagram_generator.cc +++ b/src/class_diagram/generators/plantuml/class_diagram_generator.cc @@ -67,7 +67,7 @@ void generator::generate_alias(const class_ &c, std::ostream &ostr) const class_type = "abstract"; std::string full_name; - if (config().generate_fully_qualified_name()) + if (!config().generate_fully_qualified_name()) full_name = c.full_name_no_ns(); else full_name = c.full_name(); @@ -89,7 +89,7 @@ void generator::generate_alias(const enum_ &e, std::ostream &ostr) const { print_debug(e, ostr); - if (config().generate_fully_qualified_name()) + if (!config().generate_fully_qualified_name()) ostr << "enum" << " \"" << e.name(); else @@ -106,7 +106,7 @@ void generator::generate_alias(const concept_ &c, std::ostream &ostr) const { print_debug(c, ostr); - if (config().generate_fully_qualified_name()) + if (!config().generate_fully_qualified_name()) ostr << "class" << " \"" << c.full_name_no_ns(); else diff --git a/src/class_diagram/model/class_method.h b/src/class_diagram/model/class_method.h index da8fe5fa..6c556d57 100644 --- a/src/class_diagram/model/class_method.h +++ b/src/class_diagram/model/class_method.h @@ -46,7 +46,7 @@ public: ~class_method() override = default; - void update(const common::model::namespace_& un); + void update(const common::model::namespace_ &un); /** * @brief Method name including template parameters/arguments if any diff --git a/src/common/generators/json/generator.cc b/src/common/generators/json/generator.cc index e1fa27c5..a9577f00 100644 --- a/src/common/generators/json/generator.cc +++ b/src/common/generators/json/generator.cc @@ -18,18 +18,10 @@ #include "generator.h" -namespace clanguml::common::model { +namespace clanguml::common { +namespace model { using nlohmann::json; -namespace detail { -std::string render_name(std::string name) -{ - util::replace_all(name, "##", "::"); - - return name; -} -} // namespace detail - void to_json(nlohmann::json &j, const source_location &sl) { j = json{{"file", sl.file_relative()}, @@ -40,9 +32,10 @@ void to_json(nlohmann::json &j, const source_location &sl) void to_json(nlohmann::json &j, const element &c) { j = json{{"id", std::to_string(c.id())}, - {"name", detail::render_name(c.name())}, + {"name", common::generators::json::render_name(c.name())}, {"namespace", c.get_namespace().to_string()}, {"type", c.type_name()}, - {"display_name", detail::render_name(c.full_name(true))}}; + {"display_name", + common::generators::json::render_name(c.full_name(true))}}; if (const auto &comment = c.comment(); comment) j["comment"] = comment.value(); @@ -81,4 +74,16 @@ void to_json(nlohmann::json &j, const relationship &c) if (const auto &comment = c.comment(); comment) j["comment"] = comment.value(); } +} // namespace model + +namespace generators::json { + +std::string render_name(std::string name) +{ + util::replace_all(name, "##", "::"); + + return name; +} + +} // namespace generators::json } // namespace clanguml::common::model diff --git a/src/common/generators/json/generator.h b/src/common/generators/json/generator.h index dea6b3d4..3554b8f5 100644 --- a/src/common/generators/json/generator.h +++ b/src/common/generators/json/generator.h @@ -51,6 +51,8 @@ using clanguml::common::model::element; using clanguml::common::model::message_t; using clanguml::common::model::relationship_t; +std::string render_name(std::string name); + /** * @brief Base class for diagram generators * diff --git a/src/common/generators/mermaid/generator.cc b/src/common/generators/mermaid/generator.cc index ba882f46..9ceb6877 100644 --- a/src/common/generators/mermaid/generator.cc +++ b/src/common/generators/mermaid/generator.cc @@ -78,12 +78,14 @@ std::string indent(const unsigned level) return std::string(level * kIndentWidth, ' '); // NOLINT } -std::string render_name(std::string name) +std::string render_name(std::string name, bool round_brackets) { util::replace_all(name, "<", "<"); util::replace_all(name, ">", ">"); - util::replace_all(name, "(", "("); - util::replace_all(name, ")", ")"); + if (round_brackets) { + util::replace_all(name, "(", "("); + util::replace_all(name, ")", ")"); + } util::replace_all(name, "##", "::"); util::replace_all(name, "{", "{"); util::replace_all(name, "}", "}"); diff --git a/src/common/generators/mermaid/generator.h b/src/common/generators/mermaid/generator.h index 9333d8b4..2fc67662 100644 --- a/src/common/generators/mermaid/generator.h +++ b/src/common/generators/mermaid/generator.h @@ -44,7 +44,7 @@ std::string to_mermaid(message_t r); std::string indent(unsigned level); -std::string render_name(std::string name); +std::string render_name(std::string name, bool round_brackets = true); /** * @brief Base class for diagram generators diff --git a/src/config/config.cc b/src/config/config.cc index 603cfb8b..03b472ab 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -268,8 +268,8 @@ std::string inheritable_diagram_options::simplify_template_type( bool inheritable_diagram_options::generate_fully_qualified_name() const { - return generate_packages() && - (package_type() == package_type_t::kNamespace); + return (package_type() == package_type_t::kNamespace) && + !generate_packages(); } std::vector diagram::get_translation_units() const diff --git a/src/package_diagram/generators/mermaid/package_diagram_generator.cc b/src/package_diagram/generators/mermaid/package_diagram_generator.cc index 1962d8c6..e2beff79 100644 --- a/src/package_diagram/generators/mermaid/package_diagram_generator.cc +++ b/src/package_diagram/generators/mermaid/package_diagram_generator.cc @@ -89,7 +89,7 @@ void generator::generate(const package &p, std::ostream &ostr) const << "]\n"; if (p.is_deprecated()) - ostr << indent(1) << "%% <>"; + ostr << indent(1) << "%% <>\n"; } for (const auto &subpackage : p) { diff --git a/tests/t00002/test_case.h b/tests/t00002/test_case.h index 463c0675..7a237d5f 100644 --- a/tests/t00002/test_case.h +++ b/tests/t00002/test_case.h @@ -21,20 +21,12 @@ TEST_CASE("t00002") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t00002"); - - auto diagram = config.diagrams["t00002_class"]; - - REQUIRE(diagram->name == "t00002_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00002", "t00002_class"); REQUIRE(diagram->include().namespaces.size() == 1); - REQUIRE(diagram->exclude().namespaces.size() == 0); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00002_class"); - REQUIRE(model->should_include({"clanguml", "t00002"}, "A")); REQUIRE(!model->should_include({"std"}, "vector")); diff --git a/tests/t00003/test_case.h b/tests/t00003/test_case.h index 64f4eae0..b9e2897a 100644 --- a/tests/t00003/test_case.h +++ b/tests/t00003/test_case.h @@ -16,61 +16,48 @@ * limitations under the License. */ -// #include "../test_cases.h" - TEST_CASE("t00003") { using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t00003"); - - auto diagram = config.diagrams["t00003_class"]; - - REQUIRE(diagram->name == "t00003_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00003", "t00003_class"); REQUIRE(diagram->include().namespaces.size() == 1); - REQUIRE(diagram->exclude().namespaces.size() == 0); - auto model = generate_class_diagram(*db, diagram); + CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { + REQUIRE(IsClass(src, "A")); - REQUIRE(model->name() == "t00003_class"); + REQUIRE(!IsDependency(src, "A", "A")); - CHECK_CLASS_DIAGRAM(config, diagram, *model, - [](const auto &src) { - REQUIRE(IsClass(src, "A")); + REQUIRE(IsMethod(src, "A", "A")); + REQUIRE(IsMethod(src, "A", "A", "void", "A &&")); + REQUIRE(IsMethod(src, "A", "A", "void", "const A &")); - REQUIRE(!IsDependency(src, "A", "A")); + REQUIRE(IsMethod(src, "A", "~A")); - REQUIRE(IsMethod(src, "A", "A")); - REQUIRE(IsMethod(src, "A", "A", "void", "A &&")); - REQUIRE( - IsMethod(src, "A", "A", "void", "const A &")); + REQUIRE(IsMethod(src, "A", "basic_method")); + REQUIRE(IsMethod(src, "A", "static_method", "int")); + REQUIRE(IsMethod(src, "A", "const_method")); + REQUIRE(IsMethod(src, "A", "default_int", "int", "int i = 12")); + REQUIRE(IsMethod(src, "A", "default_string", "std::string", + "int i, std::string s = \"abc\"")); - REQUIRE(IsMethod(src, "A", "~A")); + REQUIRE(IsMethod( + src, "A", "size", "std::size_t")); - REQUIRE(IsMethod(src, "A", "basic_method")); - REQUIRE(IsMethod(src, "A", "static_method", "int")); - REQUIRE(IsMethod(src, "A", "const_method")); - REQUIRE( - IsMethod(src, "A", "default_int", "int", "int i = 12")); - REQUIRE(IsMethod(src, "A", "default_string", "std::string", - "int i, std::string s = \"abc\"")); + REQUIRE(IsMethod(src, "A", "protected_method")); + REQUIRE(IsMethod(src, "A", "private_method")); + REQUIRE(IsField(src, "A", "public_member", "int")); + REQUIRE(IsField(src, "A", "protected_member", "int")); + REQUIRE(IsField(src, "A", "private_member", "int")); + REQUIRE(IsField( + src, "A", "auto_member", "const unsigned long")); - REQUIRE(IsMethod( - src, "A", "size", "std::size_t")); - - REQUIRE(IsMethod(src, "A", "protected_method")); - REQUIRE(IsMethod(src, "A", "private_method")); - REQUIRE(IsField(src, "A", "public_member", "int")); - REQUIRE(IsField(src, "A", "protected_member", "int")); - REQUIRE(IsField(src, "A", "private_member", "int")); - REQUIRE(IsField( - src, "A", "auto_member", "const unsigned long")); - - REQUIRE(IsField(src, "A", "a_", "int")); - REQUIRE(IsField(src, "A", "b_", "int")); - REQUIRE(IsField(src, "A", "c_", "int")); - }); + REQUIRE(IsField(src, "A", "a_", "int")); + REQUIRE(IsField(src, "A", "b_", "int")); + REQUIRE(IsField(src, "A", "c_", "int")); + }); } \ No newline at end of file diff --git a/tests/t00004/test_case.h b/tests/t00004/test_case.h index 71a24a4a..f13bcf59 100644 --- a/tests/t00004/test_case.h +++ b/tests/t00004/test_case.h @@ -20,46 +20,38 @@ TEST_CASE("t00004") { using namespace clanguml::test; - auto [config, db] = load_config("t00004"); - - auto diagram = config.diagrams["t00004_class"]; - - REQUIRE(diagram->name == "t00004_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00004", "t00004_class"); REQUIRE(diagram->include().namespaces.size() == 1); REQUIRE(diagram->exclude().namespaces.size() == 0); - auto model = generate_class_diagram(*db, diagram); + CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { + REQUIRE(IsClass(src, "A")); + REQUIRE(IsClass(src, "A::AA")); + REQUIRE(IsClass(src, "A::AA::AAA")); + REQUIRE(IsEnum(src, "B::AA")); + REQUIRE(IsEnum(src, "A::AA::Lights")); + REQUIRE(IsInnerClass(src, "A", "A::AA")); + REQUIRE(IsInnerClass(src, "A::AA", "A::AA::AAA")); + REQUIRE(IsInnerClass(src, "A::AA", "A::AA::Lights")); - REQUIRE(model->name() == "t00004_class"); + REQUIRE(IsMethod(src, "A", "foo")); + REQUIRE(IsMethod(src, "A", "foo2")); - CHECK_CLASS_DIAGRAM(config, diagram, *model, - [](const auto &src) { - REQUIRE(IsClass(src, "A")); - REQUIRE(IsClass(src, "A::AA")); - REQUIRE(IsClass(src, "A::AA::AAA")); - REQUIRE(IsEnum(src, "B::AA")); - REQUIRE(IsEnum(src, "A::AA::Lights")); - REQUIRE(IsInnerClass(src, "A", "A::AA")); - REQUIRE(IsInnerClass(src, "A::AA", "A::AA::AAA")); - REQUIRE(IsInnerClass(src, "A::AA", "A::AA::Lights")); + REQUIRE(IsClassTemplate(src, "C")); + REQUIRE(IsInnerClass(src, "C", "C::AA")); + REQUIRE(IsInnerClass(src, "C::AA", "C::AA::AAA")); + REQUIRE(IsInnerClass(src, "C", "C::CC")); + REQUIRE(IsInnerClass(src, "C::AA", "C::AA::CCC")); - REQUIRE(IsMethod(src, "A", "foo")); - REQUIRE(IsMethod(src, "A", "foo2")); + REQUIRE(IsInnerClass(src, "C", "C::B")); + REQUIRE(IsAggregation(src, "C", "C::B", "b_int")); + REQUIRE(!IsInnerClass(src, "C", "C::B")); + REQUIRE(IsInstantiation(src, "C::B", "C::B")); - REQUIRE(IsClassTemplate(src, "C")); - REQUIRE(IsInnerClass(src, "C", "C::AA")); - REQUIRE(IsInnerClass(src, "C::AA", "C::AA::AAA")); - REQUIRE(IsInnerClass(src, "C", "C::CC")); - REQUIRE(IsInnerClass(src, "C::AA", "C::AA::CCC")); - - REQUIRE(IsInnerClass(src, "C", "C::B")); - REQUIRE(IsAggregation(src, "C", "C::B", "b_int")); - REQUIRE(!IsInnerClass(src, "C", "C::B")); - REQUIRE(IsInstantiation(src, "C::B", "C::B")); - - REQUIRE(IsClass(src, "detail::D")); - REQUIRE(IsClass(src, "detail::D::DD")); - REQUIRE(IsEnum(src, "detail::D::AA")); - }); + REQUIRE(IsClass(src, {"detail", "D"})); + REQUIRE(IsClass(src, {"detail", "D::DD"})); + REQUIRE(IsEnum(src, {"detail", "D::AA"})); + }); } \ No newline at end of file diff --git a/tests/t00005/test_case.h b/tests/t00005/test_case.h index 1a6a5aff..44e60a26 100644 --- a/tests/t00005/test_case.h +++ b/tests/t00005/test_case.h @@ -20,46 +20,38 @@ TEST_CASE("t00005") { using namespace clanguml::test; - auto [config, db] = load_config("t00005"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00005", "t00005_class"); - auto diagram = config.diagrams["t00005_class"]; + CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { + REQUIRE(IsClass(src, "A")); + REQUIRE(IsClass(src, "B")); + REQUIRE(IsClass(src, "C")); + REQUIRE(IsClass(src, "D")); + REQUIRE(IsClass(src, "E")); + REQUIRE(IsClass(src, "F")); + REQUIRE(IsClass(src, "G")); + REQUIRE(IsClass(src, "H")); + REQUIRE(IsClass(src, "I")); + REQUIRE(IsClass(src, "J")); + REQUIRE(IsClass(src, "K")); + REQUIRE(IsClass(src, "R")); - REQUIRE(diagram->name == "t00005_class"); + REQUIRE((IsField(src, "R", "some_int", "int"))); + REQUIRE((IsField(src, "R", "some_int_pointer", "int *"))); + REQUIRE( + (IsField(src, "R", "some_int_pointer_pointer", "int **"))); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00005_class"); - - CHECK_CLASS_DIAGRAM(config, diagram, *model, - [](const auto &src) { - REQUIRE(IsClass(src, "A")); - REQUIRE(IsClass(src, "B")); - REQUIRE(IsClass(src, "C")); - REQUIRE(IsClass(src, "D")); - REQUIRE(IsClass(src, "E")); - REQUIRE(IsClass(src, "F")); - REQUIRE(IsClass(src, "G")); - REQUIRE(IsClass(src, "H")); - REQUIRE(IsClass(src, "I")); - REQUIRE(IsClass(src, "J")); - REQUIRE(IsClass(src, "K")); - REQUIRE(IsClass(src, "R")); - - REQUIRE((IsField(src, "R", "some_int", "int"))); - REQUIRE((IsField(src, "R", "some_int_pointer", "int *"))); - REQUIRE((IsField( - src, "R", "some_int_pointer_pointer", "int **"))); - - REQUIRE(IsAggregation(src, "R", "A", "a")); - REQUIRE(IsAssociation(src, "R", "B", "b")); - REQUIRE(IsAssociation(src, "R", "C", "c")); - REQUIRE(IsAssociation(src, "R", "D", "d")); - REQUIRE(IsAssociation(src, "R", "E", "e")); - REQUIRE(IsAggregation(src, "R", "F", "f")); - REQUIRE(IsAssociation(src, "R", "G", "g")); - REQUIRE(IsAssociation(src, "R", "H", "h")); - REQUIRE(IsAssociation(src, "R", "I", "i")); - REQUIRE(IsAssociation(src, "R", "J", "j")); - REQUIRE(IsAssociation(src, "R", "K", "k")); - }); + REQUIRE(IsAggregation(src, "R", "A", "a")); + REQUIRE(IsAssociation(src, "R", "B", "b")); + REQUIRE(IsAssociation(src, "R", "C", "c")); + REQUIRE(IsAssociation(src, "R", "D", "d")); + REQUIRE(IsAssociation(src, "R", "E", "e")); + REQUIRE(IsAggregation(src, "R", "F", "f")); + REQUIRE(IsAssociation(src, "R", "G", "g")); + REQUIRE(IsAssociation(src, "R", "H", "h")); + REQUIRE(IsAssociation(src, "R", "I", "i")); + REQUIRE(IsAssociation(src, "R", "J", "j")); + REQUIRE(IsAssociation(src, "R", "K", "k")); + }); } \ No newline at end of file diff --git a/tests/t00006/test_case.h b/tests/t00006/test_case.h index 15372092..e56e49ea 100644 --- a/tests/t00006/test_case.h +++ b/tests/t00006/test_case.h @@ -20,54 +20,45 @@ TEST_CASE("t00006") { using namespace clanguml::test; - auto [config, db] = load_config("t00006"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00006", "t00006_class"); - auto diagram = config.diagrams["t00006_class"]; + CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { + REQUIRE(IsClass(src, "A")); + REQUIRE(IsClass(src, "B")); + REQUIRE(IsClass(src, "C")); + REQUIRE(IsClass(src, "D")); + REQUIRE(IsClass(src, "E")); + REQUIRE(IsClass(src, "F")); + REQUIRE(IsClass(src, "G")); + REQUIRE(IsClass(src, "H")); + REQUIRE(IsClass(src, "I")); + REQUIRE(IsClass(src, "J")); + REQUIRE(IsClass(src, "K")); + REQUIRE(IsClass(src, "L")); + REQUIRE(IsClass(src, "M")); + REQUIRE(IsClass(src, "N")); + REQUIRE(IsClass(src, "NN")); + REQUIRE(IsClass(src, "NNN")); - REQUIRE(diagram->name == "t00006_class"); + REQUIRE( + IsInstantiation(src, "custom_container", "custom_container")); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00006_class"); - - CHECK_CLASS_DIAGRAM(config, diagram, *model, - [](const auto &src) { - REQUIRE(IsClass(src, "A")); - REQUIRE(IsClass(src, "B")); - REQUIRE(IsClass(src, "C")); - REQUIRE(IsClass(src, "D")); - REQUIRE(IsClass(src, "E")); - REQUIRE(IsClass(src, "F")); - REQUIRE(IsClass(src, "G")); - REQUIRE(IsClass(src, "H")); - REQUIRE(IsClass(src, "I")); - REQUIRE(IsClass(src, "J")); - REQUIRE(IsClass(src, "K")); - REQUIRE(IsClass(src, "L")); - REQUIRE(IsClass(src, "M")); - REQUIRE(IsClass(src, "N")); - REQUIRE(IsClass(src, "NN")); - REQUIRE(IsClass(src, "NNN")); - - REQUIRE(IsInstantiation( - src, "custom_container", "custom_container")); - - REQUIRE(IsAggregation(src, "R", "A", "a")); - REQUIRE(IsAssociation(src, "R", "B", "b")); - REQUIRE(IsAggregation(src, "R", "C", "c")); - REQUIRE(IsAssociation(src, "R", "D", "d")); - REQUIRE( - IsAggregation(src, "R", "custom_container", "e")); - REQUIRE(IsAggregation(src, "R", "F", "f")); - REQUIRE(IsAssociation(src, "R", "G", "g")); - REQUIRE(IsAggregation(src, "R", "H", "h")); - REQUIRE(IsAssociation(src, "R", "I", "i")); - REQUIRE(IsAggregation(src, "R", "J", "j")); - REQUIRE(IsAssociation(src, "R", "K", "k")); - REQUIRE(IsAggregation(src, "R", "L", "lm")); - REQUIRE(IsAggregation(src, "R", "M", "lm")); - REQUIRE(IsAggregation(src, "R", "N", "ns")); - REQUIRE(IsAggregation(src, "R", "NN", "ns")); - REQUIRE(IsAggregation(src, "R", "NNN", "ns")); - }); + REQUIRE(IsAggregation(src, "R", "A", "a")); + REQUIRE(IsAssociation(src, "R", "B", "b")); + REQUIRE(IsAggregation(src, "R", "C", "c")); + REQUIRE(IsAssociation(src, "R", "D", "d")); + REQUIRE(IsAggregation(src, "R", "custom_container", "e")); + REQUIRE(IsAggregation(src, "R", "F", "f")); + REQUIRE(IsAssociation(src, "R", "G", "g")); + REQUIRE(IsAggregation(src, "R", "H", "h")); + REQUIRE(IsAssociation(src, "R", "I", "i")); + REQUIRE(IsAggregation(src, "R", "J", "j")); + REQUIRE(IsAssociation(src, "R", "K", "k")); + REQUIRE(IsAggregation(src, "R", "L", "lm")); + REQUIRE(IsAggregation(src, "R", "M", "lm")); + REQUIRE(IsAggregation(src, "R", "N", "ns")); + REQUIRE(IsAggregation(src, "R", "NN", "ns")); + REQUIRE(IsAggregation(src, "R", "NNN", "ns")); + }); } \ No newline at end of file diff --git a/tests/t00007/test_case.h b/tests/t00007/test_case.h index 7de1274d..a8bc596e 100644 --- a/tests/t00007/test_case.h +++ b/tests/t00007/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00007") { using namespace clanguml::test; - auto [config, db] = load_config("t00007"); - - auto diagram = config.diagrams["t00007_class"]; - - REQUIRE(diagram->name == "t00007_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00007_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00007", "t00007_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00008/test_case.h b/tests/t00008/test_case.h index 6ca63719..fb90fdc3 100644 --- a/tests/t00008/test_case.h +++ b/tests/t00008/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00008") { using namespace clanguml::test; - auto [config, db] = load_config("t00008"); - - auto diagram = config.diagrams["t00008_class"]; - - REQUIRE(diagram->name == "t00008_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00008_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00008", "t00008_class"); CHECK_CLASS_DIAGRAM( config, diagram, *model, diff --git a/tests/t00009/test_case.h b/tests/t00009/test_case.h index 10667f94..9fdb667d 100644 --- a/tests/t00009/test_case.h +++ b/tests/t00009/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00009") { using namespace clanguml::test; - auto [config, db] = load_config("t00009"); - - auto diagram = config.diagrams["t00009_class"]; - - REQUIRE(diagram->name == "t00009_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00009_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00009", "t00009_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "A")); diff --git a/tests/t00010/test_case.h b/tests/t00010/test_case.h index e1d15a9c..6dfb726e 100644 --- a/tests/t00010/test_case.h +++ b/tests/t00010/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00010") { using namespace clanguml::test; - auto [config, db] = load_config("t00010"); - - auto diagram = config.diagrams["t00010_class"]; - - REQUIRE(diagram->name == "t00010_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00010_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00010", "t00010_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "A")); diff --git a/tests/t00011/test_case.h b/tests/t00011/test_case.h index 115c41e6..cd05c673 100644 --- a/tests/t00011/test_case.h +++ b/tests/t00011/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00011") { using namespace clanguml::test; - auto [config, db] = load_config("t00011"); - - auto diagram = config.diagrams["t00011_class"]; - - REQUIRE(diagram->name == "t00011_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00011_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00011", "t00011_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00012/test_case.h b/tests/t00012/test_case.h index b2bba300..02a6af31 100644 --- a/tests/t00012/test_case.h +++ b/tests/t00012/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00012") { using namespace clanguml::test; - auto [config, db] = load_config("t00012"); - - auto diagram = config.diagrams["t00012_class"]; - - REQUIRE(diagram->name == "t00012_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00012_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00012", "t00012_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "A")); diff --git a/tests/t00013/test_case.h b/tests/t00013/test_case.h index f97c1cb8..7f96873f 100644 --- a/tests/t00013/test_case.h +++ b/tests/t00013/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00013") { using namespace clanguml::test; - auto [config, db] = load_config("t00013"); - - auto diagram = config.diagrams["t00013_class"]; - - REQUIRE(diagram->name == "t00013_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00013_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00013", "t00013_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00014/test_case.h b/tests/t00014/test_case.h index bc9c1f97..0829306f 100644 --- a/tests/t00014/test_case.h +++ b/tests/t00014/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00014") { using namespace clanguml::test; - auto [config, db] = load_config("t00014"); - - auto diagram = config.diagrams["t00014_class"]; - - REQUIRE(diagram->name == "t00014_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00014_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00014", "t00014_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!src.contains("type-parameter-")); @@ -126,249 +119,4 @@ TEST_CASE("t00014") REQUIRE(IsDependency(src, "R", "A")); REQUIRE(IsDependency(src, "R", "A")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - REQUIRE_THAT(src, IsClassTemplate("A", "T,P")); - REQUIRE_THAT(src, IsClassTemplate("A", "T,std::string")); - REQUIRE_THAT( - src, IsClassTemplate("A", "T,std::unique_ptr")); - REQUIRE_THAT(src, IsClassTemplate("A", "double,T")); - // TODO: Figure out how to handle the same templates with different - // template - // parameter names - // REQUIRE_THAT(puml, !IsClassTemplate("A", "long,U")); - REQUIRE_THAT(src, IsClassTemplate("A", "long,T")); - REQUIRE_THAT(src, IsClassTemplate("A", "long,bool")); - REQUIRE_THAT(src, IsClassTemplate("A", "double,bool")); - REQUIRE_THAT(src, IsClassTemplate("A", "long,float")); - REQUIRE_THAT(src, IsClassTemplate("A", "double,float")); - REQUIRE_THAT(src, IsClassTemplate("A", "bool,std::string")); - REQUIRE_THAT(src, IsClassTemplate("A", "std::string,std::string")); - REQUIRE_THAT(src, IsClassTemplate("A", "char,std::string")); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClassTemplate("R", "T")); - - REQUIRE_THAT(src, IsField("bapair", "PairPairBA")); - REQUIRE_THAT(src, IsField("abool", "APtr")); - REQUIRE_THAT(src, IsField("aboolfloat", - "AAPtr")); REQUIRE_THAT(src, IsField("afloat", - "ASharedPtr")); REQUIRE_THAT( src, IsField("boolstring", - "A")); REQUIRE_THAT(src, IsField("floatstring", - "AStringPtr")); REQUIRE_THAT(src, IsField("atfloat", - "AAPtr")); - - REQUIRE_THAT(src, IsField("intstring", "AIntString")); - REQUIRE_THAT(src, IsField("stringstring", - "AStringString")); REQUIRE_THAT(src, IsField("bstringstring", - "BStringString")); - - REQUIRE_THAT(src, IsField("bs", "BVector")); - - REQUIRE_THAT(src, IsField("cb", - "SimpleCallback")); #if LLVM_VERSION_MAJOR >= 16 REQUIRE_THAT( - src, IsField("gcb", "GenericCallback")); - #else - REQUIRE_THAT( - src, IsField("gcb", - "GenericCallback")); #endif REQUIRE_THAT(src, - IsField("vcb", "VoidCallback")); - - REQUIRE_THAT( - src, !IsClassTemplate("std::std::function", - "void(T...,int),int)")); - - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), - _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - // REQUIRE_THAT(puml, !IsInstantiation(_A("A"), - // _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("A"), - _A("A"))); REQUIRE_THAT(src, - IsInstantiation(_A("A"), - _A("A"))); REQUIRE_THAT(src, IsInstantiation( - _A("A"), _A("A"))); - - REQUIRE_THAT(src, - IsInstantiation(_A("A>"), - _A("A>"))); - REQUIRE_THAT(src, - IsInstantiation( - _A("A"), _A("A>"))); - - REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "+vps")); - REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "-bapair")); - REQUIRE_THAT( - src, IsAggregation(_A("R"), _A("A"), - "-aboolfloat")); REQUIRE_THAT( src, IsAggregation(_A("R"), - _A("A"), "-bapair")); REQUIRE_THAT(src, IsAggregation(_A("R"), - _A("A"), "-aboolfloat")); REQUIRE_THAT( src, - IsAggregation(_A("R"), _A("A"), "-atfloat")); REQUIRE_THAT( - src, IsAggregation(_A("R"), _A("A"), - "-atfloat")); REQUIRE_THAT( src, IsAssociation(_A("R"), - _A("A"), "-afloat")); REQUIRE_THAT(src, IsAggregation( - _A("R"), _A("A"), "-boolstring")); - REQUIRE_THAT(src, - IsAggregation(_A("R"), - _A("A>"), - "-floatstring")); REQUIRE_THAT(src, IsDependency(_A("R"), - _A("A"))); REQUIRE_THAT( src, IsDependency(_A("R"), - _A("A"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A>")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "A")); - REQUIRE(json::IsClass(j, "B")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsField; - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A>"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - // TODO: Figure out how to handle the same templates with different - // template - // parameter names - // REQUIRE_THAT(puml, !IsClass("A", "long,U")); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsField("bapair", "PairPairBA")); - REQUIRE_THAT(src, IsField("abool", "APtr")); - REQUIRE_THAT(src, IsField("aboolfloat", - "AAPtr")); REQUIRE_THAT(src, IsField("afloat", - "ASharedPtr")); REQUIRE_THAT( src, IsField("boolstring", - "A")); REQUIRE_THAT(src, IsField("floatstring", - "AStringPtr")); REQUIRE_THAT(src, IsField("atfloat", - "AAPtr")); - - REQUIRE_THAT(src, IsField("intstring", "AIntString")); - REQUIRE_THAT(src, IsField("stringstring", - "AStringString")); REQUIRE_THAT(src, IsField("bstringstring", - "BStringString")); - - REQUIRE_THAT(src, IsField("bs", "BVector")); - - REQUIRE_THAT(src, IsField("cb", - "SimpleCallback")); #if LLVM_VERSION_MAJOR >= 16 REQUIRE_THAT( - src, IsField("gcb", "GenericCallback")); - #else - REQUIRE_THAT( - src, IsField("gcb", - "GenericCallback")); #endif REQUIRE_THAT(src, - IsField("vcb", "VoidCallback")); - - REQUIRE_THAT( - src, !IsClassTemplate("std::std::function", - "void(T...,int),int)")); - - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), - _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - // REQUIRE_THAT(puml, !IsInstantiation(_A("A"), - // _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("A"), - _A("A"))); REQUIRE_THAT(src, - IsInstantiation(_A("A"), - _A("A"))); REQUIRE_THAT(src, IsInstantiation( - _A("A"), _A("A"))); - - REQUIRE_THAT(src, - IsInstantiation(_A("A>"), - _A("A>"))); - REQUIRE_THAT(src, - IsInstantiation( - _A("A"), _A("A>"))); - - REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "+vps")); - REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "-bapair")); - REQUIRE_THAT( - src, IsAggregation(_A("R"), _A("A"), - "-aboolfloat")); REQUIRE_THAT( src, IsAggregation(_A("R"), - _A("A"), "-bapair")); REQUIRE_THAT(src, IsAggregation(_A("R"), - _A("A"), "-aboolfloat")); REQUIRE_THAT( src, - IsAggregation(_A("R"), _A("A"), "-atfloat")); REQUIRE_THAT( - src, IsAggregation(_A("R"), _A("A"), - "-atfloat")); REQUIRE_THAT( src, IsAssociation(_A("R"), - _A("A"), "-afloat")); REQUIRE_THAT(src, IsAggregation( - _A("R"), _A("A"), "-boolstring")); - REQUIRE_THAT(src, - IsAggregation(_A("R"), - _A("A>"), - "-floatstring")); #if !defined(__APPLE__) - // TODO(#176) - REQUIRE_THAT(src, IsDependency(_A("R"), - _A("A"))); REQUIRE_THAT( src, IsDependency(_A("R"), - _A("A"))); #endif - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t00015/test_case.h b/tests/t00015/test_case.h index 9dd602f2..34f32410 100644 --- a/tests/t00015/test_case.h +++ b/tests/t00015/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00015") { using namespace clanguml::test; - auto [config, db] = load_config("t00015"); - - auto diagram = config.diagrams["t00015_class"]; - - REQUIRE(diagram->name == "t00015_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00015_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00015", "t00015_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "ns1::A")); diff --git a/tests/t00016/test_case.h b/tests/t00016/test_case.h index 161597e8..a4e0dfbc 100644 --- a/tests/t00016/test_case.h +++ b/tests/t00016/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00016") { using namespace clanguml::test; - auto [config, db] = load_config("t00016"); - - auto diagram = config.diagrams["t00016_class"]; - - REQUIRE(diagram->name == "t00016_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00016_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00016", "t00016_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "is_numeric")); diff --git a/tests/t00017/test_case.h b/tests/t00017/test_case.h index 644aebec..bf61fb62 100644 --- a/tests/t00017/test_case.h +++ b/tests/t00017/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00017") { using namespace clanguml::test; - auto [config, db] = load_config("t00017"); - - auto diagram = config.diagrams["t00017_class"]; - - REQUIRE(diagram->name == "t00017_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00017_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00017", "t00017_class"); CHECK_CLASS_DIAGRAM( config, diagram, *model, diff --git a/tests/t00018/test_case.h b/tests/t00018/test_case.h index 7424462f..5ab46a7e 100644 --- a/tests/t00018/test_case.h +++ b/tests/t00018/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00018") { using namespace clanguml::test; - auto [config, db] = load_config("t00018"); - - auto diagram = config.diagrams["t00018_class"]; - - REQUIRE(diagram->name == "t00018_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00018_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00018", "t00018_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "widget")); diff --git a/tests/t00019/test_case.h b/tests/t00019/test_case.h index 7d17aa32..ceab5e62 100644 --- a/tests/t00019/test_case.h +++ b/tests/t00019/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00019") { using namespace clanguml::test; - auto [config, db] = load_config("t00019"); - - auto diagram = config.diagrams["t00019_class"]; - - REQUIRE(diagram->name == "t00019_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00019_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00019", "t00019_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "Base")); diff --git a/tests/t00020/test_case.h b/tests/t00020/test_case.h index 6657869d..bef7d8c8 100644 --- a/tests/t00020/test_case.h +++ b/tests/t00020/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00020") { using namespace clanguml::test; - auto [config, db] = load_config("t00020"); - - auto diagram = config.diagrams["t00020_class"]; - - REQUIRE(diagram->name == "t00020_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00020_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00020", "t00020_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsAbstractClass(src, "AbstractFactory")); @@ -41,55 +34,4 @@ TEST_CASE("t00020") REQUIRE(IsClass(src, "Factory1")); REQUIRE(IsClass(src, "Factory2")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(src, IsAbstractClass(_A("ProductA"))); - REQUIRE_THAT(src, IsAbstractClass(_A("ProductB"))); - REQUIRE_THAT(src, IsClass(_A("ProductA1"))); - REQUIRE_THAT(src, IsClass(_A("ProductA2"))); - REQUIRE_THAT(src, IsClass(_A("ProductB1"))); - REQUIRE_THAT(src, IsClass(_A("ProductB2"))); - REQUIRE_THAT(src, IsAbstractClass(_A("AbstractFactory"))); - REQUIRE_THAT(src, IsClass(_A("Factory1"))); - REQUIRE_THAT(src, IsClass(_A("Factory2"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "ProductA1")); - REQUIRE(IsClass(j, "ProductA2")); - REQUIRE(IsClass(j, "ProductB1")); - REQUIRE(IsClass(j, "ProductB2")); - REQUIRE(IsAbstractClass(j, "AbstractFactory")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsAbstractClass; - - REQUIRE_THAT(src, IsAbstractClass(_A("ProductA"))); - REQUIRE_THAT(src, IsAbstractClass(_A("ProductB"))); - REQUIRE_THAT(src, IsClass(_A("ProductA1"))); - REQUIRE_THAT(src, IsClass(_A("ProductA2"))); - REQUIRE_THAT(src, IsClass(_A("ProductB1"))); - REQUIRE_THAT(src, IsClass(_A("ProductB2"))); - REQUIRE_THAT(src, IsAbstractClass(_A("AbstractFactory"))); - REQUIRE_THAT(src, IsClass(_A("Factory1"))); - REQUIRE_THAT(src, IsClass(_A("Factory2"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00021/test_case.h b/tests/t00021/test_case.h index a9c511b6..8b99c173 100644 --- a/tests/t00021/test_case.h +++ b/tests/t00021/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00021") { using namespace clanguml::test; - auto [config, db] = load_config("t00021"); - - auto diagram = config.diagrams["t00021_class"]; - - REQUIRE(diagram->name == "t00021_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00021_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00021", "t00021_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsAbstractClass(src, "Item")); diff --git a/tests/t00022/test_case.h b/tests/t00022/test_case.h index af819cb7..cf060684 100644 --- a/tests/t00022/test_case.h +++ b/tests/t00022/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00022") { using namespace clanguml::test; - auto [config, db] = load_config("t00022"); - - auto diagram = config.diagrams["t00022_class"]; - - REQUIRE(diagram->name == "t00022_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00022_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00022", "t00022_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A1")); diff --git a/tests/t00023/test_case.h b/tests/t00023/test_case.h index 0e49a4fb..14da15a7 100644 --- a/tests/t00023/test_case.h +++ b/tests/t00023/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00023") { using namespace clanguml::test; - auto [config, db] = load_config("t00023"); - - auto diagram = config.diagrams["t00023_class"]; - - REQUIRE(diagram->name == "t00023_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00023_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00023", "t00023_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsAbstractClass(src, "Strategy")); diff --git a/tests/t00024/test_case.h b/tests/t00024/test_case.h index 7ecd61c1..c0f79c35 100644 --- a/tests/t00024/test_case.h +++ b/tests/t00024/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00024") { using namespace clanguml::test; - auto [config, db] = load_config("t00024"); - - auto diagram = config.diagrams["t00024_class"]; - - REQUIRE(diagram->name == "t00024_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00024_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00024", "t00024_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "Target1")); diff --git a/tests/t00025/test_case.h b/tests/t00025/test_case.h index dbe33d13..c6b466a6 100644 --- a/tests/t00025/test_case.h +++ b/tests/t00025/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00025") { using namespace clanguml::test; - auto [config, db] = load_config("t00025"); - - auto diagram = config.diagrams["t00025_class"]; - - REQUIRE(diagram->name == "t00025_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00025_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00025", "t00025_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "Target1")); diff --git a/tests/t00026/test_case.h b/tests/t00026/test_case.h index 90ecca47..92349753 100644 --- a/tests/t00026/test_case.h +++ b/tests/t00026/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00026") { using namespace clanguml::test; - auto [config, db] = load_config("t00026"); - - auto diagram = config.diagrams["t00026_class"]; - - REQUIRE(diagram->name == "t00026_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00026_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00026", "t00026_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "Memento")); diff --git a/tests/t00027/test_case.h b/tests/t00027/test_case.h index afc9133f..71afe72e 100644 --- a/tests/t00027/test_case.h +++ b/tests/t00027/test_case.h @@ -19,16 +19,9 @@ TEST_CASE("t00027") { using namespace clanguml::test; - - auto [config, db] = load_config("t00027"); - auto diagram = config.diagrams["t00027_class"]; - - REQUIRE(diagram->name == "t00027_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00027_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00027", "t00027_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsAbstractClass(src, "Shape")); @@ -37,7 +30,8 @@ TEST_CASE("t00027") REQUIRE(IsClassTemplate(src, "Line...>")); REQUIRE(IsInstantiation(src, "Line...>", "Line")); REQUIRE(IsInstantiation(src, "Line...>", "Line")); - REQUIRE(IsAggregation(src, "Window", "Text", "description")); + REQUIRE( + IsAggregation(src, "Window", "Text", "description")); REQUIRE(IsInstantiation(src, "Line...>", "Line")); REQUIRE(IsInstantiation(src, "Line...>", "Line")); @@ -52,80 +46,4 @@ TEST_CASE("t00027") REQUIRE( IsAggregation(src, "Window", "Text", "description")); }); -/* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(src, IsAbstractClass(_A("Shape"))); - REQUIRE_THAT(src, IsAbstractClass(_A("ShapeDecorator"))); - REQUIRE_THAT(src, IsClassTemplate("Line", "T<>...")); - REQUIRE_THAT(src, IsClassTemplate("Text", "T<>...")); - REQUIRE_THAT( - src, IsInstantiation(_A("Line...>"), _A("Line"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Line...>"), _A("Line"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Text...>"), _A("Text"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Text...>"), _A("Text"))); - - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Line"), "+border")); - REQUIRE_THAT( - src, IsAggregation(_A("Window"), _A("Line"), "+divider")); - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Text"), "+title")); - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Text"), "+description")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsAbstractClass(j, "Shape")); - REQUIRE(IsAbstractClass(j, "ShapeDecorator")); - - REQUIRE(IsClassTemplate(j, "Line...>")); - REQUIRE(IsInstantiation(j, "Line...>", "Line")); - REQUIRE(IsInstantiation(j, "Line...>", "Line")); - REQUIRE(IsAggregation(j, "Window", "Text", "description")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsAbstractClass; - - REQUIRE_THAT(src, IsAbstractClass(_A("Shape"))); - REQUIRE_THAT(src, IsAbstractClass(_A("ShapeDecorator"))); - REQUIRE_THAT(src, IsClass(_A("Line...>"))); - REQUIRE_THAT(src, IsClass(_A("Text...>"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Line...>"), _A("Line"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Line...>"), _A("Line"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Text...>"), _A("Text"))); - REQUIRE_THAT( - src, IsInstantiation(_A("Text...>"), _A("Text"))); - - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Line"), "+border")); - REQUIRE_THAT( - src, IsAggregation(_A("Window"), _A("Line"), "+divider")); - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Text"), "+title")); - REQUIRE_THAT(src, - IsAggregation(_A("Window"), _A("Text"), "+description")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t00028/test_case.h b/tests/t00028/test_case.h index 6a1980ad..ad2860b0 100644 --- a/tests/t00028/test_case.h +++ b/tests/t00028/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00028") { using namespace clanguml::test; - auto [config, db] = load_config("t00028"); - - auto diagram = config.diagrams["t00028_class"]; - - REQUIRE(diagram->name == "t00028_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00028_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00028", "t00028_class"); CHECK_CLASS_DIAGRAM( config, diagram, *model, @@ -63,80 +56,4 @@ note.)"; REQUIRE(HasNote(src, "R", "left", "R contains an instance of A.")); REQUIRE(!HasNote(src, "G", "left", "G class note.")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClassTemplate("E", "T")); - REQUIRE_THAT(src, IsEnum(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(src, HasNote(_A("A"), "top", "A class note.")); - REQUIRE_THAT(src, HasNote(_A("B"), "left", "B class note.")); - REQUIRE_THAT(src, HasNote(_A("C"), "bottom", "C class note.")); - const auto d_note = R"( - D - class - note.)"; - REQUIRE_THAT(src, HasNote(_A("D"), "left", d_note)); - REQUIRE_THAT( - src, HasNote(_A("E"), "left", "E template class note.")); - REQUIRE_THAT(src, HasNote(_A("F"), "bottom", "F enum note.")); - REQUIRE_THAT(src, !HasNote(_A("G"), "left", "G class note.")); - REQUIRE_THAT(src, HasNote(_A("R"), "right", "R class note.")); - REQUIRE_THAT(src, - HasMemberNote( - _A("R"), "aaa", "left", "R contains an instance of A.")); - REQUIRE_THAT( - src, !HasMemberNote(_A("R"), "bbb", "right", "R class note.")); - REQUIRE_THAT( - src, HasMemberNote(_A("R"), "ccc", "left", "Reference to C.")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::HasNote; - using mermaid::IsEnum; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsEnum(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(src, HasNote(_A("A"), "top", "A class note.")); - REQUIRE_THAT(src, HasNote(_A("B"), "left", "B class note.")); - REQUIRE_THAT(src, HasNote(_A("C"), "bottom", "C class note.")); - const auto d_note = R"( - D - class - note.)"; - REQUIRE_THAT(src, HasNote(_A("D"), "left", d_note)); - REQUIRE_THAT( - src, HasNote(_A("E"), "left", "E template class note.")); - REQUIRE_THAT(src, HasNote(_A("F"), "bottom", "F enum note.")); - REQUIRE_THAT(src, !HasNote(_A("G"), "left", "G class note.")); - REQUIRE_THAT(src, HasNote(_A("R"), "right", "R class note.")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00029/test_case.h b/tests/t00029/test_case.h index 4e70ae2d..4d969d1d 100644 --- a/tests/t00029/test_case.h +++ b/tests/t00029/test_case.h @@ -20,13 +20,8 @@ TEST_CASE("t00029") { using namespace clanguml::test; - auto [config, db] = load_config("t00029"); - - auto diagram = config.diagrams["t00029_class"]; - - REQUIRE(diagram->name == "t00029_class"); - - auto model = generate_class_diagram(*db, diagram); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00029", "t00029_class"); REQUIRE(model->name() == "t00029_class"); diff --git a/tests/t00030/test_case.h b/tests/t00030/test_case.h index 30a0a2f0..f51dbd1c 100644 --- a/tests/t00030/test_case.h +++ b/tests/t00030/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00030") { using namespace clanguml::test; - auto [config, db] = load_config("t00030"); - - auto diagram = config.diagrams["t00030_class"]; - - REQUIRE(diagram->name == "t00030_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00030_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00030", "t00030_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00031/test_case.h b/tests/t00031/test_case.h index c0c7bb90..c3f873dd 100644 --- a/tests/t00031/test_case.h +++ b/tests/t00031/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00031") { using namespace clanguml::test; - auto [config, db] = load_config("t00031"); - - auto diagram = config.diagrams["t00031_class"]; - - REQUIRE(diagram->name == "t00031_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00031_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00031", "t00031_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00032/test_case.h b/tests/t00032/test_case.h index 1277d186..59582dfa 100644 --- a/tests/t00032/test_case.h +++ b/tests/t00032/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00032") { using namespace clanguml::test; - auto [config, db] = load_config("t00032"); - - auto diagram = config.diagrams["t00032_class"]; - - REQUIRE(diagram->name == "t00032_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00032_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00032", "t00032_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "Base")); diff --git a/tests/t00033/test_case.h b/tests/t00033/test_case.h index 40290923..b5cca187 100644 --- a/tests/t00033/test_case.h +++ b/tests/t00033/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00033") { using namespace clanguml::test; - auto [config, db] = load_config("t00033"); - - auto diagram = config.diagrams["t00033_class"]; - - REQUIRE(diagram->name == "t00033_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00033_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00033", "t00033_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "A")); diff --git a/tests/t00034/test_case.h b/tests/t00034/test_case.h index 6a65ac59..45040d82 100644 --- a/tests/t00034/test_case.h +++ b/tests/t00034/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00034") { using namespace clanguml::test; - auto [config, db] = load_config("t00034"); - - auto diagram = config.diagrams["t00034_class"]; - - REQUIRE(diagram->name == "t00034_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00034_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00034", "t00034_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "lift_void")); diff --git a/tests/t00035/test_case.h b/tests/t00035/test_case.h index 95b0d2bf..02d63311 100644 --- a/tests/t00035/test_case.h +++ b/tests/t00035/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00035") { using namespace clanguml::test; - auto [config, db] = load_config("t00035"); - - auto diagram = config.diagrams["t00035_class"]; - - REQUIRE(diagram->name == "t00035_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00035_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00035", "t00035_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "Top")); diff --git a/tests/t00036/test_case.h b/tests/t00036/test_case.h index 16c5fe68..6e44a5d9 100644 --- a/tests/t00036/test_case.h +++ b/tests/t00036/test_case.h @@ -21,17 +21,11 @@ TEST_CASE("t00036") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t00036"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00036", "t00036_class"); - auto diagram = config.diagrams["t00036_class"]; - - REQUIRE(diagram->name == "t00036_class"); REQUIRE(diagram->generate_packages() == true); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00036_class"); - CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, {"ns1::ns11", "A"})); REQUIRE(IsClassTemplate(src, {"ns1::ns11", "A"})); diff --git a/tests/t00037/test_case.h b/tests/t00037/test_case.h index 6ad47529..662bccbc 100644 --- a/tests/t00037/test_case.h +++ b/tests/t00037/test_case.h @@ -20,17 +20,11 @@ TEST_CASE("t00037") { using namespace clanguml::test; - auto [config, db] = load_config("t00037"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00037", "t00037_class"); - auto diagram = config.diagrams["t00037_class"]; - - REQUIRE(diagram->name == "t00037_class"); REQUIRE(diagram->generate_packages() == true); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00037_class"); - CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "ST")); REQUIRE(IsClass(src, "A")); diff --git a/tests/t00038/test_case.h b/tests/t00038/test_case.h index 5b16987d..ae900531 100644 --- a/tests/t00038/test_case.h +++ b/tests/t00038/test_case.h @@ -18,18 +18,10 @@ TEST_CASE("t00038") { - using namespace clanguml::test; + using namespace clanguml::test; - auto [config, db] = load_config("t00038"); - - auto diagram = config.diagrams["t00038_class"]; - - REQUIRE(diagram->name == "t00038_class"); - REQUIRE(diagram->generate_packages() == false); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00038_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00038", "t00038_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00039/test_case.h b/tests/t00039/test_case.h index 36788d3f..1d722056 100644 --- a/tests/t00039/test_case.h +++ b/tests/t00039/test_case.h @@ -18,17 +18,10 @@ TEST_CASE("t00039") { - using namespace clanguml::test; + using namespace clanguml::test; - auto [config, db] = load_config("t00039"); - - auto diagram = config.diagrams["t00039_class"]; - - REQUIRE(diagram->name == "t00039_class"); - REQUIRE(diagram->generate_packages() == false); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00039_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00039", "t00039_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00040/test_case.h b/tests/t00040/test_case.h index 8b21ef25..d5915b71 100644 --- a/tests/t00040/test_case.h +++ b/tests/t00040/test_case.h @@ -20,16 +20,8 @@ TEST_CASE("t00040") { using namespace clanguml::test; - auto [config, db] = load_config("t00040"); - - auto diagram = config.diagrams["t00040_class"]; - - REQUIRE(diagram->name == "t00040_class"); - REQUIRE(diagram->generate_packages() == false); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00040_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00040", "t00040_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00041/test_case.h b/tests/t00041/test_case.h index 5b262bdd..2fbfd147 100644 --- a/tests/t00041/test_case.h +++ b/tests/t00041/test_case.h @@ -20,17 +20,11 @@ TEST_CASE("t00041") { using namespace clanguml::test; - auto [config, db] = load_config("t00041"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00041", "t00041_class"); - auto diagram = config.diagrams["t00041_class"]; - - REQUIRE(diagram->name == "t00041_class"); REQUIRE(diagram->generate_packages() == false); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00041_class"); - CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!IsClass(src, "A")); REQUIRE(!IsClass(src, "AA")); diff --git a/tests/t00042/test_case.h b/tests/t00042/test_case.h index b3e11df5..b5c411ea 100644 --- a/tests/t00042/test_case.h +++ b/tests/t00042/test_case.h @@ -20,17 +20,11 @@ TEST_CASE("t00042") { using namespace clanguml::test; - auto [config, db] = load_config("t00042"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00042", "t00042_class"); - auto diagram = config.diagrams["t00042_class"]; - - REQUIRE(diagram->name == "t00042_class"); REQUIRE(diagram->generate_packages() == false); - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00042_class"); - CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "B")); diff --git a/tests/t00043/test_case.h b/tests/t00043/test_case.h index ce65f719..1f81bb68 100644 --- a/tests/t00043/test_case.h +++ b/tests/t00043/test_case.h @@ -20,16 +20,8 @@ TEST_CASE("t00043") { using namespace clanguml::test; - auto [config, db] = load_config("t00043"); - - auto diagram = config.diagrams["t00043_class"]; - - REQUIRE(diagram->name == "t00043_class"); - REQUIRE(diagram->generate_packages() == true); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00043_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00043", "t00043_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, {"dependants", "A"})); diff --git a/tests/t00044/test_case.h b/tests/t00044/test_case.h index 18955892..da66d8e7 100644 --- a/tests/t00044/test_case.h +++ b/tests/t00044/test_case.h @@ -20,16 +20,8 @@ TEST_CASE("t00044") { using namespace clanguml::test; - auto [config, db] = load_config("t00044"); - - auto diagram = config.diagrams["t00044_class"]; - - REQUIRE(diagram->name == "t00044_class"); - REQUIRE(diagram->generate_packages() == true); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00044_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00044", "t00044_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!src.contains("type-parameter-")); diff --git a/tests/t00045/test_case.h b/tests/t00045/test_case.h index a70c4da9..be6b8957 100644 --- a/tests/t00045/test_case.h +++ b/tests/t00045/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00045") { using namespace clanguml::test; - auto [config, db] = load_config("t00045"); - - auto diagram = config.diagrams["t00045_class"]; - - REQUIRE(diagram->name == "t00045_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00045_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00045", "t00045_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00046/test_case.h b/tests/t00046/test_case.h index 35285e25..b7fca9a4 100644 --- a/tests/t00046/test_case.h +++ b/tests/t00046/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00046") { using namespace clanguml::test; - auto [config, db] = load_config("t00046"); - - auto diagram = config.diagrams["t00046_class"]; - - REQUIRE(diagram->name == "t00046_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00046_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00046", "t00046_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -40,6 +33,6 @@ TEST_CASE("t00046") REQUIRE(IsClass(src, {"ns1::ns2", "R"})); REQUIRE(IsField( - src, "ns1::ns2::R", "i", "std::vector")); + src, {"ns1::ns2", "R"}, "i", "std::vector")); }); } \ No newline at end of file diff --git a/tests/t00047/test_case.h b/tests/t00047/test_case.h index 07a3b334..bef97c84 100644 --- a/tests/t00047/test_case.h +++ b/tests/t00047/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00047") { using namespace clanguml::test; - auto [config, db] = load_config("t00047"); - - auto diagram = config.diagrams["t00047_class"]; - - REQUIRE(diagram->name == "t00047_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00047_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00047", "t00047_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClassTemplate(src, "conditional_t")); diff --git a/tests/t00048/test_case.h b/tests/t00048/test_case.h index 69b726a3..f7f7b5f3 100644 --- a/tests/t00048/test_case.h +++ b/tests/t00048/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00048") { using namespace clanguml::test; - auto [config, db] = load_config("t00048"); - - auto diagram = config.diagrams["t00048_class"]; - - REQUIRE(diagram->name == "t00048_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00048_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00048", "t00048_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { // Check if all classes exist diff --git a/tests/t00049/test_case.h b/tests/t00049/test_case.h index 4272f408..b75afa8f 100644 --- a/tests/t00049/test_case.h +++ b/tests/t00049/test_case.h @@ -20,15 +20,9 @@ TEST_CASE("t00049") { using namespace clanguml::test; - auto [config, db] = load_config("t00049"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00049", "t00049_class"); - auto diagram = config.diagrams["t00049_class"]; - - REQUIRE(diagram->name == "t00049_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00049_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "R")); diff --git a/tests/t00050/test_case.h b/tests/t00050/test_case.h index 9363db62..32802240 100644 --- a/tests/t00050/test_case.h +++ b/tests/t00050/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00050") { using namespace clanguml::test; - auto [config, db] = load_config("t00050"); - - auto diagram = config.diagrams["t00050_class"]; - - REQUIRE(diagram->name == "t00050_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00050_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00050", "t00050_class"); CHECK_CLASS_DIAGRAM( config, diagram, *model, diff --git a/tests/t00051/test_case.h b/tests/t00051/test_case.h index cfcebade..f3f3c39a 100644 --- a/tests/t00051/test_case.h +++ b/tests/t00051/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00051") { using namespace clanguml::test; - auto [config, db] = load_config("t00051"); - - auto diagram = config.diagrams["t00051_class"]; - - REQUIRE(diagram->name == "t00051_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00051_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00051", "t00051_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -59,106 +52,4 @@ TEST_CASE("t00051") REQUIRE(IsDependency(src, "A", "B<(lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27)>")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsInnerClass(_A("A"), _A("A::custom_thread1"))); - REQUIRE_THAT(src, IsInnerClass(_A("A"), _A("A::custom_thread2"))); - - REQUIRE_THAT(src, - (IsMethod("custom_thread1", "void", - "Function && f, Args &&... args"))); - REQUIRE_THAT(src, - (IsMethod( - "thread", "void", "(lambda at t00051.cc:59:27) &&"))); - REQUIRE_THAT(src, - (IsMethod("start_thread3", - "B<(lambda at t00051.cc:43:18),(lambda at " - "t00051.cc:43:27)>"))); - REQUIRE_THAT(src, - (IsMethod("get_function", "(lambda at t00051.cc:48:16)"))); - - REQUIRE_THAT(src, IsClassTemplate("B", "F,FF=F")); - REQUIRE_THAT(src, (IsMethod("f", "void"))); - REQUIRE_THAT(src, (IsMethod("ff", "void"))); - - REQUIRE_THAT(src, - IsClassTemplate("B", - "(lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27)")); - - REQUIRE_THAT(src, - IsInstantiation(_A("B"), - _A("B<(lambda at t00051.cc:43:18),(lambda at " - "t00051.cc:43:27)>"))); - - REQUIRE_THAT(src, - IsDependency(_A("A"), - _A("B<(lambda at t00051.cc:43:18),(lambda " - "at t00051.cc:43:27)>"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsInnerClass(j, "A", "A::custom_thread1")); - REQUIRE(IsInnerClass(j, "A", "A::custom_thread2")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsInnerClass; - using mermaid::IsMethod; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsInnerClass(_A("A"), _A("A::custom_thread1"))); - REQUIRE_THAT(src, IsInnerClass(_A("A"), _A("A::custom_thread2"))); - - REQUIRE_THAT(src, - (IsMethod("custom_thread1", "void", - "Function && f, Args &&... args"))); - REQUIRE_THAT(src, - (IsMethod( - "thread", "void", "(lambda at t00051.cc:59:27) &&"))); - REQUIRE_THAT(src, - (IsMethod("start_thread3", - "B<(lambda at t00051.cc:43:18),(lambda at t00051.cc:43:27)>"))); - REQUIRE_THAT(src, - (IsMethod("get_function", "(lambda at t00051.cc:48:16)"))); - - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, (IsMethod("f", "void"))); - REQUIRE_THAT(src, (IsMethod("ff", "void"))); - - REQUIRE_THAT(src, - IsClass(_A("B<(lambda at t00051.cc:43:18),(lambda at " - "t00051.cc:43:27)>"))); - - REQUIRE_THAT(src, - IsInstantiation(_A("B"), - _A("B<(lambda at t00051.cc:43:18),(lambda at " - "t00051.cc:43:27)>"))); - - REQUIRE_THAT(src, - IsDependency(_A("A"), - _A("B<(lambda at t00051.cc:43:18),(lambda " - "at t00051.cc:43:27)>"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - } - */ } \ No newline at end of file diff --git a/tests/t00052/test_case.h b/tests/t00052/test_case.h index ee2dce46..e9c27346 100644 --- a/tests/t00052/test_case.h +++ b/tests/t00052/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00052") { using namespace clanguml::test; - auto [config, db] = load_config("t00052"); - - auto diagram = config.diagrams["t00052_class"]; - - REQUIRE(diagram->name == "t00052_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00052_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00052", "t00052_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -40,57 +33,4 @@ TEST_CASE("t00052") REQUIRE(IsMethod(src, "B", "b", "T", "T t")); REQUIRE(IsMethod(src, "B", "bb", "T", "F && f, T t")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - - // Check if class templates exist - REQUIRE_THAT(src, IsClassTemplate("B", "T")); - - // Check if all methods exist - REQUIRE_THAT(src, (IsMethod("a", "T", "T p"))); - REQUIRE_THAT(src, (IsMethod("aa", "void", "F && f, Q q"))); - REQUIRE_THAT(src, (IsMethod("b", "T", "T t"))); - REQUIRE_THAT(src, (IsMethod("bb", "T", "F && f, T t"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClassTemplate(j, "B")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsMethod; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - - // Check if class templates exist - REQUIRE_THAT(src, IsClass(_A("B"))); - - // Check if all methods exist - REQUIRE_THAT(src, (IsMethod("a", "T", "T p"))); - REQUIRE_THAT(src, (IsMethod("aa", "void", "F && f, Q q"))); - REQUIRE_THAT(src, (IsMethod("b", "T", "T t"))); - REQUIRE_THAT(src, (IsMethod("bb", "T", "F && f, T t"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - } - */ } \ No newline at end of file diff --git a/tests/t00053/test_case.h b/tests/t00053/test_case.h index badae765..23d3b4ac 100644 --- a/tests/t00053/test_case.h +++ b/tests/t00053/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00053") { using namespace clanguml::test; - auto [config, db] = load_config("t00053"); - - auto diagram = config.diagrams["t00053_class"]; - - REQUIRE(diagram->name == "t00053_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00053_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00053", "t00053_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "a")); @@ -47,81 +40,4 @@ TEST_CASE("t00053") REQUIRE(IsClass(src, "F")); REQUIRE(IsClass(src, "G")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("a"))); - REQUIRE_THAT(src, IsClass(_A("b"))); - REQUIRE_THAT(src, IsClass(_A("c"))); - REQUIRE_THAT(src, IsClass(_A("d"))); - REQUIRE_THAT(src, IsClass(_A("e"))); - REQUIRE_THAT(src, IsClass(_A("f"))); - REQUIRE_THAT(src, IsClass(_A("g"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "a")); - REQUIRE(IsClass(j, "b")); - REQUIRE(IsClass(j, "c")); - REQUIRE(IsClass(j, "d")); - REQUIRE(IsClass(j, "e")); - REQUIRE(IsClass(j, "f")); - REQUIRE(IsClass(j, "g")); - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "C")); - REQUIRE(IsClass(j, "D")); - REQUIRE(IsClass(j, "E")); - REQUIRE(IsClass(j, "F")); - REQUIRE(IsClass(j, "G")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("a"))); - REQUIRE_THAT(src, IsClass(_A("b"))); - REQUIRE_THAT(src, IsClass(_A("c"))); - REQUIRE_THAT(src, IsClass(_A("d"))); - REQUIRE_THAT(src, IsClass(_A("e"))); - REQUIRE_THAT(src, IsClass(_A("f"))); - REQUIRE_THAT(src, IsClass(_A("g"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t00054/test_case.h b/tests/t00054/test_case.h index 2f53b3ec..43ff755b 100644 --- a/tests/t00054/test_case.h +++ b/tests/t00054/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00054") { using namespace clanguml::test; - auto [config, db] = load_config("t00054"); - - auto diagram = config.diagrams["t00054_class"]; - - REQUIRE(diagram->name == "t00054_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00054_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00054", "t00054_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "a")); @@ -51,92 +44,4 @@ TEST_CASE("t00054") REQUIRE(IsEnum(src, {"detail4", "h"})); REQUIRE(IsEnum(src, {"detail4", "j"})); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("a"))); - REQUIRE_THAT(src, IsClass(_A("b"))); - REQUIRE_THAT(src, IsClass(_A("c"))); - REQUIRE_THAT(src, IsClass(_A("d"))); - REQUIRE_THAT(src, IsClass(_A("e"))); - REQUIRE_THAT(src, IsClass(_A("f"))); - REQUIRE_THAT(src, IsClass(_A("g"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - - REQUIRE_THAT(src, IsEnum(_A("i"))); - REQUIRE_THAT(src, IsEnum(_A("h"))); - REQUIRE_THAT(src, IsEnum(_A("j"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "a")); - REQUIRE(IsClass(j, "b")); - REQUIRE(IsClass(j, "detail::c")); - REQUIRE(IsClass(j, "detail::d")); - REQUIRE(IsClass(j, "detail::e")); - REQUIRE(IsClass(j, "f")); - REQUIRE(IsClass(j, "g")); - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "detail2::C")); - REQUIRE(IsClass(j, "detail2::detail3::D")); - REQUIRE(IsClass(j, "detail2::detail3::E")); - REQUIRE(IsClass(j, "detail2::F")); - REQUIRE(IsClass(j, "G")); - - REQUIRE(IsEnum(j, "detail4::i")); - REQUIRE(IsEnum(j, "detail4::h")); - REQUIRE(IsEnum(j, "detail4::j")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsEnum; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("a"))); - REQUIRE_THAT(src, IsClass(_A("b"))); - REQUIRE_THAT(src, IsClass(_A("detail::c"))); - REQUIRE_THAT(src, IsClass(_A("detail::d"))); - REQUIRE_THAT(src, IsClass(_A("detail::e"))); - REQUIRE_THAT(src, IsClass(_A("f"))); - REQUIRE_THAT(src, IsClass(_A("g"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("detail2::C"))); - REQUIRE_THAT(src, IsClass(_A("detail2::detail3::D"))); - REQUIRE_THAT(src, IsClass(_A("detail2::detail3::E"))); - REQUIRE_THAT(src, IsClass(_A("detail2::F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - - REQUIRE_THAT(src, IsEnum(_A("detail4::i"))); - REQUIRE_THAT(src, IsEnum(_A("detail4::h"))); - REQUIRE_THAT(src, IsEnum(_A("detail4::j"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t00055/test_case.h b/tests/t00055/test_case.h index 6dc4056c..25afa8d0 100644 --- a/tests/t00055/test_case.h +++ b/tests/t00055/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00055") { using namespace clanguml::test; - auto [config, db] = load_config("t00055"); - - auto diagram = config.diagrams["t00055_class"]; - - REQUIRE(diagram->name == "t00055_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00055_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00055", "t00055_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -52,74 +45,4 @@ TEST_CASE("t00055") REQUIRE(IsLayoutHint(src, "F", "down", "H")); REQUIRE(IsLayoutHint(src, "H", "down", "J")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - REQUIRE_THAT(src, IsClass(_A("H"))); - REQUIRE_THAT(src, IsClass(_A("I"))); - REQUIRE_THAT(src, IsClass(_A("J"))); - - REQUIRE_THAT(src, IsLayoutHint(_A("A"), "right", _A("C"))); - REQUIRE_THAT(src, IsLayoutHint(_A("C"), "right", _A("E"))); - REQUIRE_THAT(src, IsLayoutHint(_A("E"), "right", _A("G"))); - REQUIRE_THAT(src, IsLayoutHint(_A("G"), "right", _A("I"))); - - REQUIRE_THAT(src, IsLayoutHint(_A("B"), "down", _A("D"))); - REQUIRE_THAT(src, IsLayoutHint(_A("D"), "down", _A("F"))); - REQUIRE_THAT(src, IsLayoutHint(_A("F"), "down", _A("H"))); - REQUIRE_THAT(src, IsLayoutHint(_A("H"), "down", _A("J"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "C")); - REQUIRE(IsClass(j, "D")); - REQUIRE(IsClass(j, "E")); - REQUIRE(IsClass(j, "F")); - REQUIRE(IsClass(j, "G")); - REQUIRE(IsClass(j, "H")); - REQUIRE(IsClass(j, "I")); - REQUIRE(IsClass(j, "J")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - REQUIRE_THAT(src, IsClass(_A("G"))); - REQUIRE_THAT(src, IsClass(_A("H"))); - REQUIRE_THAT(src, IsClass(_A("I"))); - REQUIRE_THAT(src, IsClass(_A("J"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t00056/test_case.h b/tests/t00056/test_case.h index 238175b9..a74fcd43 100644 --- a/tests/t00056/test_case.h +++ b/tests/t00056/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00056") { using namespace clanguml::test; - auto [config, db] = load_config("t00056"); - - auto diagram = config.diagrams["t00056_class"]; - - REQUIRE(diagram->name == "t00056_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00056_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00056", "t00056_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsConcept(src, "greater_than_simple")); @@ -39,7 +32,8 @@ TEST_CASE("t00056") REQUIRE(IsConcept(src, "convertible_to_string")); REQUIRE(IsConcept(src, "iterable_with_value_type")); REQUIRE(IsConcept(src, "iterable_or_small_value_type")); - + REQUIRE(IsConceptParameterList( + src, "greater_than_with_requires", "(T l,P r)")); REQUIRE(IsConceptRequirement( src, "greater_than_with_requires", "sizeof (l) > sizeof (r)")); @@ -93,204 +87,4 @@ TEST_CASE("t00056") REQUIRE(IsConstraint( src, "F", "greater_than_simple", "T1,T3")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsConcept(_A("greater_than_simple"))); - REQUIRE_THAT(src, IsConcept(_A("greater_than_with_requires"))); - REQUIRE_THAT(src, IsConcept(_A("max_four_bytes"))); - REQUIRE_THAT(src, IsConcept(_A("iterable"))); - REQUIRE_THAT(src, IsConcept(_A("has_value_type"))); - REQUIRE_THAT(src, IsConcept(_A("convertible_to_string"))); - REQUIRE_THAT(src, IsConcept(_A("iterable_with_value_type"))); - REQUIRE_THAT(src, IsConcept(_A("iterable_or_small_value_type"))); - - REQUIRE_THAT(src, - IsConceptRequirement(_A("greater_than_with_requires"), - "sizeof (l) > sizeof (r)")); - - REQUIRE_THAT( - src, IsConceptRequirement(_A("iterable"), - "container.begin()")); REQUIRE_THAT( src, - IsConceptRequirement(_A("iterable"), "container.end()")); - - #if (LLVM_VERSION_MAJOR == 13) || (LLVM_VERSION_MAJOR == 14) - REQUIRE_THAT(src, - IsConceptRequirement( - _A("convertible_to_string"), "std::string({s})")); - #else - REQUIRE_THAT(src, - IsConceptRequirement( - _A("convertible_to_string"), "std::string{s}")); - #endif - REQUIRE_THAT(src, - IsConceptRequirement(_A("convertible_to_string"), - "{std::to_string(s)} noexcept")); - REQUIRE_THAT(src, - IsConceptRequirement(_A("convertible_to_string"), - "{std::to_string(s)} -> std::same_as")); - - // Check if class templates exist - REQUIRE_THAT(src, IsClassTemplate("A", "max_four_bytes T")); - REQUIRE_THAT(src, IsClassTemplate("B", "T")); - REQUIRE_THAT(src, IsClassTemplate("C", "convertible_to_string T")); - REQUIRE_THAT( - src, IsClassTemplate("D", "iterable T1,T2,iterable T3,T4,T5")); - REQUIRE_THAT(src, IsClassTemplate("E", "T1,T2,T3")); - REQUIRE_THAT(src, IsClassTemplate("F", "T1,T2,T3")); - - // Check if all relationships exist - REQUIRE_THAT(src, - IsConstraint( - _A("A"), _A("max_four_bytes"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("max_four_bytes"), "T2")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("max_four_bytes"), "T5")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("iterable"), "T1")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("iterable"), "T3")); - - REQUIRE_THAT(src, - IsConstraint(_A("iterable_with_value_type"), - _A("has_value_type"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("iterable_or_small_value_type"), - _A("max_four_bytes"), "T")); - REQUIRE_THAT(src, - IsConstraint(_A("iterable_or_small_value_type"), - _A("iterable_with_value_type"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("E"), - _A("greater_than_with_requires"), "T1,T3")); - - REQUIRE_THAT(src, - IsConstraint( - _A("F"), _A("greater_than_simple"), - "T1,T3")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsConcept(j, "greater_than_simple")); - REQUIRE(IsConcept(j, "greater_than_with_requires")); - REQUIRE(IsConcept(j, "max_four_bytes")); - REQUIRE(IsConcept(j, "iterable")); - REQUIRE(IsConcept(j, "has_value_type")); - REQUIRE(IsConcept(j, "convertible_to_string")); - REQUIRE(IsConcept(j, "iterable_with_value_type")); - REQUIRE(IsConcept(j, "iterable_or_small_value_type")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsConcept; - using mermaid::IsConceptRequirement; - using mermaid::IsConstraint; - - // Check if all classes exist - REQUIRE_THAT(src, IsConcept(_A("greater_than_simple"))); - REQUIRE_THAT(src, IsConcept(_A("greater_than_with_requires"))); - REQUIRE_THAT(src, IsConcept(_A("max_four_bytes"))); - REQUIRE_THAT(src, IsConcept(_A("iterable"))); - REQUIRE_THAT(src, IsConcept(_A("has_value_type"))); - REQUIRE_THAT(src, IsConcept(_A("convertible_to_string"))); - REQUIRE_THAT(src, IsConcept(_A("iterable_with_value_type"))); - REQUIRE_THAT(src, IsConcept(_A("iterable_or_small_value_type"))); - - REQUIRE_THAT(src, - IsConceptRequirement(_A("greater_than_with_requires"), - "sizeof (l) > sizeof (r)")); - - REQUIRE_THAT( - src, IsConceptRequirement(_A("iterable"), - "container.begin()")); REQUIRE_THAT( src, - IsConceptRequirement(_A("iterable"), "container.end()")); - - #if (LLVM_VERSION_MAJOR == 13) || (LLVM_VERSION_MAJOR == 14) - REQUIRE_THAT(src, - IsConceptRequirement( - _A("convertible_to_string"), "std::string({s})")); - #else - REQUIRE_THAT(src, - IsConceptRequirement( - _A("convertible_to_string"), "std::string{s}")); - #endif - REQUIRE_THAT(src, - IsConceptRequirement(_A("convertible_to_string"), - "{std::to_string(s)} noexcept")); - REQUIRE_THAT(src, - IsConceptRequirement(_A("convertible_to_string"), - "{std::to_string(s)} -> std::same_as")); - - // Check if class templates exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); REQUIRE_THAT(src, IsClass(_A("E"))); - REQUIRE_THAT(src, IsClass(_A("F"))); - - // Check if all relationships exist - REQUIRE_THAT(src, - IsConstraint( - _A("A"), _A("max_four_bytes"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("max_four_bytes"), "T2")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("max_four_bytes"), "T5")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("iterable"), "T1")); - REQUIRE_THAT(src, - IsConstraint(_A("D"), - _A("iterable"), "T3")); - - REQUIRE_THAT(src, - IsConstraint(_A("iterable_with_value_type"), - _A("has_value_type"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("iterable_or_small_value_type"), - _A("max_four_bytes"), "T")); - REQUIRE_THAT(src, - IsConstraint(_A("iterable_or_small_value_type"), - _A("iterable_with_value_type"), "T")); - - REQUIRE_THAT(src, - IsConstraint(_A("E"), - _A("greater_than_with_requires"), "T1,T3")); - - REQUIRE_THAT(src, - IsConstraint( - _A("F"), _A("greater_than_simple"), - "T1,T3")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00057/test_case.h b/tests/t00057/test_case.h index fcbdfdcf..662c6606 100644 --- a/tests/t00057/test_case.h +++ b/tests/t00057/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00057") { using namespace clanguml::test; - auto [config, db] = load_config("t00057"); - - auto diagram = config.diagrams["t00057_class"]; - - REQUIRE(diagram->name == "t00057_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00057_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00057", "t00057_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "t00057_A")); @@ -52,88 +45,4 @@ TEST_CASE("t00057") REQUIRE(IsAggregation( src, "t00057_E", "t00057_E::(height)", "height")); }); - - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("t00057_A"))); - REQUIRE_THAT(src, IsClass(_A("t00057_B"))); - REQUIRE_THAT(src, IsClass(_A("t00057_C"))); - REQUIRE_THAT(src, IsUnion(_A("t00057_D"))); - REQUIRE_THAT(src, IsClass(_A("t00057_E"))); - REQUIRE_THAT(src, IsClass(_A("t00057_F"))); - REQUIRE_THAT(src, IsClass(_A("t00057_G"))); - REQUIRE_THAT(src, !IsClass(_A("(anonymous)"))); - REQUIRE_THAT(src, IsClass(_A("t00057_R"))); - - // Check if all relationships exist - REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_A"), - "+a")); REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_B"), - "+b")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_C"), - "+c")); REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_D"), - "+d")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_E"), - "+e")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_F"), - "+f")); REQUIRE_THAT(src, IsAggregation( _A("t00057_E"), - _A("t00057_E::(coordinates)"), "+coordinates")); REQUIRE_THAT(src, - IsAggregation(_A("t00057_E"), _A("t00057_E::(height)"), - "+height")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(get_element(j, "t00057_A").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_B").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_C").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_D").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_E").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_F").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_G").value()["type"] == "class"); - REQUIRE(get_element(j, "t00057_R").value()["type"] == "class"); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsUnion; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("t00057_A"))); - REQUIRE_THAT(src, IsClass(_A("t00057_B"))); - REQUIRE_THAT(src, IsClass(_A("t00057_C"))); - REQUIRE_THAT(src, IsUnion(_A("t00057_D"))); - REQUIRE_THAT(src, IsClass(_A("t00057_E"))); - REQUIRE_THAT(src, IsClass(_A("t00057_F"))); - REQUIRE_THAT(src, IsClass(_A("t00057_G"))); - REQUIRE_THAT(src, !IsClass(_A("(anonymous)"))); - REQUIRE_THAT(src, IsClass(_A("t00057_R"))); - - // Check if all relationships exist - REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_A"), - "+a")); REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_B"), - "+b")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_C"), - "+c")); REQUIRE_THAT(src, IsAggregation(_A("t00057_R"), _A("t00057_D"), - "+d")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_E"), - "+e")); REQUIRE_THAT(src, IsAssociation(_A("t00057_R"), _A("t00057_F"), - "+f")); REQUIRE_THAT(src, IsAggregation( _A("t00057_E"), - _A("t00057_E::(coordinates)"), "+coordinates")); REQUIRE_THAT(src, - IsAggregation(_A("t00057_E"), _A("t00057_E::(height)"), - "+height")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t00058/test_case.h b/tests/t00058/test_case.h index 9a0581ae..cceb976b 100644 --- a/tests/t00058/test_case.h +++ b/tests/t00058/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00058") { using namespace clanguml::test; - auto [config, db] = load_config("t00058"); - - auto diagram = config.diagrams["t00058_class"]; - - REQUIRE(diagram->name == "t00058_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00058_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00058", "t00058_class"); CHECK_CLASS_DIAGRAM( config, diagram, *model, @@ -67,97 +60,4 @@ TEST_CASE("t00058") REQUIRE(IsDependency( src, "same_as_first_type", "first_type")); }); - - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClassTemplate("A", - "int,int,double,std::string")); REQUIRE_THAT( src, IsClassTemplate("B", - "int,std::string,int,double,A")); - - REQUIRE_THAT(src, IsConcept(_A("same_as_first_type"))); - - REQUIRE_THAT(src, - IsConstraint(_A("A"), - _A("same_as_first_type"), "T,Args...")); - - REQUIRE_THAT(src, - IsConstraint(_A("B"), - _A("same_as_first_type"), "T,Args...")); - - REQUIRE_THAT(src, - IsAggregation(_A("R"), _A("A"), - "+aa")); REQUIRE_THAT(src, IsAggregation(_A("R"), - _A("B>"), "+bb")); - - REQUIRE_THAT(src, - IsInstantiation( - _A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("B"), - _A("B>"))); - - REQUIRE_THAT(src, - IsDependency(_A("same_as_first_type"), - _A("first_type"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B>")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsConcept; - using mermaid::IsConstraint; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT( - src, IsClass(_A("B>"))); - - REQUIRE_THAT(src, IsConcept(_A("same_as_first_type"))); - - REQUIRE_THAT(src, - IsConstraint(_A("A"), - _A("same_as_first_type"), "T,Args...")); - - REQUIRE_THAT(src, - IsConstraint(_A("B"), - _A("same_as_first_type"), "T,Args...")); - - REQUIRE_THAT(src, - IsAggregation(_A("R"), _A("A"), - "+aa")); REQUIRE_THAT(src, IsAggregation(_A("R"), - _A("B>"), "+bb")); - - REQUIRE_THAT(src, - IsInstantiation( - _A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("B"), - _A("B>"))); - - // TODO - // REQUIRE_THAT(src, - // IsDependency(_A("same_as_first_type"), - // _A("first_type"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00059/test_case.h b/tests/t00059/test_case.h index 435818db..9d6899c0 100644 --- a/tests/t00059/test_case.h +++ b/tests/t00059/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00059") { using namespace clanguml::test; - auto [config, db] = load_config("t00059"); - - auto diagram = config.diagrams["t00059_class"]; - - REQUIRE(diagram->name == "t00059_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00059_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00059", "t00059_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsConcept(src, "fruit_c")); @@ -39,7 +32,7 @@ TEST_CASE("t00059") REQUIRE(IsConstraint(src, "orange_c", "fruit_c", "T", "up")); REQUIRE(IsConceptRequirement(src, "apple_c", "t.get_sweetness()")); - REQUIRE(IsConceptRequirement(src, "apple_c", "t.get_bitterness()")); + REQUIRE(IsConceptRequirement(src, "orange_c", "t.get_bitterness()")); REQUIRE(IsClass(src, "gala_apple")); REQUIRE(IsClass(src, "empire_apple")); @@ -71,145 +64,4 @@ TEST_CASE("t00059") REQUIRE(IsInstantiation(src, "fruit_factory", "fruit_factory", "up")); }); - /* - - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsConcept(_A("fruit_c"))); - REQUIRE_THAT(src, IsConcept(_A("apple_c"))); - REQUIRE_THAT(src, IsConcept(_A("orange_c"))); - - REQUIRE_THAT( - src, IsConstraint(_A("apple_c"), _A("fruit_c"), "T", - "up")); REQUIRE_THAT( src, IsConstraint(_A("orange_c"), - _A("fruit_c"), "T", "up")); - - REQUIRE_THAT( - src, IsConceptRequirement(_A("apple_c"), - "t.get_sweetness()")); REQUIRE_THAT( src, - IsConceptRequirement(_A("apple_c"), "t.get_bitterness()")); - - REQUIRE_THAT(src, IsClass(_A("gala_apple"))); - REQUIRE_THAT(src, IsClass(_A("empire_apple"))); - REQUIRE_THAT(src, IsClass(_A("valencia_orange"))); - REQUIRE_THAT(src, IsClass(_A("lima_orange"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT( - src, IsClassTemplate("fruit_factory", "apple_c TA,orange_c - TO")); - - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("gala_apple"), "up")); - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("valencia_orange"), "up")); - - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("empire_apple"), "up")); - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("lima_orange"), "up")); - - REQUIRE_THAT(src, - IsAggregation(_A("R"), - _A("fruit_factory"), - "+factory_1", - "", "", "up")); - REQUIRE_THAT(src, - IsAggregation(_A("R"), - _A("fruit_factory"), "+factory_2", - "", - "", "up")); - - REQUIRE_THAT(src, - IsInstantiation(_A("fruit_factory"), - _A("fruit_factory"), "up")); - REQUIRE_THAT(src, - IsInstantiation(_A("fruit_factory"), - _A("fruit_factory"), "up")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsConcept(j, "fruit_c")); - REQUIRE(IsConcept(j, "apple_c")); - REQUIRE(IsConcept(j, "orange_c")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsConcept; - using mermaid::IsConceptRequirement; - using mermaid::IsConstraint; - - REQUIRE_THAT(src, IsConcept(_A("fruit_c"))); - REQUIRE_THAT(src, IsConcept(_A("apple_c"))); - REQUIRE_THAT(src, IsConcept(_A("orange_c"))); - - REQUIRE_THAT( - src, IsConstraint(_A("apple_c"), _A("fruit_c"), "T")); - REQUIRE_THAT( - src, IsConstraint(_A("orange_c"), _A("fruit_c"), "T")); - - REQUIRE_THAT( - src, IsConceptRequirement(_A("apple_c"), - "t.get_sweetness()")); REQUIRE_THAT( src, - IsConceptRequirement(_A("apple_c"), "t.get_bitterness()")); - - REQUIRE_THAT(src, IsClass(_A("gala_apple"))); - REQUIRE_THAT(src, IsClass(_A("empire_apple"))); - REQUIRE_THAT(src, IsClass(_A("valencia_orange"))); - REQUIRE_THAT(src, IsClass(_A("lima_orange"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsClass(_A("fruit_factory"))); - - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("gala_apple"))); - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("valencia_orange"))); - - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("empire_apple"))); - REQUIRE_THAT(src, - IsDependency(_A("fruit_factory"), - _A("lima_orange"))); - - REQUIRE_THAT(src, - IsAggregation(_A("R"), - _A("fruit_factory"), - "+factory_1")); REQUIRE_THAT(src, IsAggregation(_A("R"), - _A("fruit_factory"), - "+factory_2")); - - REQUIRE_THAT(src, - IsInstantiation(_A("fruit_factory"), - _A("fruit_factory"))); - REQUIRE_THAT(src, - IsInstantiation(_A("fruit_factory"), - _A("fruit_factory"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00060/test_case.h b/tests/t00060/test_case.h index 87251cea..de813fdf 100644 --- a/tests/t00060/test_case.h +++ b/tests/t00060/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00060") { using namespace clanguml::test; - auto [config, db] = load_config("t00060"); - - auto diagram = config.diagrams["t00060_class"]; - - REQUIRE(diagram->name == "t00060_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00060_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00060", "t00060_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -41,61 +34,4 @@ TEST_CASE("t00060") REQUIRE(IsClassTemplate(src, "G")); REQUIRE(IsClassTemplate(src, "H")); }); - /* -{ - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, !IsClass(_A("E"))); - REQUIRE_THAT(src, !IsClass(_A("F"))); - - // Check if class templates exist - REQUIRE_THAT(src, IsClassTemplate("G", "T")); - REQUIRE_THAT(src, IsClassTemplate("H", "T,P")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); -} - -{ - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "C")); - REQUIRE(IsClass(j, "D")); - REQUIRE(!IsClass(j, "E")); - REQUIRE(!IsClass(j, "F")); - - save_json(config.output_directory(), diagram->name + ".json", j); -} -{ - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, !IsClass(_A("E"))); - REQUIRE_THAT(src, !IsClass(_A("F"))); - - // Check if class templates exist - REQUIRE_THAT(src, IsClass(_A("G"))); - REQUIRE_THAT(src, IsClass(_A("H"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); -} - */ } \ No newline at end of file diff --git a/tests/t00061/test_case.h b/tests/t00061/test_case.h index a2086cf8..847cfc6d 100644 --- a/tests/t00061/test_case.h +++ b/tests/t00061/test_case.h @@ -20,59 +20,12 @@ TEST_CASE("t00061") { using namespace clanguml::test; - auto [config, db] = load_config("t00061"); - - auto diagram = config.diagrams["t00061_class"]; - - REQUIRE(diagram->name == "t00061_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00061_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00061", "t00061_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); REQUIRE(!IsClass(src, "B")); REQUIRE(!IsClass(src, "C")); }); - /* -{ - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, !IsClass(_A("B"))); - REQUIRE_THAT(src, !IsClass(_A("C"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); -} - -{ - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(!IsClass(j, "B")); - REQUIRE(!IsClass(j, "C")); - - save_json(config.output_directory(), diagram->name + ".json", j); -} -{ - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, !IsClass(_A("B"))); - REQUIRE_THAT(src, !IsClass(_A("C"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); -} - */ } \ No newline at end of file diff --git a/tests/t00062/test_case.h b/tests/t00062/test_case.h index b266a93f..198b875c 100644 --- a/tests/t00062/test_case.h +++ b/tests/t00062/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00062") { using namespace clanguml::test; - auto [config, db] = load_config("t00062"); - - auto diagram = config.diagrams["t00062_class"]; - - REQUIRE(diagram->name == "t00062_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00062_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00062", "t00062_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!src.contains("type-parameter-")); @@ -37,6 +30,7 @@ TEST_CASE("t00062") REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "A")); + REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "A")); REQUIRE(IsClassTemplate(src, "A")); @@ -53,11 +47,9 @@ TEST_CASE("t00062") REQUIRE(IsClassTemplate(src, "A>")); REQUIRE(IsField(src, "A", "u", "U &")); - REQUIRE(IsField(src, "A", "u", "U **")); - REQUIRE(IsField(src, "A", "u", "U ***")); + REQUIRE(IsField(src, "A", "u", "U ***")); REQUIRE(IsField(src, "A", "u", "U &&")); - REQUIRE(IsField(src, "A", "u", "const U &")); - REQUIRE(IsField(src, "A", "c", "C &")); + REQUIRE(IsField(src, "A", "u", "const U &")); REQUIRE(IsField(src, "A", "m", "M C::*")); REQUIRE(IsInstantiation(src, "A", "A")); @@ -77,127 +69,4 @@ TEST_CASE("t00062") REQUIRE(IsInstantiation(src, "A", "A>")); REQUIRE(IsInstantiation(src, "A", "A>")); }); - - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClassTemplate("A", "T")); - REQUIRE_THAT(src, IsClassTemplate("A", "U &")); - REQUIRE_THAT(src, IsClassTemplate("A", "U &&")); - REQUIRE_THAT(src, IsClassTemplate("A", "U const&")); - REQUIRE_THAT(src, IsClassTemplate("A", "M C::*")); - REQUIRE_THAT(src, IsClassTemplate("A", "M C::* &&")); - REQUIRE_THAT(src, IsClassTemplate("A", "M (C::*)(Arg)")); - REQUIRE_THAT(src, IsClassTemplate("A", "int (C::*)(bool)")); - REQUIRE_THAT(src, IsClassTemplate("A", "M (C::*)(Arg) &&")); - REQUIRE_THAT(src, IsClassTemplate("A", "M (C::*)(Arg1,Arg2,Arg3)")); - REQUIRE_THAT(src, IsClassTemplate("A", "float (C::*)(int) &&")); - - REQUIRE_THAT(src, IsClassTemplate("A", "char[N]")); - REQUIRE_THAT(src, IsClassTemplate("A", "char[1000]")); - - REQUIRE_THAT(src, IsClassTemplate("A", "U(...)")); - REQUIRE_THAT(src, IsClassTemplate("A", "C")); - REQUIRE_THAT(src, IsClassTemplate("A", "C")); - - REQUIRE_THAT(src, (IsField("u", "U &"))); - REQUIRE_THAT(src, (IsField("u", "U **"))); - REQUIRE_THAT(src, (IsField("u", "U ***"))); - REQUIRE_THAT(src, (IsField("u", "U &&"))); - REQUIRE_THAT(src, (IsField("u", "const U &"))); - REQUIRE_THAT(src, (IsField("c", "C &"))); - REQUIRE_THAT(src, (IsField("m", "M C::*"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A>"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A>"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsField; - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("A>"))); - REQUIRE_THAT(src, IsClass(_A("A>"))); - - REQUIRE_THAT(src, (IsField("u", "U &"))); - REQUIRE_THAT(src, (IsField("u", "U **"))); - REQUIRE_THAT(src, (IsField("u", "U ***"))); - REQUIRE_THAT(src, (IsField("u", "U &&"))); - REQUIRE_THAT(src, (IsField("u", "const U &"))); - REQUIRE_THAT(src, (IsField("c", "C &"))); - REQUIRE_THAT(src, (IsField("m", "M C::*"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, - IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - src, IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A>"))); - REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A>"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t00063/test_case.h b/tests/t00063/test_case.h index 8c87872f..c66ae44e 100644 --- a/tests/t00063/test_case.h +++ b/tests/t00063/test_case.h @@ -20,59 +20,12 @@ TEST_CASE("t00063") { using namespace clanguml::test; - auto [config, db] = load_config("t00063"); - - auto diagram = config.diagrams["t00063_class"]; - - REQUIRE(diagram->name == "t00063_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00063_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00063", "t00063_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); REQUIRE(!IsEnum(src, "B")); REQUIRE(!IsEnum(src, "C")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, !IsEnum(_A("B"))); - REQUIRE_THAT(src, !IsEnum(_A("C"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(!IsEnum(j, "B")); - REQUIRE(!IsEnum(j, "C")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsEnum; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, !IsEnum(_A("B"))); - REQUIRE_THAT(src, !IsEnum(_A("C"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t00064/test_case.h b/tests/t00064/test_case.h index 6089a397..de0d9fd6 100644 --- a/tests/t00064/test_case.h +++ b/tests/t00064/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00064") { using namespace clanguml::test; - auto [config, db] = load_config("t00064"); - - auto diagram = config.diagrams["t00064_class"]; - - REQUIRE(diagram->name == "t00064_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00064_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00064", "t00064_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!src.contains("type-parameter-")); @@ -54,129 +47,24 @@ TEST_CASE("t00064") REQUIRE(IsClassTemplate(src, "type_group_pair_it,type_list>")); - REQUIRE(IsMethod(src, "get", "ref_t", "unsigned int i")); + REQUIRE(IsMethod(src, + "type_group_pair_it,type_list>", + "get", "ref_t", "unsigned int i")); #if LLVM_VERSION_MAJOR < 16 - REQUIRE(IsMethod( - src, "getp", "value_type const*", "unsigned int i")); - REQUIRE(IsMethod( - src, "find", "unsigned int", "value_type const& v")); + REQUIRE(IsMethod(src, + "type_group_pair_it,type_list>", + "getp", "value_type const*", "unsigned int i")); + REQUIRE(IsMethod(src, + "type_group_pair_it,type_list>", + "find", "unsigned int", "value_type const& v")); #else REQUIRE( - IsMethod(src, "getp", "const value_type *", "unsigned int i")); + IsMethod(src, + "type_group_pair_it,type_list>", + "getp", "const value_type *", "unsigned int i")); REQUIRE( - IsMethod(src, + IsMethod(src,"type_group_pair_it,type_list>", "find", "unsigned int", "const value_type & v")); #endif }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsClassTemplate("type_list", "Ts...")); - REQUIRE_THAT(src, IsClassTemplate("type_list", "Ret(Arg &&),Ts...")); - REQUIRE_THAT(src, IsClassTemplate("type_list", "T const,Ts...")); - - REQUIRE_THAT(src, IsClassTemplate("head", "typename")); - REQUIRE_THAT(src, IsClassTemplate("head", "type_list")); - REQUIRE_THAT( - src, IsClassTemplate("type_group_pair", "typename,typename")); - REQUIRE_THAT(src, - IsClassTemplate( - "type_group_pair", "type_list,type_list")); - REQUIRE_THAT(src, - IsClassTemplate( - "type_group_pair", "type_list,type_list")); - - REQUIRE_THAT(src, IsClassTemplate("optional_ref", "T")); - - REQUIRE_THAT(src, - IsClassTemplate("type_group_pair_it", - "It,type_list,type_list")); - REQUIRE_THAT(src, (IsMethod("get", "ref_t", "unsigned int i"))); -#if LLVM_VERSION_MAJOR < 16 - REQUIRE_THAT(src, - (IsMethod("getp", "value_type const*", "unsigned int i"))); - REQUIRE_THAT(src, - (IsMethod( - "find", "unsigned int", "value_type const& v"))); -#else - REQUIRE_THAT(src, - (IsMethod("getp", "const value_type *", "unsigned int i"))); - REQUIRE_THAT(src, - (IsMethod( - "find", "unsigned int", "const value_type & v"))); - -#endif - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsMethod; - - REQUIRE_THAT(src, !Contains("type-parameter-")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsClass(_A("type_list"))); - REQUIRE_THAT(src, IsClass(_A("type_list"))); - REQUIRE_THAT(src, IsClass(_A("type_list"))); - - REQUIRE_THAT(src, IsClass(_A("head"))); - REQUIRE_THAT(src, IsClass(_A("head>"))); - REQUIRE_THAT(src, IsClass(_A("type_group_pair"))); - REQUIRE_THAT(src, - IsClass(_A( - "type_group_pair,type_list>"))); - REQUIRE_THAT(src, - IsClass(_A( - "type_group_pair,type_list>"))); - - REQUIRE_THAT(src, IsClass(_A("optional_ref"))); - - REQUIRE_THAT(src, - IsClass(_A("type_group_pair_it,type_list<" - "Second...>>"))); - REQUIRE_THAT(src, (IsMethod("get", "ref_t", "unsigned int i"))); -#if LLVM_VERSION_MAJOR < 16 - REQUIRE_THAT(src, - (IsMethod("getp", "value_type const*", "unsigned int i"))); - REQUIRE_THAT(src, - (IsMethod( - "find", "unsigned int", "value_type const& v"))); -#else - REQUIRE_THAT(src, - (IsMethod("getp", "const value_type *", "unsigned int i"))); - REQUIRE_THAT(src, - (IsMethod( - "find", "unsigned int", "const value_type & v"))); - -#endif - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - } - */ } \ No newline at end of file diff --git a/tests/t00065/test_case.h b/tests/t00065/test_case.h index 7c127154..00da8823 100644 --- a/tests/t00065/test_case.h +++ b/tests/t00065/test_case.h @@ -19,16 +19,10 @@ TEST_CASE("t00065") { using namespace clanguml::test; + using namespace std::string_literals; - auto [config, db] = load_config("t00065"); - - auto diagram = config.diagrams["t00065_class"]; - - REQUIRE(diagram->name == "t00065_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00065_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00065", "t00065_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "R")); @@ -37,55 +31,9 @@ TEST_CASE("t00065") REQUIRE(IsEnum(src, "XYZ")); REQUIRE(IsEnum(src, "ABC")); - REQUIRE(IsPackage("module1")); - REQUIRE(IsPackage("module2")); - REQUIRE(IsPackage("submodule1a")); - REQUIRE(IsPackage("concepts")); + REQUIRE(IsDirectoryPackage(src, "module1"s)); + REQUIRE(IsDirectoryPackage(src, "module2"s)); + REQUIRE(IsDirectoryPackage(src, "module1"s, "submodule1a"s)); + REQUIRE(IsDirectoryPackage(src, "module2"s, "concepts"s)); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("detail::AImpl"))); - REQUIRE_THAT(src, IsEnum(_A("XYZ"))); - REQUIRE_THAT(src, IsEnum(_A("ABC"))); - - REQUIRE_THAT(src, IsPackage("module1")); - REQUIRE_THAT(src, IsPackage("module2")); - REQUIRE_THAT(src, IsPackage("submodule1a")); - REQUIRE_THAT(src, IsPackage("concepts")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsEnum; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("detail::AImpl"))); - REQUIRE_THAT(src, IsEnum(_A("XYZ"))); - REQUIRE_THAT(src, IsEnum(_A("ABC"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00066/test_case.h b/tests/t00066/test_case.h index 89959407..4f930b04 100644 --- a/tests/t00066/test_case.h +++ b/tests/t00066/test_case.h @@ -20,142 +20,39 @@ TEST_CASE("t00066") { using namespace clanguml::test; - auto [config, db] = load_config("t00066"); - - auto diagram = config.diagrams["t00066_class"]; - - REQUIRE(diagram->name == "t00066_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00066_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00066", "t00066_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); REQUIRE(!IsDependency(src, "A", "A")); - REQUIRE(IsMethod(src,"A"))); - REQUIRE(IsMethod(src, "A", "void", "A &&")); - REQUIRE(IsMethod(src, "A", "void", "const A &")); + REQUIRE(IsMethod(src, "A", "A")); + REQUIRE(IsMethod(src, "A", "A", "void", "A &&")); + REQUIRE(IsMethod(src, "A", "A", "void", "const A &")); - REQUIRE(IsMethod(src, "~A")); + REQUIRE(IsMethod(src, "A", "~A")); - REQUIRE(IsMethod(src,"basic_method"))); - REQUIRE(IsMethod(src,"static_method", "int"))); - REQUIRE(IsMethod(src,"const_method"))); - REQUIRE(IsMethod(src,"default_int", "int", "int i = 12"))); - REQUIRE(IsMethod(src, "default_string", "std::string", + REQUIRE(IsMethod(src, "A", "basic_method")); + REQUIRE(IsMethod(src, "A", "static_method", "int")); + REQUIRE(IsMethod(src, "A", "const_method")); + REQUIRE(IsMethod(src, "A", "default_int", "int", "int i = 12")); + REQUIRE(IsMethod(src, "A", "default_string", "std::string", "int i, std::string s = \"abc\"")); - REQUIRE(IsMethod(src, "size", "std::size_t")); + REQUIRE(IsMethod(src, "A", "size", "std::size_t")); - REQUIRE(IsMethod(src, "protected_method")); - REQUIRE(IsMethod(src, "private_method")); - REQUIRE(IsField(src, "public_member", "int")); - REQUIRE(IsField(src, "protected_member", "int")); - REQUIRE(IsField(src, "private_member", "int")); - REQUIRE( - (IsField(src,"auto_member", "const unsigned long")); + REQUIRE(IsMethod(src, "A", "protected_method")); + REQUIRE(IsMethod(src, "A", "private_method")); + REQUIRE(IsField(src, "A", "public_member", "int")); + REQUIRE(IsField(src, "A", "protected_member", "int")); + REQUIRE(IsField(src, "A", "private_member", "int")); + REQUIRE(IsField( + src, "A", "auto_member", "const unsigned long")); - REQUIRE(IsField(src,"a_", "int")); - REQUIRE(IsField(src,"b_", "int")); - REQUIRE(IsField(src,"c_", "int")); + REQUIRE(IsField(src, "A", "a_", "int")); + REQUIRE(IsField(src, "A", "b_", "int")); + REQUIRE(IsField(src, "A", "c_", "int")); }); - - /* -{ - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - - REQUIRE_THAT(src, !IsDependency(_A("A"), _A("A"))); - - REQUIRE_THAT(src, (IsMethod("A"))); - REQUIRE_THAT(src, (IsMethod("A", "void", "A &&"))); - REQUIRE_THAT( - src, (IsMethod("A", "void", "const A &"))); - - REQUIRE_THAT(src, (IsMethod("~A"))); - - REQUIRE_THAT(src, (IsMethod("basic_method"))); - REQUIRE_THAT(src, (IsMethod("static_method", "int"))); - REQUIRE_THAT(src, (IsMethod("const_method"))); - REQUIRE_THAT( - src, (IsMethod("default_int", "int", "int i = 12"))); - REQUIRE_THAT(src, - (IsMethod("default_string", "std::string", - "int i, std::string s = \"abc\""))); - - REQUIRE_THAT(src, (IsMethod("size", "std::size_t"))); - - REQUIRE_THAT(src, (IsMethod("protected_method"))); - REQUIRE_THAT(src, (IsMethod("private_method"))); - REQUIRE_THAT(src, (IsField("public_member", "int"))); - REQUIRE_THAT(src, (IsField("protected_member", "int"))); - REQUIRE_THAT(src, (IsField("private_member", "int"))); - REQUIRE_THAT(src, - (IsField("auto_member", "const unsigned long"))); - - REQUIRE_THAT(src, (IsField("a_", "int"))); - REQUIRE_THAT(src, (IsField("b_", "int"))); - REQUIRE_THAT(src, (IsField("c_", "int"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); -} - -{ - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); -} -{ - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsField; - using mermaid::IsMethod; - - REQUIRE_THAT(src, IsClass(_A("A"))); - - REQUIRE_THAT(src, !IsDependency(_A("A"), _A("A"))); - - REQUIRE_THAT(src, (IsMethod("A"))); - REQUIRE_THAT(src, (IsMethod("A", "void", "A &&"))); - REQUIRE_THAT( - src, (IsMethod("A", "void", "const A &"))); - - REQUIRE_THAT(src, (IsMethod("~A"))); - - REQUIRE_THAT(src, (IsMethod("basic_method"))); - REQUIRE_THAT(src, (IsMethod("static_method", "int"))); - REQUIRE_THAT(src, (IsMethod("const_method"))); - REQUIRE_THAT( - src, (IsMethod("default_int", "int", "int i = 12"))); - REQUIRE_THAT(src, - (IsMethod("default_string", "std::string", - "int i, std::string s = \"abc\""))); - - REQUIRE_THAT(src, (IsMethod("size", "std::size_t"))); - - REQUIRE_THAT(src, (IsMethod("protected_method"))); - REQUIRE_THAT(src, (IsMethod("private_method"))); - REQUIRE_THAT(src, (IsField("public_member", "int"))); - REQUIRE_THAT(src, (IsField("protected_member", "int"))); - REQUIRE_THAT(src, (IsField("private_member", "int"))); - REQUIRE_THAT(src, - (IsField("auto_member", "const unsigned long"))); - - REQUIRE_THAT(src, (IsField("a_", "int"))); - REQUIRE_THAT(src, (IsField("b_", "int"))); - REQUIRE_THAT(src, (IsField("c_", "int"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); -}*/ } \ No newline at end of file diff --git a/tests/t00067/test_case.h b/tests/t00067/test_case.h index 62e8775b..5182cad3 100644 --- a/tests/t00067/test_case.h +++ b/tests/t00067/test_case.h @@ -20,68 +20,16 @@ TEST_CASE("t00067") { using namespace clanguml::test; - auto [config, db] = load_config("t00067"); - - auto diagram = config.diagrams["t00067_class"]; - - REQUIRE(diagram->name == "t00067_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00067_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00067", "t00067_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { - REQUIRE(!(IsMethod(src, "A"))); - REQUIRE(!(IsMethod(src, "A", "void", "A &&"))); - REQUIRE(!(IsMethod(src, "A", "void", "const A &"))); + REQUIRE(!IsMethod(src, "A", "A")); + REQUIRE(!IsMethod(src, "A", "void", "A &&")); + REQUIRE(!IsMethod(src, "A", "void", "const A &")); - REQUIRE(!(IsMethod(src, "~A"))); + REQUIRE(!IsMethod(src, "A", "~A")); - REQUIRE(!(IsMethod(src, "~A"))); + REQUIRE(!IsMethod(src, "A", "~A")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, !(IsMethod("A"))); - REQUIRE_THAT(src, !(IsMethod("A", "void", "A &&"))); - REQUIRE_THAT( - src, !(IsMethod("A", "void", "const A &"))); - - REQUIRE_THAT(src, !(IsMethod("~A"))); - - REQUIRE_THAT(src, !(IsMethod("~A"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsMethod; - - REQUIRE_THAT(src, !(IsMethod("A"))); - REQUIRE_THAT(src, !(IsMethod("A", "void", "A &&"))); - REQUIRE_THAT( - src, !(IsMethod("A", "void", "const A &"))); - - REQUIRE_THAT(src, !(IsMethod("~A"))); - - REQUIRE_THAT(src, !(IsMethod("~A"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t00068/test_case.h b/tests/t00068/test_case.h index 57b96ffb..ab6bd96b 100644 --- a/tests/t00068/test_case.h +++ b/tests/t00068/test_case.h @@ -20,13 +20,8 @@ TEST_CASE("t00068_r0") { using namespace clanguml::test; - auto [config, db] = load_config("t00068"); - - auto diagram = config.diagrams["t00068_r0_class"]; - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00068_r0_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00068", "t00068_r0_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!IsClass(src, "A")); @@ -47,13 +42,9 @@ TEST_CASE("t00068_r1") { using namespace clanguml::test; - auto [config, db] = load_config("t00068"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00068", "t00068_r1_class"); - auto diagram = config.diagrams["t00068_r1_class"]; - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00068_r1_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(!IsClass(src, "A")); REQUIRE(IsClass(src, "AA")); @@ -73,13 +64,8 @@ TEST_CASE("t00068_r2") { using namespace clanguml::test; - auto [config, db] = load_config("t00068"); - - auto diagram = config.diagrams["t00068_r2_class"]; - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00068_r2_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00068", "t00068_r2_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); diff --git a/tests/t00069/test_case.h b/tests/t00069/test_case.h index b72232e3..2f56279c 100644 --- a/tests/t00069/test_case.h +++ b/tests/t00069/test_case.h @@ -20,92 +20,23 @@ TEST_CASE("t00069") { using namespace clanguml::test; - auto [config, db] = load_config("t00069"); - - auto diagram = config.diagrams["t00069_class"]; - - REQUIRE(diagram->name == "t00069_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00069_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00069", "t00069_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); - REQUIRE(IsClassTemplate(src, "generator", "T")); + REQUIRE(IsClassTemplate(src, "generator")); - REQUIRE( - IsInnerClass(src,("generator", "generator::promise_type")); + REQUIRE(IsInnerClass(src, "generator", "generator::promise_type")); - REQUIRE( - IsMethod(src,"iota", "generator")); - REQUIRE( - IsMethod(src,"seed", "generator")); + REQUIRE(IsMethod( + src, "A", "iota", "generator")); + REQUIRE(IsMethod( + src, "A", "seed", "generator")); + REQUIRE(IsDependency(src, "A", "generator")); REQUIRE( - IsDependency(src,"A", "generator")); - REQUIRE( - IsInstantiation( - src,"generator", "generator")); + IsInstantiation(src, "generator", "generator")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - - // Check if class templates exist - REQUIRE_THAT(src, IsClassTemplate("generator", "T")); - - // Check if all inner classes exist - REQUIRE_THAT(src, - IsInnerClass(_A("generator"), - _A("generator::promise_type"))); - - // Check if all methods exist - REQUIRE_THAT(src, - (IsMethod("iota", "generator"))); REQUIRE_THAT(src, (IsMethod("seed", - "generator"))); - - // Check if all relationships exist - REQUIRE_THAT( - src, IsDependency(_A("A"), _A("generator"))); - REQUIRE_THAT(src, - IsInstantiation( - _A("generator"), _A("generator"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - using mermaid::IsMethod; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, - (IsMethod("iota", "generator"))); REQUIRE_THAT(src, (IsMethod("seed", - "generator"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00070/test_case.h b/tests/t00070/test_case.h index 84d6644e..edde2b70 100644 --- a/tests/t00070/test_case.h +++ b/tests/t00070/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00070") { using namespace clanguml::test; - auto [config, db] = load_config("t00070"); - - auto diagram = config.diagrams["t00070_class"]; - - REQUIRE(diagram->name == "t00070_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00070_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00070", "t00070_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -42,55 +35,4 @@ TEST_CASE("t00070") REQUIRE(!IsClass(src, "BBBB")); REQUIRE(!IsEnum(src, "CCC")); }); - - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(!IsClass(j, "C")); - - REQUIRE(InPublicModule(j, "A", "t00070")); - REQUIRE(InPublicModule(j, "B", "t00070.lib1")); - - REQUIRE(!IsClass(j, "BBBB")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - using mermaid::IsEnum; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, !IsClass(_A("C"))); - - REQUIRE_THAT(src, IsClass(_A("BB"))); - REQUIRE_THAT(src, !IsClass(_A("CC"))); - - REQUIRE_THAT(src, IsEnum(_A("BBB"))); - REQUIRE_THAT(src, !IsClass(_A("BBBB"))); - REQUIRE_THAT(src, !IsEnum(_A("CCC"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00071/test_case.h b/tests/t00071/test_case.h index 485dd416..fcdec30b 100644 --- a/tests/t00071/test_case.h +++ b/tests/t00071/test_case.h @@ -19,16 +19,10 @@ TEST_CASE("t00071") { using namespace clanguml::test; + using namespace std::string_literals; - auto [config, db] = load_config("t00071"); - - auto diagram = config.diagrams["t00071_class"]; - - REQUIRE(diagram->name == "t00071_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00071_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00071", "t00071_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -42,51 +36,4 @@ TEST_CASE("t00071") REQUIRE(IsModulePackage(src, "app"s, "lib1"s, "mod1"s)); REQUIRE(IsModulePackage(src, "app"s, "lib1"s, "mod2"s)); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsEnum(_A("detail::BBB"))); - REQUIRE_THAT(src, IsEnum(_A("detail::CCC"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s, "mod1"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s, "mod2"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - using mermaid::IsEnum; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsEnum(_A("detail::BBB"))); - REQUIRE_THAT(src, IsEnum(_A("detail::CCC"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00072/test_case.h b/tests/t00072/test_case.h index d383d907..87d29ab0 100644 --- a/tests/t00072/test_case.h +++ b/tests/t00072/test_case.h @@ -19,23 +19,17 @@ TEST_CASE("t00072") { using namespace clanguml::test; + using namespace std::string_literals; - auto [config, db] = load_config("t00072"); - - auto diagram = config.diagrams["t00072_class"]; - - REQUIRE(diagram->name == "t00072_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00072_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00072", "t00072_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { - REQUIRE(IsPackage(src, "app")); - REQUIRE(IsPackage(src, ":lib1")); - REQUIRE(IsPackage(src, ":lib2")); - REQUIRE(IsPackage(src, "mod1")); - REQUIRE(IsPackage(src, "mod2")); + REQUIRE(IsModulePackage(src, "app"s)); + REQUIRE(IsModulePackage(src, "app"s, ":lib1"s)); + REQUIRE(IsModulePackage(src, "app"s, ":lib1"s, "mod1"s)); + REQUIRE(IsModulePackage(src, "app"s, ":lib1"s, "mod2"s)); + REQUIRE(IsModulePackage(src, "app"s, ":lib2"s)); REQUIRE(IsClass(src, "A")); REQUIRE(IsClass(src, "C")); @@ -49,79 +43,4 @@ TEST_CASE("t00072") REQUIRE(IsClass(src, "D")); REQUIRE(IsClass(src, "E")); }); - /* - - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsPackage("app")); - REQUIRE_THAT(src, IsPackage(":lib1")); - REQUIRE_THAT(src, IsPackage(":lib2")); - REQUIRE_THAT(src, IsPackage("mod1")); - REQUIRE_THAT(src, IsPackage("mod2")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClassTemplate("CC", "T")); - REQUIRE_THAT(src, IsEnum(_A("detail::CCC"))); - - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClassTemplate("BB", "T")); - REQUIRE_THAT(src, IsEnum(_A("detail::BBB"))); - - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "C")); - REQUIRE(IsClass(j, "D")); - REQUIRE(IsEnum(j, "detail::CCC")); - REQUIRE(IsEnum(j, "detail::BBB")); - - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib1"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib1"s, "mod1"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib1"s, "mod2"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib2"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - using mermaid::IsEnum; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("C"))); - REQUIRE_THAT(src, IsClass(_A("CC"))); - REQUIRE_THAT(src, IsEnum(_A("detail::CCC"))); - - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("BB"))); - REQUIRE_THAT(src, IsEnum(_A("detail::BBB"))); - - REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(src, IsClass(_A("E"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - } - */ } \ No newline at end of file diff --git a/tests/t00073/test_case.h b/tests/t00073/test_case.h index 3168358f..9491a1c9 100644 --- a/tests/t00073/test_case.h +++ b/tests/t00073/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t00073") { using namespace clanguml::test; - auto [config, db] = load_config("t00073"); - - auto diagram = config.diagrams["t00073_class"]; - - REQUIRE(diagram->name == "t00073_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00073_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00073", "t00073_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsClass(src, "A")); @@ -45,69 +38,4 @@ TEST_CASE("t00073") REQUIRE(IsAggregation( src, "R", "Overload", "dispatch")); }); - /* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("AHandler"))); - REQUIRE_THAT(src, IsClass(_A("BHandler"))); - REQUIRE_THAT(src, IsClassTemplate("Overload", "Bases...")); - REQUIRE_THAT(src, IsClassTemplate("Overload", "AHandler,BHandler")); - - REQUIRE_THAT(src, IsDependency(_A("AHandler"), _A("A"))); - REQUIRE_THAT(src, IsDependency(_A("BHandler"), _A("B"))); - REQUIRE_THAT(src, - IsInstantiation( - _A("Overload"), - _A("Overload"))); REQUIRE_THAT(src, IsAggregation( - _A("R"), _A("Overload"), "+dispatch")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsClassTemplate(j, "Overload")); - REQUIRE(IsClass(j, "A")); - REQUIRE(IsClass(j, "B")); - REQUIRE(IsClass(j, "AHandler")); - REQUIRE(IsClass(j, "BHandler")); - REQUIRE(IsClass(j, "Overload")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("AHandler"))); - REQUIRE_THAT(src, IsClass(_A("BHandler"))); - REQUIRE_THAT(src, IsClass(_A("Overload"))); - REQUIRE_THAT(src, IsClass(_A("Overload"))); - - REQUIRE_THAT(src, IsDependency(_A("AHandler"), _A("A"))); - REQUIRE_THAT(src, IsDependency(_A("BHandler"), _A("B"))); - REQUIRE_THAT(src, - IsInstantiation( - _A("Overload"), - _A("Overload"))); REQUIRE_THAT(src, IsAggregation( - _A("R"), _A("Overload"), "+dispatch")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - }*/ } \ No newline at end of file diff --git a/tests/t00074/test_case.h b/tests/t00074/test_case.h index 94d4b6c1..3c18a396 100644 --- a/tests/t00074/test_case.h +++ b/tests/t00074/test_case.h @@ -20,87 +20,29 @@ TEST_CASE("t00074") { using namespace clanguml::test; - auto [config, db] = load_config("t00074"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00074", "t00074_class"); - auto diagram = config.diagrams["t00074_class"]; + CHECK_CLASS_DIAGRAM( + config, diagram, *model, + [](const auto &src) { + REQUIRE(IsConcept(src, "fruit_c")); + REQUIRE(IsConcept(src, "apple_c")); + REQUIRE(IsConcept(src, "orange_c")); - REQUIRE(diagram->name == "t00074_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00074_class"); - - CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { - REQUIRE(IsConcept(src, "fruit_c")); - REQUIRE(IsConcept(src, "apple_c")); - REQUIRE(IsConcept(src, "orange_c")); - - REQUIRE(IsConstraint(src, "apple_c", "fruit_c", "T")); - REQUIRE(IsConstraint(src, "orange_c", "fruit_c", "T")); - - REQUIRE(!IsConceptRequirement(src, "apple_c", "t.get_sweetness()")); - REQUIRE( - !IsConceptRequirement(src, "orange_c", "t.get_bitterness()")); - }); -/* - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsConcept(_A("fruit_c"))); - REQUIRE_THAT(src, IsConcept(_A("apple_c"))); - REQUIRE_THAT(src, IsConcept(_A("orange_c"))); - - REQUIRE_THAT( - src, IsConstraint(_A("apple_c"), _A("fruit_c"), "T")); - REQUIRE_THAT( - src, IsConstraint(_A("orange_c"), _A("fruit_c"), "T")); - - REQUIRE_THAT( - src, !IsConceptRequirement(_A("apple_c"), "t.get_sweetness()")); - REQUIRE_THAT(src, - !IsConceptRequirement(_A("orange_c"), "t.get_bitterness()")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - REQUIRE(IsConcept(j, "fruit_c")); - REQUIRE(IsConcept(j, "apple_c")); - REQUIRE(IsConcept(j, "orange_c")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsConcept; - using mermaid::IsConceptRequirement; - using mermaid::IsConstraint; - - REQUIRE_THAT(src, IsConcept(_A("fruit_c"))); - REQUIRE_THAT(src, IsConcept(_A("apple_c"))); - REQUIRE_THAT(src, IsConcept(_A("orange_c"))); - - REQUIRE_THAT( - src, IsConstraint(_A("apple_c"), _A("fruit_c"), "T")); - REQUIRE_THAT( - src, IsConstraint(_A("orange_c"), _A("fruit_c"), "T")); - - REQUIRE_THAT( - src, !IsConceptRequirement(_A("apple_c"), "t.get_sweetness()")); - REQUIRE_THAT( - src, !IsConceptRequirement(_A("apple_c"), "t.get_bitterness()")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ + REQUIRE(IsConstraint(src, "apple_c", "fruit_c", "T")); + REQUIRE(IsConstraint(src, "orange_c", "fruit_c", "T")); + }, + [](const plantuml_t &src) { + REQUIRE( + !IsConceptRequirement(src, "apple_c", "t.get_sweetness()")); + REQUIRE(!IsConceptRequirement( + src, "orange_c", "t.get_bitterness()")); + }, + [](const mermaid_t &src) { + REQUIRE( + !IsConceptRequirement(src, "apple_c", "t.get_sweetness()")); + REQUIRE(!IsConceptRequirement( + src, "orange_c", "t.get_bitterness()")); + }); } \ No newline at end of file diff --git a/tests/t00075/test_case.h b/tests/t00075/test_case.h index 7170d6dc..7d551eb0 100644 --- a/tests/t00075/test_case.h +++ b/tests/t00075/test_case.h @@ -20,94 +20,25 @@ TEST_CASE("t00075") { using namespace clanguml::test; - auto [config, db] = load_config("t00075"); - - auto diagram = config.diagrams["t00075_class"]; - - REQUIRE(diagram->name == "t00075_class"); - - auto model = generate_class_diagram(*db, diagram); - - REQUIRE(model->name() == "t00075_class"); + auto [config, db, diagram, model] = + CHECK_CLASS_MODEL("t00075", "t00075_class"); CHECK_CLASS_DIAGRAM(config, diagram, *model, [](const auto &src) { - REQUIRE(IsClass(src, "A")); - REQUIRE(IsClass(src, "B")); - REQUIRE(IsClassTemplate(src, "ABE")); - REQUIRE(IsClass(src, "R")); + REQUIRE(IsClass(src, {"ns1::ns2", "A"})); + REQUIRE(IsClass(src, {"ns1::ns2", "B"})); + REQUIRE(IsClass(src, {"ns1::ns2", "ABE"})); + REQUIRE(IsClass(src, {"ns1::ns2", "R"})); - REQUIRE(IsEnum(src, "E")); + REQUIRE(IsEnum(src, {"ns1::ns2", "E"})); - REQUIRE(IsConcept(src, "C")); + REQUIRE(IsConcept(src, {"ns1::ns2", "C"})); REQUIRE(IsConceptRequirement(src, "C", "T{}")); REQUIRE(IsConceptRequirement(src, "C", "t.e()")); - REQUIRE(IsConceptRequirement(src, "C", "(T t)")); - REQUIRE(!IsConceptRequirement(src, "C", "(T ns1::ns2::t)")); + REQUIRE(IsConceptParameterList(src, "C", "(T t)")); + REQUIRE(!IsConceptParameterList(src, "C", "(T ns1::ns2::t)")); - REQUIRE(IsConstraint(src, "ABE", "C", "T", - "up[#green,dashed,thickness=2]")); + REQUIRE(IsConstraint(src, {"ns1::ns2", "ABE"}, + {"ns1::ns2", "C"}, "T", "up[#green,dashed,thickness=2]")); }); - - { - auto src = generate_class_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(src, IsClass(_A("ABE"))); - REQUIRE_THAT(src, IsClass(_A("R"))); - - REQUIRE_THAT(src, IsEnum(_A("E"))); - - REQUIRE_THAT(src, IsConcept(_A("C"))); - - REQUIRE_THAT(src, IsConceptRequirement(_A("C"), "T{}")); - REQUIRE_THAT(src, IsConceptRequirement(_A("C"), "t.e()")); - REQUIRE_THAT(src, IsConceptRequirement(_A("C"), "(T t)")); - REQUIRE_THAT(src, !IsConceptRequirement(_A("C"), "(T ns1::ns2::t)")); - - REQUIRE_THAT(src, - IsConstraint(_A("ABE"), _A("C"), "T", - "up[#green,dashed,thickness=2]")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_class_json(diagram, *model); - - using namespace json; - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_class_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsClass; - using mermaid::IsConcept; - using mermaid::IsConceptRequirement; - using mermaid::IsEnum; - - // Check if all classes exist - REQUIRE_THAT(src, IsClass(_A("ns1::ns2::A"))); - REQUIRE_THAT(src, IsClass(_A("ns1::ns2::B"))); - REQUIRE_THAT(src, IsClass(_A("ns1::ns2::ABE"))); - REQUIRE_THAT(src, IsClass(_A("ns1::ns2::R"))); - - REQUIRE_THAT(src, IsEnum(_A("ns1::ns2::E"))); - - REQUIRE_THAT(src, IsConcept(_A("ns1::ns2::C"))); - - REQUIRE_THAT(src, IsConceptRequirement(_A("ns1::ns2::C"), "T{}")); - REQUIRE_THAT(src, IsConceptRequirement(_A("ns1::ns2::C"), "t.e()")); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - } } \ No newline at end of file diff --git a/tests/t30001/test_case.h b/tests/t30001/test_case.h index 8b85fbe1..80e3e4f2 100644 --- a/tests/t30001/test_case.h +++ b/tests/t30001/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30001") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30001"); - - auto diagram = config.diagrams["t30001_package"]; - - REQUIRE(diagram->name == "t30001_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30001_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30001", "t30001_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(HasTitle(src, "Basic package diagram example")); diff --git a/tests/t30002/test_case.h b/tests/t30002/test_case.h index 8b5daa65..bc0badda 100644 --- a/tests/t30002/test_case.h +++ b/tests/t30002/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30002") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30002"); - - auto diagram = config.diagrams["t30002_package"]; - - REQUIRE(diagram->name == "t30002_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30002_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30002", "t30002_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "A"s, "AA"s)); @@ -73,149 +66,4 @@ TEST_CASE("t30002") REQUIRE(IsDependency(src, "BBB", "A17")); REQUIRE(IsDependency(src, "BBB", "A18")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - 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(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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A1"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A2"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A3"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A4"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A5"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A6"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A7"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A8"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A9"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A10"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A11"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A12"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A13"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A14"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A15"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A16"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A17"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "A18"s)); - - REQUIRE(IsNamespacePackage(j, "B"s, "BB"s, "BBB"s)); - - REQUIRE(IsDependency(j, "BBB", "A1")); - REQUIRE(IsDependency(j, "BBB", "A2")); - REQUIRE(IsDependency(j, "BBB", "A3")); - REQUIRE(IsDependency(j, "BBB", "A4")); - REQUIRE(IsDependency(j, "BBB", "A5")); - REQUIRE(IsDependency(j, "BBB", "A6")); - REQUIRE(IsDependency(j, "BBB", "A7")); - REQUIRE(IsDependency(j, "BBB", "A8")); - REQUIRE(IsDependency(j, "BBB", "A9")); - REQUIRE(IsDependency(j, "BBB", "A10")); - REQUIRE(IsDependency(j, "BBB", "A11")); - REQUIRE(IsDependency(j, "BBB", "A12")); - REQUIRE(IsDependency(j, "BBB", "A13")); - REQUIRE(IsDependency(j, "BBB", "A14")); - REQUIRE(IsDependency(j, "BBB", "A15")); - REQUIRE(IsDependency(j, "BBB", "A16")); - REQUIRE(IsDependency(j, "BBB", "A17")); - REQUIRE(IsDependency(j, "BBB", "A18")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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 301bbb73..841e14b4 100644 --- a/tests/t30003/test_case.h +++ b/tests/t30003/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30003") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30003"); - - auto diagram = config.diagrams["t30003_package"]; - - REQUIRE(diagram->name == "t30003_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30003_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30003", "t30003_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "ns1"s)); @@ -39,7 +32,7 @@ TEST_CASE("t30003") REQUIRE(IsNamespacePackage(src, "ns3"s, "ns1"s)); REQUIRE(IsNamespacePackage(src, "ns3"s, "ns1"s, "ns2"s)); - // REQUIRE(IsDeprecated(src, "ns2_v0_9_0")); - // REQUIRE(IsDeprecated(src, "ns3")); + REQUIRE(IsDeprecated(src, "ns2_v0_9_0")); + REQUIRE(IsDeprecated(src, "ns3")); }); } diff --git a/tests/t30004/test_case.h b/tests/t30004/test_case.h index 4829f92a..91c49361 100644 --- a/tests/t30004/test_case.h +++ b/tests/t30004/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30004") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30004"); - - auto diagram = config.diagrams["t30004_package"]; - - REQUIRE(diagram->name == "t30004_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30004_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30004", "t30004_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "A"s)); @@ -39,49 +32,4 @@ TEST_CASE("t30004") REQUIRE(!IsNamespacePackage(src, "A"s, "DDD"s)); REQUIRE(IsNamespacePackage(src, "A"s, "EEE"s)); }); - /*{ - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - 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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "A"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AAA"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "BBB"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "CCC"s)); - REQUIRE(!IsNamespacePackage(j, "A"s, "DDD"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "EEE"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - - 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 ef0098b3..055f8359 100644 --- a/tests/t30005/test_case.h +++ b/tests/t30005/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30005") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30005"); - - auto diagram = config.diagrams["t30005_package"]; - - REQUIRE(diagram->name == "t30005_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30005_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30005", "t30005_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "A"s)); @@ -45,60 +38,4 @@ TEST_CASE("t30005") REQUIRE(IsDependency(src, "BBB", "AAA")); REQUIRE(IsDependency(src, "CCC", "AAA")); }); -/* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsPackage("AAA")); - REQUIRE_THAT(src, IsPackage("BBB")); - REQUIRE_THAT(src, IsPackage("CCC")); - - REQUIRE_THAT(src, IsDependency(_A("BBB"), _A("AAA"))); - REQUIRE_THAT(src, IsDependency(_A("CCC"), _A("AAA"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "A"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s, "AAA"s)); - REQUIRE(IsNamespacePackage(j, "B"s)); - REQUIRE(IsNamespacePackage(j, "B"s, "BB"s)); - REQUIRE(IsNamespacePackage(j, "B"s, "BB"s, "BBB"s)); - REQUIRE(IsNamespacePackage(j, "C"s)); - REQUIRE(IsNamespacePackage(j, "C"s, "CC"s)); - REQUIRE(IsNamespacePackage(j, "C"s, "CC"s, "CCC"s)); - - REQUIRE(IsDependency(j, "BBB", "AAA")); - REQUIRE(IsDependency(j, "CCC", "AAA")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - - 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 3e580e14..b71807cb 100644 --- a/tests/t30006/test_case.h +++ b/tests/t30006/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30006") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30006"); - - auto diagram = config.diagrams["t30006_package"]; - - REQUIRE(diagram->name == "t30006_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30006_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30006", "t30006_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "A"s)); @@ -39,54 +32,4 @@ TEST_CASE("t30006") REQUIRE(IsDependency(src, "A", "B")); REQUIRE(IsDependency(src, "A", "C")); }); - - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsPackage("A")); - REQUIRE_THAT(src, IsPackage("B")); - REQUIRE_THAT(src, IsPackage("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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "A"s)); - REQUIRE(IsNamespacePackage(j, "B"s)); - REQUIRE(IsNamespacePackage(j, "C"s)); - - REQUIRE(IsDependency(j, "A", "B")); - REQUIRE(IsDependency(j, "A", "C")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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 58fd9b39..3832c181 100644 --- a/tests/t30007/test_case.h +++ b/tests/t30007/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30007") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30007"); - - auto diagram = config.diagrams["t30007_package"]; - - REQUIRE(diagram->name == "t30007_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30007_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30007", "t30007_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "A"s)); @@ -39,60 +32,8 @@ TEST_CASE("t30007") REQUIRE(IsDependency(src, "AA", "B")); REQUIRE(IsDependency(src, "AA", "C")); + + REQUIRE(IsLayoutHint(src, "C", "up", "AA")); + REQUIRE(IsLayoutHint(src, "C", "left", "B")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsPackage("A")); - REQUIRE_THAT(src, IsPackage("B")); - REQUIRE_THAT(src, IsPackage("C")); - - REQUIRE_THAT(src, IsDependency(_A("AA"), _A("B"))); - REQUIRE_THAT(src, IsDependency(_A("AA"), _A("C"))); - - 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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "A"s)); - REQUIRE(IsNamespacePackage(j, "A"s, "AA"s)); - REQUIRE(IsNamespacePackage(j, "B"s)); - REQUIRE(IsNamespacePackage(j, "C"s)); - - REQUIRE(IsDependency(j, "AA", "B")); - REQUIRE(IsDependency(j, "AA", "C")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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 9100a09e..95c3d048 100644 --- a/tests/t30008/test_case.h +++ b/tests/t30008/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30008") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30008"); - - auto diagram = config.diagrams["t30008_package"]; - - REQUIRE(diagram->name == "t30008_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30008_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30008", "t30008_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "dependants"s, "A"s)); @@ -48,81 +41,4 @@ TEST_CASE("t30008") REQUIRE(IsDependency(src, "E", "D")); REQUIRE(IsDependency(src, "F", "E")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - REQUIRE_THAT(src, IsPackage("A")); - REQUIRE_THAT(src, IsPackage("B")); - REQUIRE_THAT(src, IsPackage("C")); - REQUIRE_THAT(src, !IsPackage("X")); - - REQUIRE_THAT(src, IsDependency(_A("B"), _A("A"))); - REQUIRE_THAT(src, IsDependency(_A("C"), _A("B"))); - - REQUIRE_THAT(src, IsPackage("D")); - REQUIRE_THAT(src, IsPackage("E")); - REQUIRE_THAT(src, IsPackage("F")); - REQUIRE_THAT(src, !IsPackage("Y")); - - REQUIRE_THAT(src, IsDependency(_A("E"), _A("D"))); - REQUIRE_THAT(src, IsDependency(_A("F"), _A("E"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "dependants"s, "A"s)); - REQUIRE(IsNamespacePackage(j, "dependants"s, "B"s)); - REQUIRE(IsNamespacePackage(j, "dependants"s, "C"s)); - REQUIRE(!IsNamespacePackage(j, "dependants"s, "X"s)); - - REQUIRE(IsDependency(j, "B", "A")); - REQUIRE(IsDependency(j, "C", "B")); - - REQUIRE(IsNamespacePackage(j, "dependencies"s, "D"s)); - REQUIRE(IsNamespacePackage(j, "dependencies"s, "E"s)); - REQUIRE(IsNamespacePackage(j, "dependencies"s, "F"s)); - REQUIRE(!IsNamespacePackage(j, "dependencies"s, "Y"s)); - - REQUIRE(IsDependency(j, "E", "D")); - REQUIRE(IsDependency(j, "F", "E")); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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 8a2156b3..6644441a 100644 --- a/tests/t30009/test_case.h +++ b/tests/t30009/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30009") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30009"); - - auto diagram = config.diagrams["t30009_package"]; - - REQUIRE(diagram->name == "t30009_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30009_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30009", "t30009_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsNamespacePackage(src, "One"s)); @@ -43,58 +36,4 @@ TEST_CASE("t30009") REQUIRE(IsNamespacePackage(src, "Two"s, "C"s)); REQUIRE(IsNamespacePackage(src, "Two"s, "D"s)); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all packages exist - 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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsNamespacePackage(j, "One"s)); - REQUIRE(IsNamespacePackage(j, "Two"s)); - REQUIRE(IsNamespacePackage(j, "One"s, "A"s)); - REQUIRE(IsNamespacePackage(j, "One"s, "B"s)); - REQUIRE(IsNamespacePackage(j, "One"s, "C"s)); - REQUIRE(IsNamespacePackage(j, "One"s, "D"s)); - REQUIRE(IsNamespacePackage(j, "Two"s, "A"s)); - REQUIRE(IsNamespacePackage(j, "Two"s, "B"s)); - REQUIRE(IsNamespacePackage(j, "Two"s, "C"s)); - REQUIRE(IsNamespacePackage(j, "Two"s, "D"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - - 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 cab73e2b..e48ebbc2 100644 --- a/tests/t30010/test_case.h +++ b/tests/t30010/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30010") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30010"); - - auto diagram = config.diagrams["t30010_package"]; - - REQUIRE(diagram->name == "t30010_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30010_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30010", "t30010_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsDirectoryPackage(src, "app"s)); @@ -43,63 +36,4 @@ TEST_CASE("t30010") REQUIRE(IsDependency(src, "app", "lib3")); REQUIRE(IsDependency(src, "app", "lib4")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - 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(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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsDirectoryPackage(j, "app"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib1"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib2"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib3"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib4"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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 098ab003..70153b43 100644 --- a/tests/t30011/test_case.h +++ b/tests/t30011/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30011") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30011"); - - auto diagram = config.diagrams["t30011_package"]; - - REQUIRE(diagram->name == "t30011_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30011_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30011", "t30011_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsDirectoryPackage(src, "app"s)); @@ -43,69 +36,4 @@ TEST_CASE("t30011") REQUIRE(IsDependency(src, "app", "lib3")); REQUIRE(IsDependency(src, "app", "lib4")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - 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(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", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsDirectoryPackage(j, "app"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib1"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib2"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib3"s)); - REQUIRE(IsDirectoryPackage(j, "libraries"s, "lib4"s)); - - REQUIRE(IsDependency(j, "app"s, "lib1"s)); - REQUIRE(IsDependency(j, "app"s, "lib2"s)); - REQUIRE(IsDependency(j, "app"s, "lib3"s)); - REQUIRE(IsDependency(j, "app"s, "lib4"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - 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/t30012/test_case.h b/tests/t30012/test_case.h index 8c4a6736..1c919c44 100644 --- a/tests/t30012/test_case.h +++ b/tests/t30012/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30012") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30012"); - - auto diagram = config.diagrams["t30012_package"]; - - REQUIRE(diagram->name == "t30012_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30012_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30012", "t30012_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsModulePackage(src, "app"s)); @@ -38,51 +31,4 @@ TEST_CASE("t30012") REQUIRE(IsModulePackage(src, "app"s, "lib1"s, "mod2"s)); REQUIRE(IsModulePackage(src, "app"s, "lib2"s)); }); -/* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all packages exist - REQUIRE_THAT(src, IsPackage("app")); - REQUIRE_THAT(src, IsPackage("lib1")); - REQUIRE_THAT(src, IsPackage("lib2")); - REQUIRE_THAT(src, IsPackage("mod1")); - REQUIRE_THAT(src, IsPackage("mod2")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s, "mod1"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib1"s, "mod2"s)); - REQUIRE(IsModulePackage(j, "app"s, "lib2"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - - REQUIRE_THAT(src, IsPackage(_A("app"))); - REQUIRE_THAT(src, IsPackage(_A("lib1"))); - REQUIRE_THAT(src, IsPackage(_A("lib2"))); - REQUIRE_THAT(src, IsPackage(_A("mod1"))); - REQUIRE_THAT(src, IsPackage(_A("mod2"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t30013/test_case.h b/tests/t30013/test_case.h index bfdf866e..5a5ac1db 100644 --- a/tests/t30013/test_case.h +++ b/tests/t30013/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30013") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30013"); - - auto diagram = config.diagrams["t30013_package"]; - - REQUIRE(diagram->name == "t30013_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30013_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30013", "t30013_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsModulePackage(src, "app"s)); @@ -71,133 +64,4 @@ TEST_CASE("t30013") REQUIRE(IsDependency(src, "app", "mod17")); REQUIRE(IsDependency(src, "app", "mod18")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all packages exist - REQUIRE_THAT(src, IsPackage("app")); - REQUIRE_THAT(src, IsPackage("mod1")); - REQUIRE_THAT(src, IsPackage("mod2")); - REQUIRE_THAT(src, IsPackage("mod3")); - REQUIRE_THAT(src, IsPackage("mod4")); - REQUIRE_THAT(src, IsPackage("mod5")); - REQUIRE_THAT(src, IsPackage("mod6")); - REQUIRE_THAT(src, IsPackage("mod7")); - REQUIRE_THAT(src, IsPackage("mod8")); - REQUIRE_THAT(src, IsPackage("mod9")); - REQUIRE_THAT(src, IsPackage("mod10")); - REQUIRE_THAT(src, IsPackage("mod11")); - REQUIRE_THAT(src, IsPackage("mod12")); - REQUIRE_THAT(src, IsPackage("mod13")); - REQUIRE_THAT(src, IsPackage("mod14")); - REQUIRE_THAT(src, IsPackage("mod15")); - REQUIRE_THAT(src, IsPackage("mod16")); - REQUIRE_THAT(src, IsPackage("mod17")); - REQUIRE_THAT(src, IsPackage("mod18")); - - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod1"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod2"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod3"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod4"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod5"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod6"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod7"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod8"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod9"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod10"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod11"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod12"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod13"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod14"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod15"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod16"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod17"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A("mod18"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "mod1"s)); - REQUIRE(IsModulePackage(j, "mod2"s)); - REQUIRE(IsModulePackage(j, "mod3"s)); - REQUIRE(IsModulePackage(j, "mod4"s)); - REQUIRE(IsModulePackage(j, "mod5"s)); - REQUIRE(IsModulePackage(j, "mod6"s)); - REQUIRE(IsModulePackage(j, "mod7"s)); - REQUIRE(IsModulePackage(j, "mod8"s)); - REQUIRE(IsModulePackage(j, "mod9"s)); - REQUIRE(IsModulePackage(j, "mod10"s)); - REQUIRE(IsModulePackage(j, "mod11"s)); - REQUIRE(IsModulePackage(j, "mod12"s)); - REQUIRE(IsModulePackage(j, "mod13"s)); - REQUIRE(IsModulePackage(j, "mod14"s)); - REQUIRE(IsModulePackage(j, "mod15"s)); - REQUIRE(IsModulePackage(j, "mod16"s)); - REQUIRE(IsModulePackage(j, "mod17"s)); - REQUIRE(IsModulePackage(j, "mod18"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - REQUIRE_THAT(src, IsPackage(_A("app"))); - REQUIRE_THAT(src, IsPackage(_A("mod1"))); - REQUIRE_THAT(src, IsPackage(_A("mod2"))); - REQUIRE_THAT(src, IsPackage(_A("mod3"))); - REQUIRE_THAT(src, IsPackage(_A("mod4"))); - REQUIRE_THAT(src, IsPackage(_A("mod5"))); - REQUIRE_THAT(src, IsPackage(_A("mod6"))); - REQUIRE_THAT(src, IsPackage(_A("mod7"))); - REQUIRE_THAT(src, IsPackage(_A("mod8"))); - REQUIRE_THAT(src, IsPackage(_A("mod9"))); - REQUIRE_THAT(src, IsPackage(_A("mod10"))); - REQUIRE_THAT(src, IsPackage(_A("mod11"))); - REQUIRE_THAT(src, IsPackage(_A("mod12"))); - REQUIRE_THAT(src, IsPackage(_A("mod13"))); - REQUIRE_THAT(src, IsPackage(_A("mod14"))); - REQUIRE_THAT(src, IsPackage(_A("mod15"))); - REQUIRE_THAT(src, IsPackage(_A("mod16"))); - REQUIRE_THAT(src, IsPackage(_A("mod17"))); - REQUIRE_THAT(src, IsPackage(_A("mod18"))); - - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod1"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod2"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod3"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod4"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod5"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod6"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod7"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod8"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod9"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod10"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod11"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod12"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod13"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod14"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod15"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod16"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod17"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A("mod18"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t30014/test_case.h b/tests/t30014/test_case.h index 63005d94..e98fee7d 100644 --- a/tests/t30014/test_case.h +++ b/tests/t30014/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30014") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30014"); - - auto diagram = config.diagrams["t30014_package"]; - - REQUIRE(diagram->name == "t30014_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30014_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30014", "t30014_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsModulePackage(src, "app"s)); @@ -38,50 +31,4 @@ TEST_CASE("t30014") REQUIRE(IsModulePackage(src, "app"s, ":lib1"s, "mod1"s)); REQUIRE(!IsModulePackage(src, "app"s, ":lib1"s, "mod2"s)); }); -/* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all packages exist - REQUIRE_THAT(src, IsPackage("app")); - REQUIRE_THAT(src, IsPackage(":lib1")); - REQUIRE_THAT(src, IsPackage(":lib2")); - REQUIRE_THAT(src, IsPackage("mod1")); - REQUIRE_THAT(src, !IsPackage("mod2")); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib1"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib2"s)); - REQUIRE(IsModulePackage(j, "app"s, ":lib1"s, "mod1"s)); - REQUIRE(!IsModulePackage(j, "app"s, ":lib1"s, "mod2"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - - REQUIRE_THAT(src, IsPackage(_A("app"))); - REQUIRE_THAT(src, IsPackage(_A(":lib1"))); - REQUIRE_THAT(src, IsPackage(_A(":lib2"))); - REQUIRE_THAT(src, IsPackage(_A("mod1"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", src); - }*/ } \ No newline at end of file diff --git a/tests/t30015/test_case.h b/tests/t30015/test_case.h index ee24f2df..1cce3c53 100644 --- a/tests/t30015/test_case.h +++ b/tests/t30015/test_case.h @@ -21,15 +21,8 @@ TEST_CASE("t30015") using namespace clanguml::test; using namespace std::string_literals; - auto [config, db] = load_config("t30015"); - - auto diagram = config.diagrams["t30015_package"]; - - REQUIRE(diagram->name == "t30015_package"); - - auto model = generate_package_diagram(*db, diagram); - - REQUIRE(model->name() == "t30015_package"); + auto [config, db, diagram, model] = + CHECK_PACKAGE_MODEL("t30015", "t30015_package"); CHECK_PACKAGE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsModulePackage(src, "app"s)); @@ -72,137 +65,4 @@ TEST_CASE("t30015") REQUIRE(IsDependency(src, "app", ":mod17")); REQUIRE(IsDependency(src, "app", ":mod18")); }); - /* - { - auto src = generate_package_puml(diagram, *model); - AliasMatcher _A(src); - - REQUIRE_THAT(src, StartsWith("@startuml")); - REQUIRE_THAT(src, EndsWith("@enduml\n")); - - // Check if all packages exist - REQUIRE_THAT(src, IsPackage("app")); - REQUIRE_THAT(src, IsPackage("lib1")); - REQUIRE_THAT(src, IsPackage(":mod1")); - REQUIRE_THAT(src, IsPackage(":mod2")); - REQUIRE_THAT(src, IsPackage(":mod3")); - REQUIRE_THAT(src, IsPackage(":mod4")); - REQUIRE_THAT(src, IsPackage(":mod5")); - REQUIRE_THAT(src, IsPackage(":mod6")); - REQUIRE_THAT(src, IsPackage(":mod7")); - REQUIRE_THAT(src, IsPackage(":mod8")); - REQUIRE_THAT(src, IsPackage(":mod9")); - REQUIRE_THAT(src, IsPackage(":mod10")); - REQUIRE_THAT(src, IsPackage(":mod11")); - REQUIRE_THAT(src, IsPackage(":mod12")); - REQUIRE_THAT(src, IsPackage(":mod13")); - REQUIRE_THAT(src, IsPackage(":mod14")); - REQUIRE_THAT(src, IsPackage(":mod15")); - REQUIRE_THAT(src, IsPackage(":mod16")); - REQUIRE_THAT(src, IsPackage(":mod17")); - REQUIRE_THAT(src, IsPackage(":mod18")); - - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod1"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod2"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod3"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod4"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod5"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod6"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod7"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod8"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod9"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod10"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod11"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod12"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod13"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod14"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod15"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod16"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod17"))); - REQUIRE_THAT(src, IsDependency(_A("app"), _A(":mod18"))); - - save_puml(config.output_directory(), diagram->name + ".puml", src); - } - - { - auto j = generate_package_json(diagram, *model); - - using namespace json; - using namespace std::string_literals; - - REQUIRE(IsModulePackage(j, "app"s)); - REQUIRE(IsModulePackage(j, "lib1"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod1"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod2"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod3"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod4"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod5"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod6"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod7"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod8"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod9"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod10"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod11"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod12"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod13"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod14"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod15"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod16"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod17"s)); - REQUIRE(IsModulePackage(j, "lib1"s, ":mod18"s)); - - save_json(config.output_directory(), diagram->name + ".json", j); - } - - { - auto src = generate_package_mermaid(diagram, *model); - - mermaid::AliasMatcher _A(src); - using mermaid::IsPackage; - using mermaid::IsPackageDependency; - - REQUIRE_THAT(src, IsPackage(_A("app"))); - REQUIRE_THAT(src, IsPackage(_A("lib1"))); - REQUIRE_THAT(src, IsPackage(_A(":mod1"))); - REQUIRE_THAT(src, IsPackage(_A(":mod2"))); - REQUIRE_THAT(src, IsPackage(_A(":mod3"))); - REQUIRE_THAT(src, IsPackage(_A(":mod4"))); - REQUIRE_THAT(src, IsPackage(_A(":mod5"))); - REQUIRE_THAT(src, IsPackage(_A(":mod6"))); - REQUIRE_THAT(src, IsPackage(_A(":mod7"))); - REQUIRE_THAT(src, IsPackage(_A(":mod8"))); - REQUIRE_THAT(src, IsPackage(_A(":mod9"))); - REQUIRE_THAT(src, IsPackage(_A(":mod10"))); - REQUIRE_THAT(src, IsPackage(_A(":mod11"))); - REQUIRE_THAT(src, IsPackage(_A(":mod12"))); - REQUIRE_THAT(src, IsPackage(_A(":mod13"))); - REQUIRE_THAT(src, IsPackage(_A(":mod14"))); - REQUIRE_THAT(src, IsPackage(_A(":mod15"))); - REQUIRE_THAT(src, IsPackage(_A(":mod16"))); - REQUIRE_THAT(src, IsPackage(_A(":mod17"))); - REQUIRE_THAT(src, IsPackage(_A(":mod18"))); - - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod1"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod2"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod3"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod4"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod5"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod6"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod7"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod8"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod9"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod10"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod11"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod12"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod13"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod14"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod15"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod16"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod17"))); - REQUIRE_THAT(src, IsPackageDependency(_A("app"), _A(":mod18"))); - - save_mermaid(config.output_directory(), diagram->name + ".mmd", - src); - } - */ } \ No newline at end of file diff --git a/tests/t40001/test_case.h b/tests/t40001/test_case.h index b972f298..7aa56330 100644 --- a/tests/t40001/test_case.h +++ b/tests/t40001/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t40001") { using namespace clanguml::test; - auto [config, db] = load_config("t40001"); - - auto diagram = config.diagrams["t40001_include"]; - - REQUIRE(diagram->name == "t40001_include"); - - auto model = generate_include_diagram(*db, diagram); - - REQUIRE(model->name() == "t40001_include"); + auto [config, db, diagram, model] = + CHECK_INCLUDE_MODEL("t40001", "t40001_include"); CHECK_INCLUDE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(HasTitle(src, "Basic include diagram example")); diff --git a/tests/t40002/test_case.h b/tests/t40002/test_case.h index 52e7659c..456d9d2e 100644 --- a/tests/t40002/test_case.h +++ b/tests/t40002/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t40002") { using namespace clanguml::test; - auto [config, db] = load_config("t40002"); - - auto diagram = config.diagrams["t40002_include"]; - - REQUIRE(diagram->name == "t40002_include"); - - auto model = generate_include_diagram(*db, diagram); - - REQUIRE(model->name() == "t40002_include"); + auto [config, db, diagram, model] = + CHECK_INCLUDE_MODEL("t40002", "t40002_include"); CHECK_INCLUDE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsFolder(src, "include")); diff --git a/tests/t40003/test_case.h b/tests/t40003/test_case.h index 9e76177d..119c43d3 100644 --- a/tests/t40003/test_case.h +++ b/tests/t40003/test_case.h @@ -20,15 +20,8 @@ TEST_CASE("t40003") { using namespace clanguml::test; - auto [config, db] = load_config("t40003"); - - auto diagram = config.diagrams["t40003_include"]; - - REQUIRE(diagram->name == "t40003_include"); - - auto model = generate_include_diagram(*db, diagram); - - REQUIRE(model->name() == "t40003_include"); + auto [config, db, diagram, model] = + CHECK_INCLUDE_MODEL("t40003", "t40003_include"); CHECK_INCLUDE_DIAGRAM(config, diagram, *model, [](const auto &src) { REQUIRE(IsFolder(src, "include/dependants")); diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 6ebd360c..0c1c84b6 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -387,7 +387,8 @@ void try_run_test_case(const diagram_source_storage &diagrams, TC &&tc) std::cout << "-----------------------------------------------------" "--------------------------\n"; std::cout << "Test case failed for diagram type " - << T::diagram_type_name << ": " << "\n\n"; + << T::diagram_type_name << ": " + << "\n\n"; std::cout << diagrams.get().to_string() << "\n"; throw e; @@ -399,9 +400,11 @@ template DiagramType render_class_diagram(std::shared_ptr c, clanguml::class_diagram::model::diagram &model) { - return DiagramType{common::model::diagram_t::kClass, + auto d = DiagramType{common::model::diagram_t::kClass, detail::render_diagram( c, model)}; + d.generate_packages = c->generate_packages(); + return d; } template @@ -432,6 +435,74 @@ DiagramType render_include_diagram(std::shared_ptr c, c, model)}; } +auto CHECK_CLASS_MODEL( + const std::string &test_name, const std::string &diagram_name) +{ + auto [config, db] = load_config(test_name); + + auto diagram = config.diagrams[diagram_name]; + + REQUIRE(diagram->name == diagram_name); + + auto model = generate_class_diagram(*db, diagram); + + REQUIRE(model->name() == diagram_name); + + return std::make_tuple( + std::move(config), std::move(db), std::move(diagram), std::move(model)); +} + +auto CHECK_SEQUENCE_MODEL( + const std::string &test_name, const std::string &diagram_name) +{ + auto [config, db] = load_config(test_name); + + auto diagram = config.diagrams[diagram_name]; + + REQUIRE(diagram->name == diagram_name); + + auto model = generate_sequence_diagram(*db, diagram); + + REQUIRE(model->name() == diagram_name); + + return std::make_tuple( + std::move(config), std::move(db), std::move(diagram), std::move(model)); +} + +auto CHECK_PACKAGE_MODEL( + const std::string &test_name, const std::string &diagram_name) +{ + auto [config, db] = load_config(test_name); + + auto diagram = config.diagrams[diagram_name]; + + REQUIRE(diagram->name == diagram_name); + + auto model = generate_package_diagram(*db, diagram); + + REQUIRE(model->name() == diagram_name); + + return std::make_tuple( + std::move(config), std::move(db), std::move(diagram), std::move(model)); +} + +auto CHECK_INCLUDE_MODEL( + const std::string &test_name, const std::string &diagram_name) +{ + auto [config, db] = load_config(test_name); + + auto diagram = config.diagrams[diagram_name]; + + REQUIRE(diagram->name == diagram_name); + + auto model = generate_include_diagram(*db, diagram); + + REQUIRE(model->name() == diagram_name); + + return std::make_tuple( + std::move(config), std::move(db), std::move(diagram), std::move(model)); +} + template void CHECK_DIAGRAM_IMPL( const diagram_source_storage &diagrams, TC &&tc, TCs &&...tcs) @@ -1082,10 +1153,6 @@ template <> bool IsClass(json_t d, std::string name) #include "t00062/test_case.h" #include "t00063/test_case.h" #include "t00064/test_case.h" -/* - - - #if defined(ENABLE_CXX_STD_20_TEST_CASES) #include "t00065/test_case.h" #endif @@ -1107,7 +1174,7 @@ template <> bool IsClass(json_t d, std::string name) #include "t00074/test_case.h" #include "t00075/test_case.h" #endif - +/* /// /// Sequence diagram tests /// @@ -1223,7 +1290,7 @@ int main(int argc, char *argv[]) std::vector argvv = { "clang-uml", "--config", "./test_config_data/simple.yml"}; - argvv.push_back("-vvv"); + argvv.push_back("-q"); clih.handle_options(argvv.size(), argvv.data()); diff --git a/tests/test_cases.h b/tests/test_cases.h index d6d8a1cd..5732ce98 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -135,6 +135,7 @@ template struct diagram_source_t { T src; clanguml::common::model::diagram_t diagram_type; + bool generate_packages{false}; }; struct plantuml_t : public diagram_source_t { @@ -394,9 +395,9 @@ struct QualifiedName { operator std::string() const { return str(); } - std::string str() const + std::string str(bool generate_packages = false) const { - if (ns) + if (ns && !generate_packages) return fmt::format("{}::{}", ns.value(), name); return name; @@ -464,8 +465,8 @@ bool IsMethod(const DiagramType &d, const std::string &cls, const std::string ¶ms = ""); template -bool IsField(const DiagramType &d, std::string const &cls, - std::string const &name, std::string type = "void"); +bool IsField(const DiagramType &d, QualifiedName cls, std::string const &name, + std::string type = "void"); template bool IsAssociation(const DiagramType &d, std::string const &from, @@ -506,11 +507,15 @@ bool IsIncludeDependency( const DiagramType &d, std::string const &from, std::string const &to); template -bool IsConstraint(const DiagramType &d, std::string const &from, - std::string const &to, std::string label = {}, std::string style = ""); +bool IsConstraint(const DiagramType &d, QualifiedName from, QualifiedName to, + std::string label = {}, std::string style = ""); template -bool IsConcept(const DiagramType &d, std::string const &cpt); +bool IsConcept(const DiagramType &d, QualifiedName cpt); + +template +bool IsConceptParameterList( + const DiagramType &d, std::string const &cpt, std::string param); template bool IsConceptRequirement( @@ -598,33 +603,38 @@ template <> bool HasTitle(const plantuml_t &d, std::string const &str) template <> bool IsEnum(const plantuml_t &d, QualifiedName enm) { - return d.contains(fmt::format("enum {}", d.get_alias(enm.name))); + return d.contains( + fmt::format("enum {}", d.get_alias(enm.str(d.generate_packages)))); } template <> bool IsUnion(const plantuml_t &d, QualifiedName cls) { - return d.contains(fmt::format("class {} <>", d.get_alias(cls))); + return d.contains(fmt::format( + "class {} <>", d.get_alias(cls.str(d.generate_packages)))); } template <> bool IsClass(const plantuml_t &d, QualifiedName cls) { - return d.contains(fmt::format("class {}", d.get_alias(cls.name))) || - d.contains(fmt::format("class {}", d.get_alias(cls.str()))); + return d.contains( + fmt::format("class {}", d.get_alias(cls.str(d.generate_packages)))); } template <> bool IsClassTemplate(const plantuml_t &d, QualifiedName cls) { - return d.contains(fmt::format("class \"{}\"", cls.name)); + return d.contains( + fmt::format("class \"{}\"", cls.str(d.generate_packages))); } template <> bool IsAbstractClassTemplate(const plantuml_t &d, QualifiedName cls) { - return d.contains(fmt::format("abstract \"{}\"", cls.name)); + return d.contains( + fmt::format("abstract \"{}\"", cls.str(d.generate_packages))); } template <> bool IsAbstractClass(const plantuml_t &d, QualifiedName cls) { - return d.contains(fmt::format("abstract {}", d.get_alias(cls.name))); + return d.contains( + fmt::format("abstract {}", d.get_alias(cls.str(d.generate_packages)))); } template <> @@ -632,7 +642,8 @@ bool IsBaseClass( const plantuml_t &d, QualifiedName base, QualifiedName subclass) { return d.contains( - fmt::format("{} <|-- {}", d.get_alias(base), d.get_alias(subclass))); + fmt::format("{} <|-- {}", d.get_alias(base.str(d.generate_packages)), + d.get_alias(subclass.str(d.generate_packages)))); } template <> @@ -692,8 +703,8 @@ bool IsMethod(const plantuml_t &d, std::string const &cls, } template -bool IsField(const plantuml_t &d, std::string const &cls, - std::string const &name, std::string type) +bool IsField(const plantuml_t &d, QualifiedName cls, std::string const &name, + std::string type) { std::string pattern; if constexpr (has_type()) @@ -858,20 +869,21 @@ bool IsIncludeDependency( } template <> -bool IsConstraint(const plantuml_t &d, std::string const &from, - std::string const &to, std::string label, std::string style) +bool IsConstraint(const plantuml_t &d, QualifiedName from, QualifiedName to, + std::string label, std::string style) { if (label.empty()) - return d.contains(fmt::format( - "{} .{}.> {}", d.get_alias(from), style, d.get_alias(to))); + return d.contains(fmt::format("{} .{}.> {}", d.get_alias(from.name), + style, d.get_alias(to.name))); - return d.contains(fmt::format( - "{} .{}.> {} : {}", d.get_alias(from), style, d.get_alias(to), label)); + return d.contains(fmt::format("{} .{}.> {} : {}", d.get_alias(from.name), + style, d.get_alias(to.name), label)); } -template <> bool IsConcept(const plantuml_t &d, std::string const &cpt) +template <> bool IsConcept(const plantuml_t &d, QualifiedName cpt) { - return d.contains("class " + d.get_alias(cpt) + " <>"); + return d.contains("class " + d.get_alias(cpt) + " <>") || + d.contains("class " + d.get_alias(cpt.name) + " <>"); } template <> @@ -881,6 +893,13 @@ bool IsConceptRequirement( return d.contains(requirement); } +template <> +bool IsConceptParameterList( + const plantuml_t &d, std::string const &cpt, std::string params) +{ + return d.contains(params); +} + template <> bool IsLayoutHint(const plantuml_t &d, std::string const &from, std::string const &hint, std::string const &to) @@ -1122,8 +1141,8 @@ bool IsMethod(const mermaid_t &d, std::string const &cls, } template -bool IsField(const mermaid_t &d, std::string const &cls, - std::string const &name, std::string type) +bool IsField(const mermaid_t &d, QualifiedName cls, std::string const &name, + std::string type) { std::string pattern; if constexpr (has_type()) @@ -1321,8 +1340,8 @@ bool IsIncludeDependency( } template <> -bool IsConstraint(const mermaid_t &d, std::string const &from, - std::string const &to, std::string label, std::string style) +bool IsConstraint(const mermaid_t &d, QualifiedName from, QualifiedName to, + std::string label, std::string style) { auto from_id = d.get_alias(from); auto to_id = d.get_alias(to); @@ -1344,7 +1363,7 @@ bool IsConstraint(const mermaid_t &d, std::string const &from, return d.contains(fmt::format("{} ..> {} : {}", from_id, to_id, label)); } -template <> bool IsConcept(const mermaid_t &d, std::string const &cpt) +template <> bool IsConcept(const mermaid_t &d, QualifiedName cpt) { return d.search( std::string("class ") + d.get_alias(cpt) + " \\{\\n\\s+<>"); @@ -1356,8 +1375,8 @@ bool IsConceptRequirement( { util::replace_all(requirement, "<", "<"); util::replace_all(requirement, ">", ">"); - util::replace_all(requirement, "(", "("); - util::replace_all(requirement, ")", ")"); + // util::replace_all(requirement, "(", "("); + // util::replace_all(requirement, ")", ")"); util::replace_all(requirement, "##", "::"); util::replace_all(requirement, "{", "{"); util::replace_all(requirement, "}", "}"); @@ -1365,6 +1384,21 @@ bool IsConceptRequirement( return d.contains(requirement); } +template <> +bool IsConceptParameterList( + const mermaid_t &d, std::string const &cpt, std::string params) +{ + util::replace_all(params, "<", "<"); + util::replace_all(params, ">", ">"); + // util::replace_all(requirement, "(", "("); + // util::replace_all(requirement, ")", ")"); + util::replace_all(params, "##", "::"); + util::replace_all(params, "{", "{"); + util::replace_all(params, "}", "}"); + + return d.contains(params); +} + template <> bool IsLayoutHint(const mermaid_t &d, std::string const &from, std::string const &hint, std::string const &to) @@ -1457,6 +1491,11 @@ bool IsNamespacePackage(const mermaid_t &d, Args... args) template bool IsDirectoryPackage(const mermaid_t &d, Args... args) { + if (d.diagram_type == class_diagram::model::diagram_t::kClass) { + // MermaidJS does not support packages in class diagrams + return true; + } + const auto &name = get_last(args...); return d.contains("subgraph " + d.get_alias(name)); } @@ -1464,13 +1503,18 @@ bool IsDirectoryPackage(const mermaid_t &d, Args... args) template bool IsModulePackage(const mermaid_t &d, Args... args) { + if (d.diagram_type == class_diagram::model::diagram_t::kClass) { + // MermaidJS does not support packages in class diagrams + return true; + } + const auto &name = get_last(args...); return d.contains("subgraph " + d.get_alias(name)); } template <> bool IsDeprecated(const mermaid_t &d, const std::string &name) { - return d.contains(d.get_alias(name) + " <> "); + return d.contains(d.get_alias(name)); } // @@ -1492,37 +1536,43 @@ template <> bool HasTitle(const json_t &d, std::string const &str) template <> bool IsAbstractClass(const json_t &d, QualifiedName cls) { - auto e = get_element(d.src, expand_name(d.src, cls)); + auto e = + get_element(d.src, expand_name(d.src, cls.str(d.generate_packages))); return e && e->at("type") == "class" && e->at("is_abstract"); } template <> bool IsEnum(const json_t &d, QualifiedName enm) { - auto e = get_element(d.src, expand_name(d.src, enm)); + auto e = + get_element(d.src, expand_name(d.src, enm.str(d.generate_packages))); return e && e->at("type") == "enum"; } template <> bool IsUnion(const json_t &d, QualifiedName enm) { - auto e = get_element(d.src, expand_name(d.src, enm)); + auto e = + get_element(d.src, expand_name(d.src, enm.str(d.generate_packages))); return e && e->at("type") == "class" && e->at("is_union"); } template <> bool IsClass(const json_t &d, QualifiedName cls) { - auto e = get_element(d.src, expand_name(d.src, cls)); + auto e = + get_element(d.src, expand_name(d.src, cls.str(d.generate_packages))); return e && e->at("type") == "class" && !e->at("is_abstract"); } template <> bool IsClassTemplate(const json_t &d, QualifiedName cls) { - auto e = get_element(d.src, expand_name(d.src, cls)); + auto e = + get_element(d.src, expand_name(d.src, cls.str(d.generate_packages))); return e && e->at("type") == "class"; } template <> bool IsAbstractClassTemplate(const json_t &d, QualifiedName cls) { - auto e = get_element(d.src, expand_name(d.src, cls)); + auto e = + get_element(d.src, expand_name(d.src, cls.str(d.generate_packages))); return e && e->at("type") == "class" && e->at("is_abstract"); } @@ -1530,8 +1580,10 @@ template <> bool IsBaseClass(const json_t &d, QualifiedName base, QualifiedName subclass) { const auto &j = d.src; - auto base_el = get_element(j, expand_name(j, base)); - auto subclass_el = get_element(j, expand_name(j, subclass)); + auto base_el = + get_element(j, expand_name(j, base.str(d.generate_packages))); + auto subclass_el = + get_element(j, expand_name(j, subclass.str(d.generate_packages))); if (!base_el || !subclass_el) return false; @@ -1573,12 +1625,12 @@ bool IsMethod(const json_t &d, const std::string &cls, std::string const &name, } template -bool IsField(const json_t &d, std::string const &cls, std::string const &name, +bool IsField(const json_t &d, QualifiedName cls, std::string const &name, std::string type) { const auto &j = d.src; - auto sc = get_element(j, expand_name(j, cls)); + auto sc = get_element(j, expand_name(j, cls.str(d.generate_packages))); if (!sc) return false; @@ -1704,8 +1756,9 @@ bool IsDependency( { const auto &j = d.src; - auto rel = get_relationship( - j, expand_name(j, from), expand_name(j, to), "dependency"); + auto rel = + get_relationship(j, expand_name(j, from.str(d.generate_packages)), + expand_name(j, to.str(d.generate_packages)), "dependency"); if (rel == j["relationships"].end()) return false; @@ -1763,22 +1816,23 @@ bool IsIncludeDependency( return true; } -template <> bool IsConcept(const json_t &d, std::string const &cpt) +template <> bool IsConcept(const json_t &d, QualifiedName cpt) { const auto &j = d.src; - auto e = get_element(j, expand_name(j, cpt)); + auto e = get_element(j, expand_name(j, cpt.str(d.generate_packages))); return e && e->at("type") == "concept"; } template <> -bool IsConstraint(const json_t &d, std::string const &from, - std::string const &to, std::string label, std::string style) +bool IsConstraint(const json_t &d, QualifiedName from, QualifiedName to, + std::string label, std::string style) { const auto &j = d.src; - auto rel = get_relationship( - j, expand_name(j, from), expand_name(j, to), "constraint", label); + auto rel = + get_relationship(j, expand_name(j, from.str(d.generate_packages)), + expand_name(j, to.str(d.generate_packages)), "constraint", label); if (rel == j["relationships"].end()) return false; @@ -1807,6 +1861,27 @@ bool IsConceptRequirement( statements.end(); } +template <> +bool IsConceptParameterList( + const json_t &d, std::string const &cpt, std::string parameter_list) +{ + const auto &j = d.src; + + auto e = get_element(j, expand_name(j, cpt)); + + if (!e) + return false; + + const nlohmann::json ¶meters = (*e)["parameters"]; + + std::vector params; + for (const auto &it : parameters) { + params.push_back(fmt::format("{} {}", it["type"], it["name"])); + } + + return parameter_list == fmt::format("({})", fmt::join(params, ",")); +} + template <> bool IsLayoutHint(const json_t &d, std::string const &from, std::string const &hint, std::string const &to) diff --git a/tests/test_util.cc b/tests/test_util.cc index 98145004..4caa265b 100644 --- a/tests/test_util.cc +++ b/tests/test_util.cc @@ -20,7 +20,6 @@ #include "util/util.h" #include - #include #include "doctest/doctest.h"