From eb00cd21c34487dfaa1d97cbaec2a210b6303738 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Tue, 12 Sep 2023 00:55:05 +0200 Subject: [PATCH] Added mermaid test cases for class diagrams --- docs/test_cases/t00002_class_mermaid.svg | 2 +- .../mermaid/class_diagram_generator.cc | 90 ++++-- src/common/generators/mermaid/generator.cc | 2 +- tests/catch.h | 7 +- tests/t00002/test_case.h | 35 +++ tests/t00003/test_case.h | 40 +++ tests/t00004/test_case.h | 26 ++ tests/t00005/test_case.h | 32 +++ tests/t00006/test_case.h | 122 +++++--- tests/t00007/test_case.h | 39 ++- tests/t00008/test_case.h | 61 ++-- tests/t00009/test_case.h | 64 +++-- tests/t00010/test_case.h | 49 ++-- tests/t00011/test_case.h | 35 ++- tests/t00012/test_case.h | 38 ++- tests/t00013/test_case.h | 86 ++++-- tests/t00014/test_case.h | 247 +++++++++++----- tests/t00015/test_case.h | 32 ++- tests/t00016/test_case.h | 52 ++-- tests/t00017/test_case.h | 106 ++++--- tests/t00018/test_case.h | 33 ++- tests/t00019/test_case.h | 83 ++++-- tests/t00020/test_case.h | 45 +-- tests/t00021/test_case.h | 39 ++- tests/t00022/test_case.h | 26 +- tests/t00023/test_case.h | 27 +- tests/t00024/test_case.h | 39 ++- tests/t00025/test_case.h | 56 ++-- tests/t00026/test_case.h | 35 ++- tests/t00027/test_case.h | 67 +++-- tests/t00028/test_case.h | 65 +++-- tests/t00029/test_case.h | 65 +++-- tests/t00030/test_case.h | 47 ++-- tests/t00031/test_case.h | 40 +-- tests/t00032/test_case.h | 75 +++-- tests/t00033/test_case.h | 57 ++-- tests/t00034/test_case.h | 41 ++- tests/t00035/test_case.h | 40 +-- tests/t00036/test_case.h | 50 ++-- tests/t00037/test_case.h | 37 ++- tests/t00038/test_case.h | 111 ++++++-- tests/t00039/test_case.h | 92 ++++-- tests/t00040/test_case.h | 40 ++- tests/t00041/test_case.h | 91 ++++-- tests/t00042/test_case.h | 26 +- tests/t00043/test_case.h | 94 +++++-- tests/t00044/test_case.h | 65 +++-- tests/t00045/test_case.h | 83 ++++-- tests/t00046/test_case.h | 41 ++- tests/t00047/test_case.h | 32 ++- tests/t00048/test_case.h | 47 +++- tests/t00049/test_case.h | 60 ++-- tests/t00050/test_case.h | 56 ++-- tests/t00051/test_case.h | 82 ++++-- tests/t00052/test_case.h | 42 ++- tests/t00053/test_case.h | 61 ++-- tests/t00054/test_case.h | 72 +++-- tests/t00055/test_case.h | 64 +++-- tests/t00056/test_case.h | 159 ++++++++--- tests/t00057/test_case.h | 75 +++-- tests/t00058/test_case.h | 72 +++-- tests/t00059/test_case.h | 111 ++++++-- tests/t00060/test_case.h | 44 ++- tests/t00061/test_case.h | 27 +- tests/t00062/test_case.h | 137 ++++++--- tests/t00063/test_case.h | 27 +- tests/t00064/test_case.h | 100 +++++-- tests/t00065/test_case.h | 42 +-- tests/t00066/test_case.h | 94 +++++-- tests/t00067/test_case.h | 39 ++- tests/test_cases.h | 266 ++++++++++++++++++ 71 files changed, 3189 insertions(+), 1295 deletions(-) diff --git a/docs/test_cases/t00002_class_mermaid.svg b/docs/test_cases/t00002_class_mermaid.svg index 89855b06..c2e3f998 100644 --- a/docs/test_cases/t00002_class_mermaid.svg +++ b/docs/test_cases/t00002_class_mermaid.svg @@ -1,4 +1,4 @@ - + diff --git a/src/class_diagram/generators/mermaid/class_diagram_generator.cc b/src/class_diagram/generators/mermaid/class_diagram_generator.cc index 59b69050..a142d6e8 100644 --- a/src/class_diagram/generators/mermaid/class_diagram_generator.cc +++ b/src/class_diagram/generators/mermaid/class_diagram_generator.cc @@ -236,7 +236,27 @@ void generator::generate_method( } ostr << ")"; - ostr << " : " << render_name(type); + ostr << " : "; + + std::vector method_mods; + if (m.is_defaulted()) { + method_mods.push_back("default"); + } + if (m.is_const()) { + method_mods.push_back("const"); + } + if (m.is_constexpr()) { + method_mods.push_back("constexpr"); + } + if (m.is_consteval()) { + method_mods.push_back("consteval"); + } + + if (!method_mods.empty()) { + ostr << fmt::format("[{}] ", fmt::join(method_mods, ",")); + } + + ostr << render_name(type); if (m.is_pure_virtual()) ostr << "*"; @@ -389,14 +409,15 @@ void generator::generate_relationships( try { destination = r.destination(); - std::string puml_relation; - if (!r.multiplicity_source().empty()) - puml_relation += "\"" + r.multiplicity_source() + "\" "; + std::string relation_str; - puml_relation += mermaid_common::to_mermaid(r.type(), r.style()); + if (!r.multiplicity_source().empty()) + relation_str += "\"" + r.multiplicity_source() + "\" "; + + relation_str += mermaid_common::to_mermaid(r.type(), r.style()); if (!r.multiplicity_destination().empty()) - puml_relation += " \"" + r.multiplicity_destination() + "\""; + relation_str += " \"" + r.multiplicity_destination() + "\""; std::string target_alias; try { @@ -411,17 +432,20 @@ void generator::generate_relationships( m_generated_aliases.end()) continue; - relstr << indent(1) << c.alias() << " " << puml_relation << " " - << target_alias; - - if (!r.label().empty()) { - relstr << " : " << mermaid_common::to_mermaid(r.access()) - << r.label(); - rendered_relations.emplace(r.label()); + if (r.type() == relationship_t::kContainment) { + relstr << indent(1) << target_alias << " " << relation_str + << " " << c.alias(); + } + else { + relstr << indent(1) << c.alias() << " " << relation_str << " " + << target_alias; } - if (r.type() == relationship_t::kContainment) { - relstr << " : [nested]\n"; + relstr << " : "; + + if (!r.label().empty()) { + relstr << mermaid_common::to_mermaid(r.access()) << r.label(); + rendered_relations.emplace(r.label()); } if (unique_relations.count(relstr.str()) == 0) { @@ -514,12 +538,19 @@ void generator::generate_relationships( m_generated_aliases.end()) continue; - relstr << indent(1) << c.alias() << " " << puml_relation << " " - << target_alias; + if (r.type() == relationship_t::kContainment) { + relstr << indent(1) << target_alias << " " << puml_relation + << " " << c.alias(); + } + else { + relstr << indent(1) << c.alias() << " " << puml_relation << " " + << target_alias; + } + + relstr << " : "; if (!r.label().empty()) { - relstr << " : " << mermaid_common::to_mermaid(r.access()) - << r.label(); + relstr << mermaid_common::to_mermaid(r.access()) << r.label(); rendered_relations.emplace(r.label()); } @@ -561,13 +592,20 @@ void generator::generate_relationships(const enum_ &e, std::ostream &ostr) const m_generated_aliases.end()) continue; - relstr << indent(1) << e.alias() << " " - << clanguml::common::generators::mermaid::to_mermaid( - r.type(), r.style()) - << " " << target_alias; + if (r.type() == relationship_t::kContainment) { + relstr << indent(1) << target_alias << " " + << clanguml::common::generators::mermaid::to_mermaid( + r.type(), r.style()) + << " " << e.alias(); + } + else { + relstr << indent(1) << e.alias() << " " + << clanguml::common::generators::mermaid::to_mermaid( + r.type(), r.style()) + << " " << target_alias; + } - if (!r.label().empty()) - relstr << " : " << r.label(); + relstr << " : " << r.label(); relstr << '\n'; @@ -589,7 +627,7 @@ void generator::generate(const enum_ &e, std::ostream &ostr) const ostr << " {" << '\n'; - ostr << indent(2) << "<>\n"; + ostr << indent(2) << "<>\n"; for (const auto &enum_constant : e.constants()) { ostr << indent(2) << enum_constant << '\n'; diff --git a/src/common/generators/mermaid/generator.cc b/src/common/generators/mermaid/generator.cc index d0ba2d08..f7b270c4 100644 --- a/src/common/generators/mermaid/generator.cc +++ b/src/common/generators/mermaid/generator.cc @@ -28,7 +28,7 @@ std::string to_mermaid(relationship_t r, const std::string & /*style*/) case relationship_t::kAggregation: return "o--"; case relationship_t::kContainment: - return "--"; + return "()--"; case relationship_t::kAssociation: return "-->"; case relationship_t::kInstantiation: diff --git a/tests/catch.h b/tests/catch.h index c3237aad..8e780a2d 100644 --- a/tests/catch.h +++ b/tests/catch.h @@ -13299,13 +13299,14 @@ RegexMatcher::RegexMatcher( bool RegexMatcher::match(std::string const &matchee) const { - auto flags = std::regex::ECMAScript; // ECMAScript is the default syntax - // option anyway + auto flags = std::regex::ECMAScript | + std::regex::multiline; // ECMAScript is the default syntax + // option anyway if (m_caseSensitivity == CaseSensitive::Choice::No) { flags |= std::regex::icase; } auto reg = std::regex(m_regex, flags); - return std::regex_match(matchee, reg); + return std::regex_search(matchee, reg); } std::string RegexMatcher::describe() const diff --git a/tests/t00002/test_case.h b/tests/t00002/test_case.h index b376de34..796e8ef2 100644 --- a/tests/t00002/test_case.h +++ b/tests/t00002/test_case.h @@ -109,6 +109,41 @@ TEST_CASE("t00002", "[test-case][class]") { auto mmd = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(mmd); + + REQUIRE_THAT(mmd, StartsWith("classDiagram")); + REQUIRE_THAT(mmd, mermaid::IsAbstractClass(_A("A"))); + REQUIRE_THAT(mmd, IsClass(_A("B"))); + REQUIRE_THAT(mmd, IsClass(_A("C"))); + REQUIRE_THAT(mmd, IsClass(_A("D"))); + REQUIRE_THAT(mmd, IsBaseClass(_A("A"), _A("B"))); + REQUIRE_THAT(mmd, IsBaseClass(_A("A"), _A("C"))); + REQUIRE_THAT(mmd, IsBaseClass(_A("B"), _A("D"))); + REQUIRE_THAT(mmd, IsBaseClass(_A("C"), _A("D"))); + + REQUIRE_THAT(mmd, IsAssociation(_A("D"), _A("A"), "-as")); + + REQUIRE_THAT(mmd, (mermaid::IsMethod("foo_a"))); + REQUIRE_THAT(mmd, (mermaid::IsMethod("foo_c"))); + + // REQUIRE_THAT(mmd, HasNote(_A("A"), "left", "This is class + // A")); REQUIRE_THAT(mmd, HasNote(_A("B"), "top", "This is class + // B")); + + REQUIRE_THAT(mmd, + mermaid::HasLink(_A("A"), + fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/" + "t00002/t00002.cc#L7", + clanguml::util::get_git_commit()), + "This is class A")); + + REQUIRE_THAT(mmd, + mermaid::HasLink(_A("B"), + fmt::format("https://github.com/bkryza/clang-uml/blob/{}/tests/" + "t00002/t00002.cc#L16", + clanguml::util::get_git_commit()), + "This is class B")); + save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); } } \ No newline at end of file diff --git a/tests/t00003/test_case.h b/tests/t00003/test_case.h index 102ec684..d58bd6a1 100644 --- a/tests/t00003/test_case.h +++ b/tests/t00003/test_case.h @@ -96,6 +96,46 @@ TEST_CASE("t00003", "[test-case][class]") } { auto mmd = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(mmd); + + REQUIRE_THAT(mmd, IsClass(_A("A"))); + + REQUIRE_THAT(mmd, !IsDependency(_A("A"), _A("A"))); + + REQUIRE_THAT(mmd, (mermaid::IsMethod("A"))); + REQUIRE_THAT( + mmd, (mermaid::IsMethod("A", "void", "A &&"))); + REQUIRE_THAT(mmd, + (mermaid::IsMethod("A", "void", "const A &"))); + + REQUIRE_THAT(mmd, (mermaid::IsMethod("~A"))); + + REQUIRE_THAT(mmd, (mermaid::IsMethod("basic_method"))); + REQUIRE_THAT( + mmd, (mermaid::IsMethod("static_method", "int"))); + REQUIRE_THAT(mmd, (mermaid::IsMethod("const_method"))); + REQUIRE_THAT(mmd, + (mermaid::IsMethod("default_int", "int", "int i = 12"))); + REQUIRE_THAT(mmd, + (mermaid::IsMethod("default_string", "std::string", + "int i, std::string s = \"abc\""))); + + REQUIRE_THAT(mmd, + (mermaid::IsMethod( + "size", "std::size_t"))); + + REQUIRE_THAT(mmd, (mermaid::IsMethod("protected_method"))); + REQUIRE_THAT(mmd, (mermaid::IsMethod("private_method"))); + + REQUIRE_THAT(mmd, (IsField("public_member", "int"))); + REQUIRE_THAT(mmd, (IsField("protected_member", "int"))); + REQUIRE_THAT(mmd, (IsField("private_member", "int"))); + REQUIRE_THAT(mmd, + (IsField("auto_member", "const unsigned long"))); + + REQUIRE_THAT(mmd, (IsField("a_", "int"))); + REQUIRE_THAT(mmd, (IsField("b_", "int"))); + REQUIRE_THAT(mmd, (IsField("c_", "int"))); save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); } diff --git a/tests/t00004/test_case.h b/tests/t00004/test_case.h index 1fa72940..c0f54989 100644 --- a/tests/t00004/test_case.h +++ b/tests/t00004/test_case.h @@ -92,6 +92,32 @@ TEST_CASE("t00004", "[test-case][class]") } { auto mmd = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(mmd); + + REQUIRE_THAT(mmd, IsClass(_A("A"))); + REQUIRE_THAT(mmd, IsClass(_A("A::AA"))); + REQUIRE_THAT(mmd, IsClass(_A("A::AA::AAA"))); + REQUIRE_THAT(mmd, mermaid::IsEnum(_A("B::AA"))); + REQUIRE_THAT(mmd, mermaid::IsEnum(_A("A::AA::Lights"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("A"), _A("A::AA"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("A::AA"), _A("A::AA::AAA"))); + REQUIRE_THAT( + mmd, mermaid::IsInnerClass(_A("A::AA"), _A("A::AA::Lights"))); + + REQUIRE_THAT(mmd, IsClass(_A("C"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("C"), _A("C::AA"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("C::AA"), _A("C::AA::AAA"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("C"), _A("C::CC"))); + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("C::AA"), _A("C::AA::CCC"))); + + REQUIRE_THAT(mmd, mermaid::IsInnerClass(_A("C"), _A("C::B"))); + REQUIRE_THAT(mmd, IsAggregation(_A("C"), _A("C::B"), "+b_int")); + REQUIRE_THAT(mmd, !mermaid::IsInnerClass(_A("C"), _A("C::B"))); + REQUIRE_THAT(mmd, IsInstantiation(_A("C::B"), _A("C::B"))); + + REQUIRE_THAT(mmd, IsClass(_A("detail::D"))); + REQUIRE_THAT(mmd, IsClass(_A("detail::D::DD"))); + REQUIRE_THAT(mmd, mermaid::IsEnum(_A("detail::D::AA"))); save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); } diff --git a/tests/t00005/test_case.h b/tests/t00005/test_case.h index 375bf307..7912b25d 100644 --- a/tests/t00005/test_case.h +++ b/tests/t00005/test_case.h @@ -101,6 +101,38 @@ TEST_CASE("t00005", "[test-case][class]") } { auto mmd = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(mmd); + + REQUIRE_THAT(mmd, StartsWith("classDiagram")); + REQUIRE_THAT(mmd, IsClass(_A("A"))); + REQUIRE_THAT(mmd, IsClass(_A("B"))); + REQUIRE_THAT(mmd, IsClass(_A("C"))); + REQUIRE_THAT(mmd, IsClass(_A("D"))); + REQUIRE_THAT(mmd, IsClass(_A("E"))); + REQUIRE_THAT(mmd, IsClass(_A("F"))); + REQUIRE_THAT(mmd, IsClass(_A("G"))); + REQUIRE_THAT(mmd, IsClass(_A("H"))); + REQUIRE_THAT(mmd, IsClass(_A("I"))); + REQUIRE_THAT(mmd, IsClass(_A("J"))); + REQUIRE_THAT(mmd, IsClass(_A("K"))); + REQUIRE_THAT(mmd, IsClass(_A("R"))); + + REQUIRE_THAT(mmd, (IsField("some_int", "int"))); + REQUIRE_THAT(mmd, (IsField("some_int_pointer", "int *"))); + REQUIRE_THAT( + mmd, (IsField("some_int_pointer_pointer", "int **"))); + + REQUIRE_THAT(mmd, IsAggregation(_A("R"), _A("A"), "+a")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("B"), "+b")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("C"), "+c")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("D"), "+d")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("E"), "+e")); + REQUIRE_THAT(mmd, IsAggregation(_A("R"), _A("F"), "+f")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("G"), "+g")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("H"), "+h")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("I"), "+i")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("J"), "+j")); + REQUIRE_THAT(mmd, IsAssociation(_A("R"), _A("K"), "+k")); save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); } diff --git a/tests/t00006/test_case.h b/tests/t00006/test_case.h index dc676dac..2c28e1c1 100644 --- a/tests/t00006/test_case.h +++ b/tests/t00006/test_case.h @@ -29,51 +29,51 @@ TEST_CASE("t00006", "[test-case][class]") REQUIRE(model->name() == "t00006_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("G"))); - REQUIRE_THAT(puml, IsClass(_A("H"))); - REQUIRE_THAT(puml, IsClass(_A("I"))); - REQUIRE_THAT(puml, IsClass(_A("J"))); - REQUIRE_THAT(puml, IsClass(_A("K"))); - REQUIRE_THAT(puml, IsClass(_A("L"))); - REQUIRE_THAT(puml, IsClass(_A("M"))); - REQUIRE_THAT(puml, IsClass(_A("N"))); - REQUIRE_THAT(puml, IsClass(_A("NN"))); - REQUIRE_THAT(puml, IsClass(_A("NNN"))); + 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, 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, IsClass(_A("K"))); + REQUIRE_THAT(src, IsClass(_A("L"))); + REQUIRE_THAT(src, IsClass(_A("M"))); + REQUIRE_THAT(src, IsClass(_A("N"))); + REQUIRE_THAT(src, IsClass(_A("NN"))); + REQUIRE_THAT(src, IsClass(_A("NNN"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("custom_container"), _A("custom_container"))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("A"), "+a")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("B"), "+b")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("C"), "+c")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("D"), "+d")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "+a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "+b")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("C"), "+c")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "+d")); REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("custom_container"), "+e")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("F"), "+f")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("G"), "+g")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("H"), "+h")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("I"), "+i")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("J"), "+j")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "+k")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("L"), "+lm")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("M"), "+lm")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("N"), "+ns")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("NN"), "+ns")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("NNN"), "+ns")); + src, IsAggregation(_A("R"), _A("custom_container"), "+e")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("F"), "+f")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G"), "+g")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("H"), "+h")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("I"), "+i")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("J"), "+j")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("K"), "+k")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("L"), "+lm")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("M"), "+lm")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("N"), "+ns")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("NN"), "+ns")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("NNN"), "+ns")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -106,8 +106,50 @@ TEST_CASE("t00006", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); + using mermaid::AliasMatcher; - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + AliasMatcher _A(src); + + 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, IsClass(_A("K"))); + REQUIRE_THAT(src, IsClass(_A("L"))); + REQUIRE_THAT(src, IsClass(_A("M"))); + REQUIRE_THAT(src, IsClass(_A("N"))); + REQUIRE_THAT(src, IsClass(_A("NN"))); + REQUIRE_THAT(src, IsClass(_A("NNN"))); + + REQUIRE_THAT(src, + IsInstantiation( + _A("custom_container"), _A("custom_container"))); + + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "+a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "+b")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("C"), "+c")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "+d")); + REQUIRE_THAT( + src, IsAggregation(_A("R"), _A("custom_container"), "+e")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("F"), "+f")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G"), "+g")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("H"), "+h")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("I"), "+i")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("J"), "+j")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("K"), "+k")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("L"), "+lm")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("M"), "+lm")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("N"), "+ns")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("NN"), "+ns")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("NNN"), "+ns")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00007/test_case.h b/tests/t00007/test_case.h index 0155b4d7..eaa3102f 100644 --- a/tests/t00007/test_case.h +++ b/tests/t00007/test_case.h @@ -29,21 +29,21 @@ TEST_CASE("t00007", "[test-case][class]") REQUIRE(model->name() == "t00007_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + 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("R"))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("A"), "+a")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("B"), "+b")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("C"), "+c")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "+a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "+b")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("C"), "+c")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -61,8 +61,19 @@ TEST_CASE("t00007", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + 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, IsAggregation(_A("R"), _A("A"), "+a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "+b")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("C"), "+c")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00008/test_case.h b/tests/t00008/test_case.h index 189cc2da..c0a03a36 100644 --- a/tests/t00008/test_case.h +++ b/tests/t00008/test_case.h @@ -29,34 +29,34 @@ TEST_CASE("t00008", "[test-case][class]") REQUIRE(model->name() == "t00008_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // TODO: add option to resolve using declared types // REQUIRE_THAT(puml, IsClassTemplate("A", "T, P, bool (*)(int, int), // int N")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T,P=T,CMP=nullptr,int N=3")); - REQUIRE_THAT(puml, IsClassTemplate("B", "T,C<>")); + REQUIRE_THAT(src, IsClassTemplate("A", "T,P=T,CMP=nullptr,int N=3")); + REQUIRE_THAT(src, IsClassTemplate("B", "T,C<>")); - REQUIRE_THAT(puml, (IsField("value", "T"))); - REQUIRE_THAT(puml, (IsField("pointer", "T *"))); - REQUIRE_THAT(puml, (IsField("reference", "T &"))); - REQUIRE_THAT(puml, (IsField("values", "std::vector

"))); - REQUIRE_THAT(puml, (IsField("ints", "std::array"))); + REQUIRE_THAT(src, (IsField("value", "T"))); + REQUIRE_THAT(src, (IsField("pointer", "T *"))); + REQUIRE_THAT(src, (IsField("reference", "T &"))); + REQUIRE_THAT(src, (IsField("values", "std::vector

"))); + REQUIRE_THAT(src, (IsField("ints", "std::array"))); // TODO: add option to resolve using declared types // REQUIRE_THAT(puml, IsField(Public("bool (*)(int, int) comparator"))); - REQUIRE_THAT(puml, (IsField("comparator", "CMP"))); + REQUIRE_THAT(src, (IsField("comparator", "CMP"))); - REQUIRE_THAT(puml, !IsClass(_A("E::nested_template"))); - REQUIRE_THAT(puml, IsClassTemplate("E::nested_template", "ET")); - REQUIRE_THAT(puml, IsClassTemplate("E::nested_template", "char")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, !IsClass(_A("E::nested_template"))); + REQUIRE_THAT(src, IsClassTemplate("E::nested_template", "ET")); + REQUIRE_THAT(src, IsClassTemplate("E::nested_template", "char")); + REQUIRE_THAT(src, IsInstantiation( _A("E::nested_template"), _A("E::nested_template"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -75,8 +75,31 @@ TEST_CASE("t00008", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + using mermaid::IsField; + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B>"))); + + REQUIRE_THAT(src, (IsField("value", "T"))); + REQUIRE_THAT(src, (IsField("pointer", "T *"))); + REQUIRE_THAT(src, (IsField("reference", "T &"))); + REQUIRE_THAT(src, (IsField("values", "std::vector

"))); + REQUIRE_THAT(src, (IsField("ints", "std::array"))); + // TODO: add option to resolve using declared types + // REQUIRE_THAT(puml, IsField(Public("bool (*)(int, int) comparator"))); + REQUIRE_THAT(src, (IsField("comparator", "CMP"))); + + REQUIRE_THAT(src, !IsClass(_A("E::nested_template"))); + REQUIRE_THAT(src, IsClass(_A("E::nested_template"))); + REQUIRE_THAT(src, IsClass(_A("E::nested_template"))); + REQUIRE_THAT(src, + IsInstantiation( + _A("E::nested_template"), _A("E::nested_template"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00009/test_case.h b/tests/t00009/test_case.h index d0d0b413..1946f432 100644 --- a/tests/t00009/test_case.h +++ b/tests/t00009/test_case.h @@ -29,31 +29,31 @@ TEST_CASE("t00009", "[test-case][class]") REQUIRE(model->name() == "t00009_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); - REQUIRE_THAT(puml, IsClass(_A("B"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClassTemplate("A", "T")); + REQUIRE_THAT(src, IsClass(_A("B"))); - REQUIRE_THAT(puml, (IsField("value", "T"))); - REQUIRE_THAT(puml, (IsField("aint", "A"))); - REQUIRE_THAT(puml, (IsField("astring", "A *"))); - REQUIRE_THAT(puml, - (IsField("avector", "A> &"))); - - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - - REQUIRE_THAT(puml, IsAggregation(_A("B"), _A("A"), "+aint")); + REQUIRE_THAT(src, (IsField("value", "T"))); + REQUIRE_THAT(src, (IsField("aint", "A"))); + REQUIRE_THAT(src, (IsField("astring", "A *"))); REQUIRE_THAT( - puml, IsAssociation(_A("B"), _A("A"), "+astring")); - REQUIRE_THAT(puml, + src, (IsField("avector", "A> &"))); + + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); + + REQUIRE_THAT(src, IsAggregation(_A("B"), _A("A"), "+aint")); + REQUIRE_THAT( + src, IsAssociation(_A("B"), _A("A"), "+astring")); + REQUIRE_THAT(src, IsAssociation( _A("B"), _A("A>"), "+avector")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -73,8 +73,30 @@ TEST_CASE("t00009", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsField; + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + + REQUIRE_THAT(src, (IsField("value", "T"))); + REQUIRE_THAT(src, (IsField("aint", "A"))); + REQUIRE_THAT(src, (IsField("astring", "A *"))); + REQUIRE_THAT( + src, (IsField("avector", "A> &"))); + + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); + + REQUIRE_THAT(src, IsAggregation(_A("B"), _A("A"), "+aint")); + REQUIRE_THAT( + src, IsAssociation(_A("B"), _A("A"), "+astring")); + REQUIRE_THAT(src, + IsAssociation( + _A("B"), _A("A>"), "+avector")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00010/test_case.h b/tests/t00010/test_case.h index c6d77578..cd86ec6a 100644 --- a/tests/t00010/test_case.h +++ b/tests/t00010/test_case.h @@ -29,26 +29,26 @@ TEST_CASE("t00010", "[test-case][class]") REQUIRE(model->name() == "t00010_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T,P")); - REQUIRE_THAT(puml, IsClassTemplate("B", "T")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClassTemplate("A", "T,P")); + REQUIRE_THAT(src, IsClassTemplate("B", "T")); - REQUIRE_THAT(puml, (IsField("astring", "A"))); - REQUIRE_THAT(puml, (IsField("aintstring", "B"))); + REQUIRE_THAT(src, (IsField("astring", "A"))); + REQUIRE_THAT(src, (IsField("aintstring", "B"))); REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("B"), _A("B"))); + src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B"))); - REQUIRE_THAT(puml, - IsAggregation(_A("B"), _A("A"), "+astring")); - REQUIRE_THAT(puml, IsAggregation(_A("C"), _A("B"), "+aintstring")); + REQUIRE_THAT( + src, IsAggregation(_A("B"), _A("A"), "+astring")); + REQUIRE_THAT(src, IsAggregation(_A("C"), _A("B"), "+aintstring")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -66,8 +66,25 @@ TEST_CASE("t00010", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsField; + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + + REQUIRE_THAT(src, (IsField("astring", "A"))); + REQUIRE_THAT(src, (IsField("aintstring", "B"))); + + REQUIRE_THAT( + src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B"))); + + REQUIRE_THAT( + src, IsAggregation(_A("B"), _A("A"), "+astring")); + REQUIRE_THAT(src, IsAggregation(_A("C"), _A("B"), "+aintstring")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00011/test_case.h b/tests/t00011/test_case.h index fd44377b..cc3554ff 100644 --- a/tests/t00011/test_case.h +++ b/tests/t00011/test_case.h @@ -29,21 +29,19 @@ TEST_CASE("t00011", "[test-case][class]") REQUIRE(model->name() == "t00011_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, !IsClass(_A("external::C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("external::C"))); + REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsAssociation(_A("B"), _A("A"))); - REQUIRE_THAT(puml, IsFriend(_A("A"), _A("B"))); + REQUIRE_THAT(src, IsAssociation(_A("B"), _A("A"))); + REQUIRE_THAT(src, IsFriend(_A("A"), _A("B"))); // REQUIRE_THAT(puml, IsFriend(_A("A"), _A("D"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -58,8 +56,19 @@ TEST_CASE("t00011", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("external::C"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + + REQUIRE_THAT(src, IsAssociation(_A("B"), _A("A"))); + REQUIRE_THAT(src, IsFriend(_A("A"), _A("B"))); + // REQUIRE_THAT(puml, IsFriend(_A("A"), _A("D"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00012/test_case.h b/tests/t00012/test_case.h index dd108370..3145eda6 100644 --- a/tests/t00012/test_case.h +++ b/tests/t00012/test_case.h @@ -29,24 +29,24 @@ TEST_CASE("t00012", "[test-case][class]") REQUIRE(model->name() == "t00012_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T,Ts...")); - REQUIRE_THAT(puml, IsClassTemplate("B", "int... Is")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClassTemplate("A", "T,Ts...")); + REQUIRE_THAT(src, IsClassTemplate("B", "int... Is")); - REQUIRE_THAT(puml, IsInstantiation(_A("B"), _A("B<3,2,1>"))); + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B<3,2,1>"))); REQUIRE_THAT( - puml, IsInstantiation(_A("B"), _A("B<1,1,1,1>"))); - REQUIRE_THAT(puml, + src, IsInstantiation(_A("B"), _A("B<1,1,1,1>"))); + REQUIRE_THAT(src, IsInstantiation(_A("C"), _A("C>>>,3,3," "3>"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -64,8 +64,22 @@ TEST_CASE("t00012", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B<3,2,1>"))); + REQUIRE_THAT( + src, IsInstantiation(_A("B"), _A("B<1,1,1,1>"))); + REQUIRE_THAT(src, + IsInstantiation(_A("C"), + _A("C>>>,3,3," + "3>"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00013/test_case.h b/tests/t00013/test_case.h index aa1868bf..9dfd2281 100644 --- a/tests/t00013/test_case.h +++ b/tests/t00013/test_case.h @@ -29,40 +29,40 @@ TEST_CASE("t00013", "[test-case][class]") REQUIRE(model->name() == "t00013_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClassTemplate("E", "T")); - REQUIRE_THAT(puml, IsClassTemplate("G", "T,Args...")); + 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, IsClassTemplate("G", "T,Args...")); - REQUIRE_THAT(puml, !IsDependency(_A("R"), _A("R"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("B"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("C"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("D"))); - REQUIRE_THAT(puml, IsDependency(_A("D"), _A("R"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("E"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("E"))); - REQUIRE_THAT(puml, IsInstantiation(_A("E"), _A("E"))); - REQUIRE_THAT(puml, IsInstantiation(_A("E"), _A("E"))); + REQUIRE_THAT(src, !IsDependency(_A("R"), _A("R"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("A"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("B"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("C"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("D"))); + REQUIRE_THAT(src, IsDependency(_A("D"), _A("R"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("E"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("E"))); + REQUIRE_THAT(src, IsInstantiation(_A("E"), _A("E"))); + REQUIRE_THAT(src, IsInstantiation(_A("E"), _A("E"))); REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("E"), "-estring")); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("ABCD::F"))); + src, IsAggregation(_A("R"), _A("E"), "-estring")); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("ABCD::F"))); REQUIRE_THAT( - puml, IsInstantiation(_A("ABCD::F"), _A("ABCD::F"))); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("ABCD::F"))); + src, IsInstantiation(_A("ABCD::F"), _A("ABCD::F"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("ABCD::F"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("G"), _A("G"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -85,8 +85,38 @@ TEST_CASE("t00013", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + 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("G"))); + + REQUIRE_THAT(src, !IsDependency(_A("R"), _A("R"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("A"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("B"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("C"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("D"))); + REQUIRE_THAT(src, IsDependency(_A("D"), _A("R"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("E"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("E"))); + REQUIRE_THAT(src, IsInstantiation(_A("E"), _A("E"))); + REQUIRE_THAT(src, IsInstantiation(_A("E"), _A("E"))); + REQUIRE_THAT( + src, IsAggregation(_A("R"), _A("E"), "-estring")); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("ABCD::F"))); + REQUIRE_THAT( + src, IsInstantiation(_A("ABCD::F"), _A("ABCD::F"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("ABCD::F"))); + + REQUIRE_THAT(src, + IsInstantiation( + _A("G"), _A("G"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00014/test_case.h b/tests/t00014/test_case.h index 5a68b6ed..50ab931f 100644 --- a/tests/t00014/test_case.h +++ b/tests/t00014/test_case.h @@ -29,124 +29,121 @@ TEST_CASE("t00014", "[test-case][class]") REQUIRE(model->name() == "t00014_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(src, !Contains("type-parameter-")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T,P")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T,std::string")); + REQUIRE_THAT(src, IsClassTemplate("A", "T,P")); + REQUIRE_THAT(src, IsClassTemplate("A", "T,std::string")); REQUIRE_THAT( - puml, IsClassTemplate("A", "T,std::unique_ptr")); - REQUIRE_THAT(puml, IsClassTemplate("A", "double,T")); + 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(puml, IsClassTemplate("A", "long,T")); - REQUIRE_THAT(puml, IsClassTemplate("A", "long,bool")); - REQUIRE_THAT(puml, IsClassTemplate("A", "double,bool")); - REQUIRE_THAT(puml, IsClassTemplate("A", "long,float")); - REQUIRE_THAT(puml, IsClassTemplate("A", "double,float")); - REQUIRE_THAT(puml, IsClassTemplate("A", "bool,std::string")); - REQUIRE_THAT(puml, IsClassTemplate("A", "std::string,std::string")); - REQUIRE_THAT(puml, IsClassTemplate("A", "char,std::string")); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClassTemplate("R", "T")); + 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(puml, IsField("bapair", "PairPairBA")); - REQUIRE_THAT(puml, IsField("abool", "APtr")); - REQUIRE_THAT(puml, IsField("aboolfloat", "AAPtr")); - REQUIRE_THAT(puml, IsField("afloat", "ASharedPtr")); + 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( - puml, IsField("boolstring", "A")); - REQUIRE_THAT( - puml, IsField("floatstring", "AStringPtr")); - REQUIRE_THAT(puml, IsField("atfloat", "AAPtr")); + src, IsField("boolstring", "A")); + REQUIRE_THAT(src, IsField("floatstring", "AStringPtr")); + REQUIRE_THAT(src, IsField("atfloat", "AAPtr")); - REQUIRE_THAT(puml, IsField("intstring", "AIntString")); - REQUIRE_THAT(puml, IsField("stringstring", "AStringString")); - REQUIRE_THAT(puml, IsField("bstringstring", "BStringString")); + REQUIRE_THAT(src, IsField("intstring", "AIntString")); + REQUIRE_THAT(src, IsField("stringstring", "AStringString")); + REQUIRE_THAT(src, IsField("bstringstring", "BStringString")); - REQUIRE_THAT(puml, IsField("bs", "BVector")); + REQUIRE_THAT(src, IsField("bs", "BVector")); - REQUIRE_THAT( - puml, IsField("cb", "SimpleCallback")); + REQUIRE_THAT(src, IsField("cb", "SimpleCallback")); #if LLVM_VERSION_MAJOR >= 16 REQUIRE_THAT( - puml, IsField("gcb", "GenericCallback")); + src, IsField("gcb", "GenericCallback")); #else REQUIRE_THAT( - puml, IsField("gcb", "GenericCallback")); + src, IsField("gcb", "GenericCallback")); #endif - REQUIRE_THAT(puml, IsField("vcb", "VoidCallback")); - - REQUIRE_THAT(puml, - !IsClassTemplate("std::std::function", "void(T...,int),int)")); + REQUIRE_THAT(src, IsField("vcb", "VoidCallback")); REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); + src, !IsClassTemplate("std::std::function", "void(T...,int),int)")); - 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(puml, !IsInstantiation(_A("A"), // _A("A"))); REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); + src, IsInstantiation(_A("A"), _A("A"))); REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); + src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); REQUIRE_THAT( - puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, + src, IsInstantiation(_A("A"), _A("A"))); + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("A"), _A("A"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("A>"), _A("A>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("A"), _A("A>"))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "+vps")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "-bapair")); - REQUIRE_THAT(puml, - IsAggregation(_A("R"), _A("A"), "-aboolfloat")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "+vps")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B"), "-bapair")); REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("A"), "-bapair")); - REQUIRE_THAT(puml, + 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( - puml, IsAggregation(_A("R"), _A("A"), "-atfloat")); + src, IsAggregation(_A("R"), _A("A"), "-atfloat")); REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("A"), "-atfloat")); + src, IsAggregation(_A("R"), _A("A"), "-atfloat")); REQUIRE_THAT( - puml, IsAssociation(_A("R"), _A("A"), "-afloat")); - REQUIRE_THAT(puml, + src, IsAssociation(_A("R"), _A("A"), "-afloat")); + REQUIRE_THAT(src, IsAggregation( _A("R"), _A("A"), "-boolstring")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A>"), "-floatstring")); #if !defined(__APPLE__) // TODO(#176) - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("A"))); + REQUIRE_THAT(src, IsDependency(_A("R"), _A("A"))); REQUIRE_THAT( - puml, IsDependency(_A("R"), _A("A"))); + src, IsDependency(_A("R"), _A("A"))); #endif - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -171,8 +168,118 @@ TEST_CASE("t00014", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 5c087886..17e930d6 100644 --- a/tests/t00015/test_case.h +++ b/tests/t00015/test_case.h @@ -29,18 +29,18 @@ TEST_CASE("t00015", "[test-case][class]") REQUIRE(model->name() == "t00015_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("ns1::A"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2_v0_9_0::A"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::Anon"))); - REQUIRE_THAT(puml, IsClass(_A("ns3::ns1::ns2::Anon"))); - REQUIRE_THAT(puml, IsClass(_A("ns3::B"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClass(_A("ns1::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2_v0_9_0::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::Anon"))); + REQUIRE_THAT(src, IsClass(_A("ns3::ns1::ns2::Anon"))); + REQUIRE_THAT(src, IsClass(_A("ns3::B"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -56,8 +56,16 @@ TEST_CASE("t00015", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("ns1::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2_v0_9_0::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::Anon"))); + REQUIRE_THAT(src, IsClass(_A("ns3::ns1::ns2::Anon"))); + REQUIRE_THAT(src, IsClass(_A("ns3::B"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00016/test_case.h b/tests/t00016/test_case.h index 7acf4419..bbafe446 100644 --- a/tests/t00016/test_case.h +++ b/tests/t00016/test_case.h @@ -29,30 +29,30 @@ TEST_CASE("t00016", "[test-case][class]") REQUIRE(model->name() == "t00016_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "typename")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "int")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "bool")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "char")); - REQUIRE_THAT(puml, IsClassTemplate("is_numeric", "float")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClassTemplate("is_numeric", "typename")); + REQUIRE_THAT(src, IsClassTemplate("is_numeric", "int")); + REQUIRE_THAT(src, IsClassTemplate("is_numeric", "bool")); + REQUIRE_THAT(src, IsClassTemplate("is_numeric", "char")); + REQUIRE_THAT(src, IsClassTemplate("is_numeric", "float")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("is_numeric"), _A("is_numeric"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("is_numeric"), _A("is_numeric"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("is_numeric"), _A("is_numeric"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("is_numeric"), _A("is_numeric"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -68,8 +68,28 @@ TEST_CASE("t00016", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("is_numeric"))); + REQUIRE_THAT(src, IsClass(_A("is_numeric"))); + REQUIRE_THAT(src, IsClass(_A("is_numeric"))); + REQUIRE_THAT(src, IsClass(_A("is_numeric"))); + REQUIRE_THAT(src, IsClass(_A("is_numeric"))); + + REQUIRE_THAT(src, + IsInstantiation(_A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(src, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(src, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); + REQUIRE_THAT(src, + IsInstantiation( + _A("is_numeric"), _A("is_numeric"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00017/test_case.h b/tests/t00017/test_case.h index af74548e..f41b6b5a 100644 --- a/tests/t00017/test_case.h +++ b/tests/t00017/test_case.h @@ -29,46 +29,46 @@ TEST_CASE("t00017", "[test-case][class]") REQUIRE(model->name() == "t00017_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("G"))); - REQUIRE_THAT(puml, IsClass(_A("H"))); - REQUIRE_THAT(puml, IsClass(_A("I"))); - REQUIRE_THAT(puml, IsClass(_A("J"))); - REQUIRE_THAT(puml, IsClass(_A("K"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + 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, 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, IsClass(_A("K"))); + REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(puml, (IsField("some_int", "int"))); - REQUIRE_THAT(puml, (IsField("some_int_pointer", "int *"))); + REQUIRE_THAT(src, (IsField("some_int", "int"))); + REQUIRE_THAT(src, (IsField("some_int_pointer", "int *"))); REQUIRE_THAT( - puml, (IsField("some_int_pointer_pointer", "int **"))); + src, (IsField("some_int_pointer_pointer", "int **"))); // Relationship members should not be rendered as part of this testcase - REQUIRE_THAT(puml, !(IsField("a", _A("A")))); - REQUIRE_THAT(puml, !(IsField("b", _A("B")))); + REQUIRE_THAT(src, !(IsField("a", _A("A")))); + REQUIRE_THAT(src, !(IsField("b", _A("B")))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("A"), "-a")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("B"), "-b")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("C"), "-c")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("D"), "-d")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("E"), "-e")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("F"), "-f")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("G"), "-g")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("H"), "-h")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("I"), "-i")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("J"), "-j")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "-k")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "-a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "-b")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("C"), "-c")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "-d")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("E"), "-e")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("F"), "-f")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G"), "-g")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("H"), "-h")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("I"), "-i")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("J"), "-j")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("K"), "-k")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -91,8 +91,44 @@ TEST_CASE("t00017", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(src); + using mermaid::IsField; - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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, IsClass(_A("K"))); + REQUIRE_THAT(src, IsClass(_A("R"))); + + REQUIRE_THAT(src, (IsField("some_int", "int"))); + REQUIRE_THAT(src, (IsField("some_int_pointer", "int *"))); + REQUIRE_THAT( + src, (IsField("some_int_pointer_pointer", "int **"))); + + // Relationship members should not be rendered as part of this testcase + REQUIRE_THAT(src, !(IsField("a", _A("A")))); + REQUIRE_THAT(src, !(IsField("b", _A("B")))); + + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "-a")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("B"), "-b")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("C"), "-c")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "-d")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("E"), "-e")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("F"), "-f")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G"), "-g")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("H"), "-h")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("I"), "-i")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("J"), "-j")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("K"), "-k")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00018/test_case.h b/tests/t00018/test_case.h index e19d434e..9f3f2f0f 100644 --- a/tests/t00018/test_case.h +++ b/tests/t00018/test_case.h @@ -29,20 +29,20 @@ TEST_CASE("t00018", "[test-case][class]") REQUIRE(model->name() == "t00018_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("widget"))); - REQUIRE_THAT(puml, IsClass(_A("impl::widget"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClass(_A("widget"))); + REQUIRE_THAT(src, IsClass(_A("impl::widget"))); REQUIRE_THAT( - puml, IsAggregation(_A("widget"), _A("impl::widget"), "-pImpl")); - REQUIRE_THAT(puml, IsDependency(_A("impl::widget"), _A("widget"))); - REQUIRE_THAT(puml, !IsDependency(_A("widget"), _A("widget"))); + src, IsAggregation(_A("widget"), _A("impl::widget"), "-pImpl")); + REQUIRE_THAT(src, IsDependency(_A("impl::widget"), _A("widget"))); + REQUIRE_THAT(src, !IsDependency(_A("widget"), _A("widget"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -56,8 +56,17 @@ TEST_CASE("t00018", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(src); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + REQUIRE_THAT(src, IsClass(_A("widget"))); + REQUIRE_THAT(src, IsClass(_A("impl::widget"))); + + REQUIRE_THAT( + src, IsAggregation(_A("widget"), _A("impl::widget"), "-pImpl")); + REQUIRE_THAT(src, IsDependency(_A("impl::widget"), _A("widget"))); + REQUIRE_THAT(src, !IsDependency(_A("widget"), _A("widget"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00019/test_case.h b/tests/t00019/test_case.h index 90636ddd..b8b4dc35 100644 --- a/tests/t00019/test_case.h +++ b/tests/t00019/test_case.h @@ -29,47 +29,47 @@ TEST_CASE("t00019", "[test-case][class]") REQUIRE(model->name() == "t00019_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("Base"))); - REQUIRE_THAT(puml, IsClassTemplate("Layer1", "LowerLayer")); - REQUIRE_THAT(puml, IsClassTemplate("Layer2", "LowerLayer")); - REQUIRE_THAT(puml, IsClassTemplate("Layer3", "LowerLayer")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClass(_A("Base"))); + REQUIRE_THAT(src, IsClassTemplate("Layer1", "LowerLayer")); + REQUIRE_THAT(src, IsClassTemplate("Layer2", "LowerLayer")); + REQUIRE_THAT(src, IsClassTemplate("Layer3", "LowerLayer")); - REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("Layer3"))); - REQUIRE_THAT(puml, !IsDependency(_A("Base"), _A("Layer3"))); + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("Layer3"))); + REQUIRE_THAT(src, !IsDependency(_A("Base"), _A("Layer3"))); REQUIRE_THAT( - puml, IsBaseClass(_A("Layer3"), _A("Layer2>"))); - REQUIRE_THAT(puml, - !IsDependency(_A("Layer3"), _A("Layer2>"))); + src, IsBaseClass(_A("Layer3"), _A("Layer2>"))); + REQUIRE_THAT( + src, !IsDependency(_A("Layer3"), _A("Layer2>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsBaseClass(_A("Layer2>"), _A("Layer1>>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, !IsDependency(_A("Layer2>"), _A("Layer1>>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation( _A("A"), _A("Layer1>>"), "+layers")); REQUIRE_THAT( - puml, !IsDependency(_A("A"), _A("Layer1>>"))); + src, !IsDependency(_A("A"), _A("Layer1>>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, !IsAggregation(_A("A"), _A("Layer2>"), "+layers")); REQUIRE_THAT( - puml, !IsAggregation(_A("A"), _A("Layer3"), "+layers")); + src, !IsAggregation(_A("A"), _A("Layer3"), "+layers")); - REQUIRE_THAT(puml, !IsAggregation(_A("A"), _A("Base"), "+layers")); + REQUIRE_THAT(src, !IsAggregation(_A("A"), _A("Base"), "+layers")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -84,8 +84,45 @@ TEST_CASE("t00019", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("Base"))); + REQUIRE_THAT(src, IsClass(_A("Layer1"))); + REQUIRE_THAT(src, IsClass(_A("Layer2"))); + REQUIRE_THAT(src, IsClass(_A("Layer3"))); + + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("Layer3"))); + REQUIRE_THAT(src, !IsDependency(_A("Base"), _A("Layer3"))); + + REQUIRE_THAT( + src, IsBaseClass(_A("Layer3"), _A("Layer2>"))); + REQUIRE_THAT( + src, !IsDependency(_A("Layer3"), _A("Layer2>"))); + + REQUIRE_THAT(src, + IsBaseClass(_A("Layer2>"), + _A("Layer1>>"))); + + REQUIRE_THAT(src, + !IsDependency(_A("Layer2>"), + _A("Layer1>>"))); + + REQUIRE_THAT(src, + IsAggregation( + _A("A"), _A("Layer1>>"), "+layers")); + REQUIRE_THAT( + src, !IsDependency(_A("A"), _A("Layer1>>"))); + + REQUIRE_THAT(src, + !IsAggregation(_A("A"), _A("Layer2>"), "+layers")); + + REQUIRE_THAT( + src, !IsAggregation(_A("A"), _A("Layer3"), "+layers")); + + REQUIRE_THAT(src, !IsAggregation(_A("A"), _A("Base"), "+layers")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00020/test_case.h b/tests/t00020/test_case.h index 4a67463b..e64a9463 100644 --- a/tests/t00020/test_case.h +++ b/tests/t00020/test_case.h @@ -29,22 +29,22 @@ TEST_CASE("t00020", "[test-case][class]") REQUIRE(model->name() == "t00020_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("ProductA"))); - REQUIRE_THAT(puml, IsAbstractClass(_A("ProductB"))); - REQUIRE_THAT(puml, IsClass(_A("ProductA1"))); - REQUIRE_THAT(puml, IsClass(_A("ProductA2"))); - REQUIRE_THAT(puml, IsClass(_A("ProductB1"))); - REQUIRE_THAT(puml, IsClass(_A("ProductB2"))); - REQUIRE_THAT(puml, IsAbstractClass(_A("AbstractFactory"))); - REQUIRE_THAT(puml, IsClass(_A("Factory1"))); - REQUIRE_THAT(puml, IsClass(_A("Factory2"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -60,8 +60,21 @@ TEST_CASE("t00020", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 f951d5dc..1451d2ec 100644 --- a/tests/t00021/test_case.h +++ b/tests/t00021/test_case.h @@ -29,20 +29,20 @@ TEST_CASE("t00021", "[test-case][class]") REQUIRE(model->name() == "t00021_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("Item"))); - REQUIRE_THAT(puml, IsAbstractClass(_A("Visitor"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("Visitor1"))); - REQUIRE_THAT(puml, IsClass(_A("Visitor2"))); - REQUIRE_THAT(puml, IsClass(_A("Visitor3"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsAbstractClass(_A("Item"))); + REQUIRE_THAT(src, IsAbstractClass(_A("Visitor"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("Visitor1"))); + REQUIRE_THAT(src, IsClass(_A("Visitor2"))); + REQUIRE_THAT(src, IsClass(_A("Visitor3"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -56,8 +56,19 @@ TEST_CASE("t00021", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsAbstractClass; + + REQUIRE_THAT(src, IsAbstractClass(_A("Item"))); + REQUIRE_THAT(src, IsAbstractClass(_A("Visitor"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("Visitor1"))); + REQUIRE_THAT(src, IsClass(_A("Visitor2"))); + REQUIRE_THAT(src, IsClass(_A("Visitor3"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00022/test_case.h b/tests/t00022/test_case.h index 0d536a20..3294ce30 100644 --- a/tests/t00022/test_case.h +++ b/tests/t00022/test_case.h @@ -29,16 +29,16 @@ TEST_CASE("t00022", "[test-case][class]") REQUIRE(model->name() == "t00022_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("A1"))); - REQUIRE_THAT(puml, IsClass(_A("A2"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsAbstractClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("A1"))); + REQUIRE_THAT(src, IsClass(_A("A2"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -52,8 +52,14 @@ TEST_CASE("t00022", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); + mermaid::AliasMatcher _A(src); + using mermaid::IsAbstractClass; - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + REQUIRE_THAT(src, IsAbstractClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("A1"))); + REQUIRE_THAT(src, IsClass(_A("A2"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } diff --git a/tests/t00023/test_case.h b/tests/t00023/test_case.h index 245065fa..c76f72eb 100644 --- a/tests/t00023/test_case.h +++ b/tests/t00023/test_case.h @@ -29,16 +29,16 @@ TEST_CASE("t00023", "[test-case][class]") REQUIRE(model->name() == "t00023_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("Strategy"))); - REQUIRE_THAT(puml, IsClass(_A("StrategyA"))); - REQUIRE_THAT(puml, IsClass(_A("StrategyB"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsAbstractClass(_A("Strategy"))); + REQUIRE_THAT(src, IsClass(_A("StrategyA"))); + REQUIRE_THAT(src, IsClass(_A("StrategyB"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -52,8 +52,15 @@ TEST_CASE("t00023", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsAbstractClass; + + REQUIRE_THAT(src, IsAbstractClass(_A("Strategy"))); + REQUIRE_THAT(src, IsClass(_A("StrategyA"))); + REQUIRE_THAT(src, IsClass(_A("StrategyB"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00024/test_case.h b/tests/t00024/test_case.h index d6f568de..1d30537d 100644 --- a/tests/t00024/test_case.h +++ b/tests/t00024/test_case.h @@ -29,20 +29,20 @@ TEST_CASE("t00024", "[test-case][class]") REQUIRE(model->name() == "t00024_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("Target"))); - REQUIRE_THAT(puml, IsClass(_A("Target1"))); - REQUIRE_THAT(puml, IsClass(_A("Target2"))); - REQUIRE_THAT(puml, IsClass(_A("Proxy"))); - REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Target1"))); - REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Target2"))); - REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Proxy"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsAbstractClass(_A("Target"))); + REQUIRE_THAT(src, IsClass(_A("Target1"))); + REQUIRE_THAT(src, IsClass(_A("Target2"))); + REQUIRE_THAT(src, IsClass(_A("Proxy"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Target1"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Target2"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Proxy"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -59,8 +59,19 @@ TEST_CASE("t00024", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsAbstractClass; + + REQUIRE_THAT(src, IsAbstractClass(_A("Target"))); + REQUIRE_THAT(src, IsClass(_A("Target1"))); + REQUIRE_THAT(src, IsClass(_A("Target2"))); + REQUIRE_THAT(src, IsClass(_A("Proxy"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Target1"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Target2"))); + REQUIRE_THAT(src, IsBaseClass(_A("Target"), _A("Proxy"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00025/test_case.h b/tests/t00025/test_case.h index e4ee2950..061dfb95 100644 --- a/tests/t00025/test_case.h +++ b/tests/t00025/test_case.h @@ -29,30 +29,30 @@ TEST_CASE("t00025", "[test-case][class]") REQUIRE(model->name() == "t00025_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("Target1"))); - REQUIRE_THAT(puml, IsClass(_A("Target2"))); - REQUIRE_THAT(puml, IsClassTemplate("Proxy", "T")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClass(_A("Target1"))); + REQUIRE_THAT(src, IsClass(_A("Target2"))); + REQUIRE_THAT(src, IsClassTemplate("Proxy", "T")); REQUIRE_THAT( - puml, IsInstantiation(_A("Proxy"), _A("Proxy"))); + src, IsInstantiation(_A("Proxy"), _A("Proxy"))); REQUIRE_THAT( - puml, IsInstantiation(_A("Proxy"), _A("Proxy"))); - REQUIRE_THAT(puml, + src, IsInstantiation(_A("Proxy"), _A("Proxy"))); + REQUIRE_THAT(src, IsAggregation(_A("ProxyHolder"), _A("Proxy"), "+proxy1")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("ProxyHolder"), _A("Proxy"), "+proxy2")); REQUIRE_THAT( - puml, !IsAggregation(_A("ProxyHolder"), _A("Target1"), "+proxy1")); + src, !IsAggregation(_A("ProxyHolder"), _A("Target1"), "+proxy1")); REQUIRE_THAT( - puml, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2")); - REQUIRE_THAT(puml, IsDependency(_A("Proxy"), _A("Target1"))); - REQUIRE_THAT(puml, IsDependency(_A("Proxy"), _A("Target2"))); + src, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2")); + REQUIRE_THAT(src, IsDependency(_A("Proxy"), _A("Target1"))); + REQUIRE_THAT(src, IsDependency(_A("Proxy"), _A("Target2"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -68,8 +68,28 @@ TEST_CASE("t00025", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("Target1"))); + REQUIRE_THAT(src, IsClass(_A("Target2"))); + REQUIRE_THAT(src, IsClass(_A("Proxy"))); + REQUIRE_THAT( + src, IsInstantiation(_A("Proxy"), _A("Proxy"))); + REQUIRE_THAT( + src, IsInstantiation(_A("Proxy"), _A("Proxy"))); + REQUIRE_THAT(src, + IsAggregation(_A("ProxyHolder"), _A("Proxy"), "+proxy1")); + REQUIRE_THAT(src, + IsAggregation(_A("ProxyHolder"), _A("Proxy"), "+proxy2")); + REQUIRE_THAT( + src, !IsAggregation(_A("ProxyHolder"), _A("Target1"), "+proxy1")); + REQUIRE_THAT( + src, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2")); + REQUIRE_THAT(src, IsDependency(_A("Proxy"), _A("Target1"))); + REQUIRE_THAT(src, IsDependency(_A("Proxy"), _A("Target2"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00026/test_case.h b/tests/t00026/test_case.h index 070789ff..4b1ffdc6 100644 --- a/tests/t00026/test_case.h +++ b/tests/t00026/test_case.h @@ -29,21 +29,21 @@ TEST_CASE("t00026", "[test-case][class]") REQUIRE(model->name() == "t00026_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("Memento", "T")); - REQUIRE_THAT(puml, IsClassTemplate("Originator", "T")); - REQUIRE_THAT(puml, IsClassTemplate("Caretaker", "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClassTemplate("Memento", "T")); + REQUIRE_THAT(src, IsClassTemplate("Originator", "T")); + REQUIRE_THAT(src, IsClassTemplate("Caretaker", "T")); + REQUIRE_THAT(src, IsInstantiation( _A("Originator"), _A("Originator"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("Caretaker"), _A("Caretaker"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -57,8 +57,19 @@ TEST_CASE("t00026", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("Memento"))); + REQUIRE_THAT(src, IsClass(_A("Originator"))); + REQUIRE_THAT(src, IsClass(_A("Caretaker"))); + REQUIRE_THAT(src, + IsInstantiation( + _A("Originator"), _A("Originator"))); + REQUIRE_THAT(src, + IsInstantiation(_A("Caretaker"), _A("Caretaker"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00027/test_case.h b/tests/t00027/test_case.h index 02fa5290..df0534a6 100644 --- a/tests/t00027/test_case.h +++ b/tests/t00027/test_case.h @@ -29,34 +29,34 @@ TEST_CASE("t00027", "[test-case][class]") REQUIRE(model->name() == "t00027_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsAbstractClass(_A("Shape"))); - REQUIRE_THAT(puml, IsAbstractClass(_A("ShapeDecorator"))); - REQUIRE_THAT(puml, IsClassTemplate("Line", "T<>...")); - REQUIRE_THAT(puml, IsClassTemplate("Text", "T<>...")); + 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( - puml, IsInstantiation(_A("Line...>"), _A("Line"))); - REQUIRE_THAT(puml, - IsInstantiation(_A("Line...>"), _A("Line"))); + src, IsInstantiation(_A("Line...>"), _A("Line"))); REQUIRE_THAT( - puml, IsInstantiation(_A("Text...>"), _A("Text"))); - REQUIRE_THAT(puml, - IsInstantiation(_A("Text...>"), _A("Text"))); + src, IsInstantiation(_A("Line...>"), _A("Line"))); + REQUIRE_THAT( + src, IsInstantiation(_A("Text...>"), _A("Text"))); + REQUIRE_THAT( + src, IsInstantiation(_A("Text...>"), _A("Text"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("Window"), _A("Line"), "+border")); REQUIRE_THAT( - puml, IsAggregation(_A("Window"), _A("Line"), "+divider")); - REQUIRE_THAT(puml, + src, IsAggregation(_A("Window"), _A("Line"), "+divider")); + REQUIRE_THAT(src, IsAggregation(_A("Window"), _A("Text"), "+title")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("Window"), _A("Text"), "+description")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -77,8 +77,33 @@ TEST_CASE("t00027", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 1e0cf880..2ebe094f 100644 --- a/tests/t00028/test_case.h +++ b/tests/t00028/test_case.h @@ -29,41 +29,41 @@ TEST_CASE("t00028", "[test-case][class]") REQUIRE(model->name() == "t00028_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClassTemplate("E", "T")); - REQUIRE_THAT(puml, IsEnum(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); - REQUIRE_THAT(puml, HasNote(_A("A"), "top", "A class note.")); - REQUIRE_THAT(puml, HasNote(_A("B"), "left", "B class note.")); - REQUIRE_THAT(puml, HasNote(_A("C"), "bottom", "C class note.")); + 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(puml, HasNote(_A("D"), "left", d_note)); + REQUIRE_THAT(src, HasNote(_A("D"), "left", d_note)); REQUIRE_THAT( - puml, HasNote(_A("E"), "left", "E template class note.")); - REQUIRE_THAT(puml, HasNote(_A("F"), "bottom", "F enum note.")); - REQUIRE_THAT(puml, !HasNote(_A("G"), "left", "G class note.")); - REQUIRE_THAT(puml, HasNote(_A("R"), "right", "R class note.")); - REQUIRE_THAT(puml, + 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( - puml, !HasMemberNote(_A("R"), "bbb", "right", "R class note.")); + src, !HasMemberNote(_A("R"), "bbb", "right", "R class note.")); REQUIRE_THAT( - puml, HasMemberNote(_A("R"), "ccc", "left", "Reference to C.")); + src, HasMemberNote(_A("R"), "ccc", "left", "Reference to C.")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -73,8 +73,23 @@ note.)"; save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + 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.")); + + 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 e7481ffa..de139312 100644 --- a/tests/t00029/test_case.h +++ b/tests/t00029/test_case.h @@ -29,31 +29,31 @@ TEST_CASE("t00029", "[test-case][class]") REQUIRE(model->name() == "t00029_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, !IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClassTemplate("C", "T")); - REQUIRE_THAT(puml, !IsClassTemplate("D", "T")); - REQUIRE_THAT(puml, IsEnum(_A("E"))); - REQUIRE_THAT(puml, !IsEnum(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("G1"))); - REQUIRE_THAT(puml, IsClass(_A("G2"))); - REQUIRE_THAT(puml, IsClass(_A("G3"))); - REQUIRE_THAT(puml, IsClass(_A("G4"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, !IsClass(_A("B"))); + REQUIRE_THAT(src, IsClassTemplate("C", "T")); + REQUIRE_THAT(src, !IsClassTemplate("D", "T")); + REQUIRE_THAT(src, IsEnum(_A("E"))); + REQUIRE_THAT(src, !IsEnum(_A("F"))); + REQUIRE_THAT(src, IsClass(_A("G1"))); + REQUIRE_THAT(src, IsClass(_A("G2"))); + REQUIRE_THAT(src, IsClass(_A("G3"))); + REQUIRE_THAT(src, IsClass(_A("G4"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("G1"), "+g1")); - REQUIRE_THAT(puml, !IsAggregation(_A("R"), _A("G2"), "+g2")); - REQUIRE_THAT(puml, !IsAggregation(_A("R"), _A("G3"), "+g3")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("G4"), "+g4")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("G1"), "+g1")); + REQUIRE_THAT(src, !IsAggregation(_A("R"), _A("G2"), "+g2")); + REQUIRE_THAT(src, !IsAggregation(_A("R"), _A("G3"), "+g3")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G4"), "+g4")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -65,8 +65,29 @@ TEST_CASE("t00029", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + 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, IsEnum(_A("E"))); + REQUIRE_THAT(src, !IsEnum(_A("F"))); + REQUIRE_THAT(src, IsClass(_A("G1"))); + REQUIRE_THAT(src, IsClass(_A("G2"))); + REQUIRE_THAT(src, IsClass(_A("G3"))); + REQUIRE_THAT(src, IsClass(_A("G4"))); + + REQUIRE_THAT(src, IsClass(_A("R"))); + + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("G1"), "+g1")); + REQUIRE_THAT(src, !IsAggregation(_A("R"), _A("G2"), "+g2")); + REQUIRE_THAT(src, !IsAggregation(_A("R"), _A("G3"), "+g3")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("G4"), "+g4")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00030/test_case.h b/tests/t00030/test_case.h index 42195fd4..cb4ca72c 100644 --- a/tests/t00030/test_case.h +++ b/tests/t00030/test_case.h @@ -29,26 +29,26 @@ TEST_CASE("t00030", "[test-case][class]") REQUIRE(model->name() == "t00030_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); + 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(puml, IsAssociation(_A("R"), _A("A"), "+aaa")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("A"), "+aaa")); REQUIRE_THAT( - puml, IsComposition(_A("R"), _A("B"), "+bbb", "0..1", "1..*")); + src, IsComposition(_A("R"), _A("B"), "+bbb", "0..1", "1..*")); REQUIRE_THAT( - puml, IsAggregation(_A("R"), _A("C"), "+ccc", "0..1", "1..5")); - REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("D"), "+ddd", "", "1")); - REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("E"), "+eee", "", "1")); + src, IsAggregation(_A("R"), _A("C"), "+ccc", "0..1", "1..5")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "+ddd", "", "1")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("E"), "+eee", "", "1")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -60,8 +60,23 @@ TEST_CASE("t00030", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + 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, IsAssociation(_A("R"), _A("A"), "+aaa")); + REQUIRE_THAT( + src, IsComposition(_A("R"), _A("B"), "+bbb", "0..1", "1..*")); + REQUIRE_THAT( + src, IsAggregation(_A("R"), _A("C"), "+ccc", "0..1", "1..5")); + REQUIRE_THAT(src, IsAssociation(_A("R"), _A("D"), "+ddd", "", "1")); + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("E"), "+eee", "", "1")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00031/test_case.h b/tests/t00031/test_case.h index b5d573ee..921a4293 100644 --- a/tests/t00031/test_case.h +++ b/tests/t00031/test_case.h @@ -29,32 +29,32 @@ TEST_CASE("t00031", "[test-case][class]") REQUIRE(model->name() == "t00031_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsEnum(_A("B"))); - REQUIRE_THAT(puml, IsClassTemplate("C", "T")); - REQUIRE_THAT(puml, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsEnum(_A("B"))); + REQUIRE_THAT(src, IsClassTemplate("C", "T")); + REQUIRE_THAT(src, IsClass(_A("D"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAssociationWithStyle( _A("R"), _A("A"), "+aaa", "#red,dashed,thickness=2")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsCompositionWithStyle( _A("R"), _A("B"), "+bbb", "#green,dashed,thickness=4")); - REQUIRE_THAT(puml, IsDependency(_A("R"), _A("B"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("R"), _A("B"))); + REQUIRE_THAT(src, IsAggregationWithStyle( _A("R"), _A("C"), "+ccc", "#blue,dotted,thickness=8")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAssociationWithStyle( _A("R"), _A("D"), "+ddd", "#blue,plain,thickness=16")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -67,8 +67,16 @@ TEST_CASE("t00031", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsEnum; + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsEnum(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00032/test_case.h b/tests/t00032/test_case.h index 52b69bef..b444be75 100644 --- a/tests/t00032/test_case.h +++ b/tests/t00032/test_case.h @@ -29,40 +29,40 @@ TEST_CASE("t00032", "[test-case][class]") REQUIRE(model->name() == "t00032_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("Base"))); - REQUIRE_THAT(puml, IsClass(_A("TBase"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("Base"))); + REQUIRE_THAT(src, IsClass(_A("TBase"))); + 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(puml, IsClassTemplate("Overload", "T,L,Ts...")); + REQUIRE_THAT(src, IsClassTemplate("Overload", "T,L,Ts...")); - REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("Overload"))); + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("Overload"))); REQUIRE_THAT( - puml, IsBaseClass(_A("TBase"), _A("Overload"))); + src, IsBaseClass(_A("TBase"), _A("Overload"))); REQUIRE_THAT( - puml, IsBaseClass(_A("A"), _A("Overload"))); + src, IsBaseClass(_A("A"), _A("Overload"))); REQUIRE_THAT( - puml, IsBaseClass(_A("B"), _A("Overload"))); + src, IsBaseClass(_A("B"), _A("Overload"))); REQUIRE_THAT( - puml, IsBaseClass(_A("C"), _A("Overload"))); + src, IsBaseClass(_A("C"), _A("Overload"))); REQUIRE_THAT( - puml, !IsDependency(_A("Overload"), _A("TBase"))); + src, !IsDependency(_A("Overload"), _A("TBase"))); REQUIRE_THAT( - puml, !IsDependency(_A("Overload"), _A("A"))); + src, !IsDependency(_A("Overload"), _A("A"))); REQUIRE_THAT( - puml, !IsDependency(_A("Overload"), _A("B"))); + src, !IsDependency(_A("Overload"), _A("B"))); REQUIRE_THAT( - puml, !IsDependency(_A("Overload"), _A("C"))); + src, !IsDependency(_A("Overload"), _A("C"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -76,8 +76,37 @@ TEST_CASE("t00032", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("Base"))); + REQUIRE_THAT(src, IsClass(_A("TBase"))); + 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("Overload"))); + + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("Overload"))); + REQUIRE_THAT( + src, IsBaseClass(_A("TBase"), _A("Overload"))); + REQUIRE_THAT( + src, IsBaseClass(_A("A"), _A("Overload"))); + REQUIRE_THAT( + src, IsBaseClass(_A("B"), _A("Overload"))); + REQUIRE_THAT( + src, IsBaseClass(_A("C"), _A("Overload"))); + REQUIRE_THAT( + src, !IsDependency(_A("Overload"), _A("TBase"))); + REQUIRE_THAT( + src, !IsDependency(_A("Overload"), _A("A"))); + REQUIRE_THAT( + src, !IsDependency(_A("Overload"), _A("B"))); + REQUIRE_THAT( + src, !IsDependency(_A("Overload"), _A("C"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00033/test_case.h b/tests/t00033/test_case.h index e5d6d658..f07ce69d 100644 --- a/tests/t00033/test_case.h +++ b/tests/t00033/test_case.h @@ -29,32 +29,32 @@ TEST_CASE("t00033", "[test-case][class]") REQUIRE(model->name() == "t00033_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); - REQUIRE_THAT(puml, IsClassTemplate("B", "T")); - REQUIRE_THAT(puml, IsClassTemplate("C", "T")); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClassTemplate("A", "T")); + REQUIRE_THAT(src, IsClassTemplate("B", "T")); + REQUIRE_THAT(src, IsClassTemplate("C", "T")); + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("A>>>"), _A("B>>"))); REQUIRE_THAT( - puml, IsDependency(_A("B>>"), _A("C"))); - REQUIRE_THAT(puml, IsDependency(_A("C"), _A("D"))); + src, IsDependency(_A("B>>"), _A("C"))); + REQUIRE_THAT(src, IsDependency(_A("C"), _A("D"))); - REQUIRE_THAT(puml, IsInstantiation(_A("C"), _A("C"))); + REQUIRE_THAT(src, IsInstantiation(_A("C"), _A("C"))); REQUIRE_THAT( - puml, IsInstantiation(_A("B"), _A("B>>"))); - REQUIRE_THAT(puml, + src, IsInstantiation(_A("B"), _A("B>>"))); + REQUIRE_THAT(src, IsInstantiation(_A("A"), _A("A>>>"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -72,8 +72,29 @@ TEST_CASE("t00033", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + 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("R"))); + + REQUIRE_THAT(src, + IsDependency(_A("A>>>"), + _A("B>>"))); + REQUIRE_THAT( + src, IsDependency(_A("B>>"), _A("C"))); + REQUIRE_THAT(src, IsDependency(_A("C"), _A("D"))); + + REQUIRE_THAT(src, IsInstantiation(_A("C"), _A("C"))); + REQUIRE_THAT( + src, IsInstantiation(_A("B"), _A("B>>"))); + 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/t00034/test_case.h b/tests/t00034/test_case.h index 84766a52..c6894e43 100644 --- a/tests/t00034/test_case.h +++ b/tests/t00034/test_case.h @@ -29,24 +29,24 @@ TEST_CASE("t00034", "[test-case][class]") REQUIRE(model->name() == "t00034_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("lift_void", "T")); - REQUIRE_THAT(puml, IsClassTemplate("drop_void", "T")); - REQUIRE_THAT(puml, IsClass(_A("Void"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClassTemplate("lift_void", "T")); + REQUIRE_THAT(src, IsClassTemplate("drop_void", "T")); + REQUIRE_THAT(src, IsClass(_A("Void"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("R"))); REQUIRE_THAT( - puml, IsInstantiation(_A("lift_void"), _A("lift_void"))); + src, IsInstantiation(_A("lift_void"), _A("lift_void"))); REQUIRE_THAT( - puml, IsInstantiation(_A("drop_void"), _A("drop_void"))); + src, IsInstantiation(_A("drop_void"), _A("drop_void"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -59,8 +59,21 @@ TEST_CASE("t00034", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("lift_void"))); + REQUIRE_THAT(src, IsClass(_A("drop_void"))); + REQUIRE_THAT(src, IsClass(_A("Void"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("R"))); + + REQUIRE_THAT( + src, IsInstantiation(_A("lift_void"), _A("lift_void"))); + REQUIRE_THAT( + src, IsInstantiation(_A("drop_void"), _A("drop_void"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00035/test_case.h b/tests/t00035/test_case.h index e280e3bf..59b9976b 100644 --- a/tests/t00035/test_case.h +++ b/tests/t00035/test_case.h @@ -29,24 +29,24 @@ TEST_CASE("t00035", "[test-case][class]") REQUIRE(model->name() == "t00035_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("Top"))); - REQUIRE_THAT(puml, IsClass(_A("Bottom"))); - REQUIRE_THAT(puml, IsClass(_A("Center"))); - REQUIRE_THAT(puml, IsClass(_A("Left"))); - REQUIRE_THAT(puml, IsClass(_A("Right"))); + REQUIRE_THAT(src, IsClass(_A("Top"))); + REQUIRE_THAT(src, IsClass(_A("Bottom"))); + REQUIRE_THAT(src, IsClass(_A("Center"))); + REQUIRE_THAT(src, IsClass(_A("Left"))); + REQUIRE_THAT(src, IsClass(_A("Right"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "up", _A("Top"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "left", _A("Left"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "right", _A("Right"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("Center"), "down", _A("Bottom"))); + REQUIRE_THAT(src, IsLayoutHint(_A("Center"), "up", _A("Top"))); + REQUIRE_THAT(src, IsLayoutHint(_A("Center"), "left", _A("Left"))); + REQUIRE_THAT(src, IsLayoutHint(_A("Center"), "right", _A("Right"))); + REQUIRE_THAT(src, IsLayoutHint(_A("Center"), "down", _A("Bottom"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -62,8 +62,16 @@ TEST_CASE("t00035", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("Top"))); + REQUIRE_THAT(src, IsClass(_A("Bottom"))); + REQUIRE_THAT(src, IsClass(_A("Center"))); + REQUIRE_THAT(src, IsClass(_A("Left"))); + REQUIRE_THAT(src, IsClass(_A("Right"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00036/test_case.h b/tests/t00036/test_case.h index 8018919a..80643126 100644 --- a/tests/t00036/test_case.h +++ b/tests/t00036/test_case.h @@ -30,26 +30,26 @@ TEST_CASE("t00036", "[test-case][class]") REQUIRE(model->name() == "t00036_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); - REQUIRE_THAT(puml, IsClassTemplate("A", "int")); - REQUIRE_THAT(puml, IsEnum(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, !IsClass(_A("DImpl"))); - REQUIRE_THAT(puml, IsPackage("ns111")); - REQUIRE_THAT(puml, IsPackage("ns22")); - REQUIRE_THAT(puml, !IsPackage("ns3")); - REQUIRE_THAT(puml, !IsPackage("ns33")); + REQUIRE_THAT(src, IsClassTemplate("A", "T")); + REQUIRE_THAT(src, IsClassTemplate("A", "int")); + REQUIRE_THAT(src, IsEnum(_A("E"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, !IsClass(_A("DImpl"))); + REQUIRE_THAT(src, IsPackage("ns111")); + REQUIRE_THAT(src, IsPackage("ns22")); + REQUIRE_THAT(src, !IsPackage("ns3")); + REQUIRE_THAT(src, !IsPackage("ns33")); - REQUIRE_THAT(puml, IsAggregation(_A("B"), _A("A"), "+a_int")); + REQUIRE_THAT(src, IsAggregation(_A("B"), _A("A"), "+a_int")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -69,8 +69,22 @@ TEST_CASE("t00036", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsEnum; + + REQUIRE_THAT(src, IsClass(_A("ns1::ns11::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns11::A"))); + REQUIRE_THAT(src, IsEnum(_A("ns1::E"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns11::ns111::B"))); + REQUIRE_THAT(src, IsClass(_A("ns2::ns22::C"))); + REQUIRE_THAT(src, !IsClass(_A("DImpl"))); + + REQUIRE_THAT(src, + IsAggregation( + _A("ns1::ns11::ns111::B"), _A("ns1::ns11::A"), "+a_int")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00037/test_case.h b/tests/t00037/test_case.h index c622a63c..6742a1d1 100644 --- a/tests/t00037/test_case.h +++ b/tests/t00037/test_case.h @@ -30,22 +30,21 @@ TEST_CASE("t00037", "[test-case][class]") REQUIRE(model->name() == "t00037_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("ST"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("ST::(units)"))); - REQUIRE_THAT(puml, IsClass(_A("ST::(dimensions)"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClass(_A("ST"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("ST::(units)"))); + REQUIRE_THAT(src, IsClass(_A("ST::(dimensions)"))); + REQUIRE_THAT(src, IsAggregation(_A("ST"), _A("ST::(dimensions)"), "+dimensions")); - REQUIRE_THAT( - puml, IsAggregation(_A("ST"), _A("ST::(units)"), "-units")); + REQUIRE_THAT(src, IsAggregation(_A("ST"), _A("ST::(units)"), "-units")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -61,8 +60,18 @@ TEST_CASE("t00037", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("ST"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("ST::(units)"))); + REQUIRE_THAT(src, IsClass(_A("ST::(dimensions)"))); + REQUIRE_THAT(src, + IsAggregation(_A("ST"), _A("ST::(dimensions)"), "+dimensions")); + REQUIRE_THAT(src, IsAggregation(_A("ST"), _A("ST::(units)"), "-units")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00038/test_case.h b/tests/t00038/test_case.h index cae0a9a2..b9d1e47c 100644 --- a/tests/t00038/test_case.h +++ b/tests/t00038/test_case.h @@ -30,73 +30,73 @@ TEST_CASE("t00038", "[test-case][class]") REQUIRE(model->name() == "t00038_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("thirdparty::ns1::E"))); - REQUIRE_THAT(puml, IsClass(_A("key_t"))); - REQUIRE_THAT(puml, IsClassTemplate("map", "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, IsClass(_A("thirdparty::ns1::E"))); + REQUIRE_THAT(src, IsClass(_A("key_t"))); + REQUIRE_THAT(src, IsClassTemplate("map", "T")); + REQUIRE_THAT(src, IsClassTemplate("map", "std::integral_constant")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("map", "std::vector>")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("map", "std::map>>")); - REQUIRE_THAT(puml, IsEnum(_A("property_t"))); + REQUIRE_THAT(src, IsEnum(_A("property_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("map"), _A("map>>>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("map>"), _A("property_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("map<" "std::vector>>"), _A("property_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency( _A("map>>>"), _A("property_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency( _A("map>>>"), _A("key_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency( _A("map>"), _A("thirdparty::ns1::color_t"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsBaseClass(_A("thirdparty::ns1::E"), _A("map>"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -110,8 +110,71 @@ TEST_CASE("t00038", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + 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("thirdparty::ns1::E"))); + REQUIRE_THAT(src, IsClass(_A("key_t"))); + REQUIRE_THAT(src, IsClass(_A("map"))); + REQUIRE_THAT(src, + IsClass(_A("map>"))); + REQUIRE_THAT(src, + IsClass(_A( + "map>>"))); + REQUIRE_THAT(src, + IsClass(_A("map>>>"))); + + REQUIRE_THAT(src, IsEnum(_A("property_t"))); + + REQUIRE_THAT(src, + IsInstantiation(_A("map"), + _A("map>>>"))); + + REQUIRE_THAT(src, + IsDependency(_A("map>"), + _A("property_t"))); + + REQUIRE_THAT(src, + IsDependency(_A("map<" + "std::vector>>"), + _A("property_t"))); + + REQUIRE_THAT(src, + IsDependency( + _A("map>>>"), + _A("property_t"))); + + REQUIRE_THAT(src, + IsDependency( + _A("map>>>"), + _A("key_t"))); + + REQUIRE_THAT(src, + IsDependency( + _A("map>"), + _A("thirdparty::ns1::color_t"))); + + REQUIRE_THAT(src, + IsBaseClass(_A("thirdparty::ns1::E"), + _A("map>"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00039/test_case.h b/tests/t00039/test_case.h index 358af15c..d5edad61 100644 --- a/tests/t00039/test_case.h +++ b/tests/t00039/test_case.h @@ -29,41 +29,41 @@ TEST_CASE("t00039", "[test-case][class]") REQUIRE(model->name() == "t00039_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("AA"))); - REQUIRE_THAT(puml, IsClass(_A("AAA"))); - REQUIRE_THAT(puml, IsClass(_A("ns2::AAAA"))); - REQUIRE_THAT(puml, IsBaseClass(_A("A"), _A("AA"))); - REQUIRE_THAT(puml, IsBaseClass(_A("AA"), _A("AAA"))); - REQUIRE_THAT(puml, IsBaseClass(_A("AAA"), _A("ns2::AAAA"))); - REQUIRE_THAT(puml, !IsClass(_A("detail::AA"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AA"))); + REQUIRE_THAT(src, IsClass(_A("AAA"))); + REQUIRE_THAT(src, IsClass(_A("ns2::AAAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("AA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AA"), _A("AAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AAA"), _A("ns2::AAAA"))); + REQUIRE_THAT(src, !IsClass(_A("detail::AA"))); - REQUIRE_THAT(puml, !IsClass(_A("B"))); - REQUIRE_THAT(puml, !IsClass(_A("ns1::BB"))); + REQUIRE_THAT(src, !IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("ns1::BB"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsBaseClass(_A("C"), _A("CD"))); - REQUIRE_THAT(puml, IsBaseClass(_A("D"), _A("CD"))); - REQUIRE_THAT(puml, IsBaseClass(_A("D"), _A("DE"))); - REQUIRE_THAT(puml, IsBaseClass(_A("E"), _A("DE"))); - REQUIRE_THAT(puml, IsBaseClass(_A("C"), _A("CDE"))); - REQUIRE_THAT(puml, IsBaseClass(_A("D"), _A("CDE"))); - REQUIRE_THAT(puml, IsBaseClass(_A("E"), _A("CDE"))); + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("E"))); + REQUIRE_THAT(src, IsBaseClass(_A("C"), _A("CD"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("CD"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("DE"))); + REQUIRE_THAT(src, IsBaseClass(_A("E"), _A("DE"))); + REQUIRE_THAT(src, IsBaseClass(_A("C"), _A("CDE"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("CDE"))); + REQUIRE_THAT(src, IsBaseClass(_A("E"), _A("CDE"))); - REQUIRE_THAT(puml, IsClassTemplate("ns3::F", "T")); - REQUIRE_THAT(puml, IsClassTemplate("ns3::FF", "T,M")); - REQUIRE_THAT(puml, IsClassTemplate("ns3::FE", "T,M")); - REQUIRE_THAT(puml, IsClassTemplate("ns3::FFF", "T,M,N")); + REQUIRE_THAT(src, IsClassTemplate("ns3::F", "T")); + REQUIRE_THAT(src, IsClassTemplate("ns3::FF", "T,M")); + REQUIRE_THAT(src, IsClassTemplate("ns3::FE", "T,M")); + REQUIRE_THAT(src, IsClassTemplate("ns3::FFF", "T,M,N")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -86,8 +86,38 @@ TEST_CASE("t00039", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AA"))); + REQUIRE_THAT(src, IsClass(_A("AAA"))); + REQUIRE_THAT(src, IsClass(_A("ns2::AAAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("AA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AA"), _A("AAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AAA"), _A("ns2::AAAA"))); + REQUIRE_THAT(src, !IsClass(_A("detail::AA"))); + + REQUIRE_THAT(src, !IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("ns1::BB"))); + + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("E"))); + REQUIRE_THAT(src, IsBaseClass(_A("C"), _A("CD"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("CD"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("DE"))); + REQUIRE_THAT(src, IsBaseClass(_A("E"), _A("DE"))); + REQUIRE_THAT(src, IsBaseClass(_A("C"), _A("CDE"))); + REQUIRE_THAT(src, IsBaseClass(_A("D"), _A("CDE"))); + REQUIRE_THAT(src, IsBaseClass(_A("E"), _A("CDE"))); + + REQUIRE_THAT(src, IsClass(_A("ns3::F"))); + REQUIRE_THAT(src, IsClass(_A("ns3::FF"))); + REQUIRE_THAT(src, IsClass(_A("ns3::FE"))); + REQUIRE_THAT(src, IsClass(_A("ns3::FFF"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } diff --git a/tests/t00040/test_case.h b/tests/t00040/test_case.h index c2e48012..8305da37 100644 --- a/tests/t00040/test_case.h +++ b/tests/t00040/test_case.h @@ -29,23 +29,23 @@ TEST_CASE("t00040", "[test-case][class]") REQUIRE(model->name() == "t00040_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("AA"))); - REQUIRE_THAT(puml, IsClass(_A("AAA"))); - REQUIRE_THAT(puml, IsBaseClass(_A("A"), _A("AA"))); - REQUIRE_THAT(puml, IsBaseClass(_A("AA"), _A("AAA"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AA"))); + REQUIRE_THAT(src, IsClass(_A("AAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("AA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AA"), _A("AAA"))); - REQUIRE_THAT(puml, !IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("B"))); - REQUIRE_THAT(puml, !IsDependency(_A("R"), _A("A"))); + REQUIRE_THAT(src, !IsDependency(_A("R"), _A("A"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -59,8 +59,20 @@ TEST_CASE("t00040", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AA"))); + REQUIRE_THAT(src, IsClass(_A("AAA"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("AA"))); + REQUIRE_THAT(src, IsBaseClass(_A("AA"), _A("AAA"))); + + REQUIRE_THAT(src, !IsClass(_A("B"))); + + REQUIRE_THAT(src, !IsDependency(_A("R"), _A("A"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00041/test_case.h b/tests/t00041/test_case.h index f84812d1..5d7f19cd 100644 --- a/tests/t00041/test_case.h +++ b/tests/t00041/test_case.h @@ -30,42 +30,42 @@ TEST_CASE("t00041", "[test-case][class]") REQUIRE(model->name() == "t00041_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !IsClass(_A("A"))); - REQUIRE_THAT(puml, !IsClass(_A("AA"))); - REQUIRE_THAT(puml, !IsClass(_A("AAA"))); + REQUIRE_THAT(src, !IsClass(_A("A"))); + REQUIRE_THAT(src, !IsClass(_A("AA"))); + REQUIRE_THAT(src, !IsClass(_A("AAA"))); - REQUIRE_THAT(puml, !IsClass(_A("B"))); + REQUIRE_THAT(src, !IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); - REQUIRE_THAT(puml, IsClass(_A("RR"))); - REQUIRE_THAT(puml, IsClass(_A("RRR"))); - REQUIRE_THAT(puml, !IsClass(_A("detail::G"))); - REQUIRE_THAT(puml, !IsClass(_A("H"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("E"))); + REQUIRE_THAT(src, IsClass(_A("F"))); + REQUIRE_THAT(src, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("RR"))); + REQUIRE_THAT(src, IsClass(_A("RRR"))); + REQUIRE_THAT(src, !IsClass(_A("detail::G"))); + REQUIRE_THAT(src, !IsClass(_A("H"))); - REQUIRE_THAT(puml, IsBaseClass(_A("R"), _A("RR"))); - REQUIRE_THAT(puml, IsBaseClass(_A("RR"), _A("RRR"))); + REQUIRE_THAT(src, IsBaseClass(_A("R"), _A("RR"))); + REQUIRE_THAT(src, IsBaseClass(_A("RR"), _A("RRR"))); - REQUIRE_THAT(puml, IsAssociation(_A("D"), _A("RR"), "+rr")); - REQUIRE_THAT(puml, IsAssociation(_A("RR"), _A("E"), "+e")); - REQUIRE_THAT(puml, IsAssociation(_A("RR"), _A("F"), "+f")); - REQUIRE_THAT(puml, !IsDependency(_A("RR"), _A("H"))); + REQUIRE_THAT(src, IsAssociation(_A("D"), _A("RR"), "+rr")); + REQUIRE_THAT(src, IsAssociation(_A("RR"), _A("E"), "+e")); + REQUIRE_THAT(src, IsAssociation(_A("RR"), _A("F"), "+f")); + REQUIRE_THAT(src, !IsDependency(_A("RR"), _A("H"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::N"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::NN"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::NM"))); - REQUIRE_THAT(puml, IsBaseClass(_A("ns1::N"), _A("ns1::NN"))); - REQUIRE_THAT(puml, IsBaseClass(_A("ns1::N"), _A("ns1::NM"))); + REQUIRE_THAT(src, IsClass(_A("ns1::N"))); + REQUIRE_THAT(src, IsClass(_A("ns1::NN"))); + REQUIRE_THAT(src, IsClass(_A("ns1::NM"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::N"), _A("ns1::NN"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::N"), _A("ns1::NM"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -85,8 +85,39 @@ TEST_CASE("t00041", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, !IsClass(_A("A"))); + REQUIRE_THAT(src, !IsClass(_A("AA"))); + REQUIRE_THAT(src, !IsClass(_A("AAA"))); + + REQUIRE_THAT(src, !IsClass(_A("B"))); + + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("E"))); + REQUIRE_THAT(src, IsClass(_A("F"))); + REQUIRE_THAT(src, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("RR"))); + REQUIRE_THAT(src, IsClass(_A("RRR"))); + REQUIRE_THAT(src, !IsClass(_A("detail::G"))); + REQUIRE_THAT(src, !IsClass(_A("H"))); + + REQUIRE_THAT(src, IsBaseClass(_A("R"), _A("RR"))); + REQUIRE_THAT(src, IsBaseClass(_A("RR"), _A("RRR"))); + + REQUIRE_THAT(src, IsAssociation(_A("D"), _A("RR"), "+rr")); + REQUIRE_THAT(src, IsAssociation(_A("RR"), _A("E"), "+e")); + REQUIRE_THAT(src, IsAssociation(_A("RR"), _A("F"), "+f")); + REQUIRE_THAT(src, !IsDependency(_A("RR"), _A("H"))); + + REQUIRE_THAT(src, IsClass(_A("ns1::N"))); + REQUIRE_THAT(src, IsClass(_A("ns1::NN"))); + REQUIRE_THAT(src, IsClass(_A("ns1::NM"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::N"), _A("ns1::NN"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::N"), _A("ns1::NM"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00042/test_case.h b/tests/t00042/test_case.h index 3de29443..008cb13b 100644 --- a/tests/t00042/test_case.h +++ b/tests/t00042/test_case.h @@ -30,17 +30,17 @@ TEST_CASE("t00042", "[test-case][class]") REQUIRE(model->name() == "t00042_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); - REQUIRE_THAT(puml, IsClassTemplate("B", "T,K")); - REQUIRE_THAT(puml, !IsClassTemplate("C", "T")); + REQUIRE_THAT(src, IsClassTemplate("A", "T")); + REQUIRE_THAT(src, IsClassTemplate("B", "T,K")); + REQUIRE_THAT(src, !IsClassTemplate("C", "T")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -53,8 +53,14 @@ TEST_CASE("t00042", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + 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/t00043/test_case.h b/tests/t00043/test_case.h index b2fadaa2..5355d787 100644 --- a/tests/t00043/test_case.h +++ b/tests/t00043/test_case.h @@ -30,40 +30,40 @@ TEST_CASE("t00043", "[test-case][class]") REQUIRE(model->name() == "t00043_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check dependants filter - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("BB"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, !IsClass(_A("F"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("BB"))); + REQUIRE_THAT(src, IsClass(_A("D"))); + REQUIRE_THAT(src, IsClass(_A("E"))); + REQUIRE_THAT(src, !IsClass(_A("F"))); - REQUIRE_THAT(puml, IsDependency(_A("B"), _A("A"))); - REQUIRE_THAT(puml, IsDependency(_A("BB"), _A("A"))); - REQUIRE_THAT(puml, IsDependency(_A("C"), _A("B"))); - REQUIRE_THAT(puml, IsDependency(_A("D"), _A("C"))); - REQUIRE_THAT(puml, IsDependency(_A("E"), _A("D"))); + REQUIRE_THAT(src, IsDependency(_A("B"), _A("A"))); + REQUIRE_THAT(src, IsDependency(_A("BB"), _A("A"))); + REQUIRE_THAT(src, IsDependency(_A("C"), _A("B"))); + REQUIRE_THAT(src, IsDependency(_A("D"), _A("C"))); + REQUIRE_THAT(src, IsDependency(_A("E"), _A("D"))); // Check dependencies filter - REQUIRE_THAT(puml, IsClass(_A("G"))); - REQUIRE_THAT(puml, IsClass(_A("GG"))); - REQUIRE_THAT(puml, IsClass(_A("H"))); - REQUIRE_THAT(puml, !IsClass(_A("HH"))); - REQUIRE_THAT(puml, IsClass(_A("I"))); - REQUIRE_THAT(puml, IsClass(_A("J"))); + REQUIRE_THAT(src, IsClass(_A("G"))); + REQUIRE_THAT(src, IsClass(_A("GG"))); + REQUIRE_THAT(src, IsClass(_A("H"))); + REQUIRE_THAT(src, !IsClass(_A("HH"))); + REQUIRE_THAT(src, IsClass(_A("I"))); + REQUIRE_THAT(src, IsClass(_A("J"))); - REQUIRE_THAT(puml, IsDependency(_A("H"), _A("G"))); - REQUIRE_THAT(puml, IsDependency(_A("H"), _A("GG"))); - REQUIRE_THAT(puml, IsDependency(_A("I"), _A("H"))); - REQUIRE_THAT(puml, IsDependency(_A("J"), _A("I"))); + REQUIRE_THAT(src, IsDependency(_A("H"), _A("G"))); + REQUIRE_THAT(src, IsDependency(_A("H"), _A("GG"))); + REQUIRE_THAT(src, IsDependency(_A("I"), _A("H"))); + REQUIRE_THAT(src, IsDependency(_A("J"), _A("I"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -87,8 +87,46 @@ TEST_CASE("t00043", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + // Check dependants filter + REQUIRE_THAT(src, IsClass(_A("dependants::A"))); + REQUIRE_THAT(src, IsClass(_A("dependants::B"))); + REQUIRE_THAT(src, IsClass(_A("dependants::BB"))); + REQUIRE_THAT(src, IsClass(_A("dependants::D"))); + REQUIRE_THAT(src, IsClass(_A("dependants::E"))); + REQUIRE_THAT(src, !IsClass(_A("dependants::F"))); + + REQUIRE_THAT( + src, IsDependency(_A("dependants::B"), _A("dependants::A"))); + REQUIRE_THAT( + src, IsDependency(_A("dependants::BB"), _A("dependants::A"))); + REQUIRE_THAT( + src, IsDependency(_A("dependants::C"), _A("dependants::B"))); + REQUIRE_THAT( + src, IsDependency(_A("dependants::D"), _A("dependants::C"))); + REQUIRE_THAT( + src, IsDependency(_A("dependants::E"), _A("dependants::D"))); + + // Check dependencies filter + REQUIRE_THAT(src, IsClass(_A("dependencies::G"))); + REQUIRE_THAT(src, IsClass(_A("dependencies::GG"))); + REQUIRE_THAT(src, IsClass(_A("dependencies::H"))); + REQUIRE_THAT(src, !IsClass(_A("dependencies::HH"))); + REQUIRE_THAT(src, IsClass(_A("dependencies::I"))); + REQUIRE_THAT(src, IsClass(_A("dependencies::J"))); + + REQUIRE_THAT( + src, IsDependency(_A("dependencies::H"), _A("dependencies::G"))); + REQUIRE_THAT( + src, IsDependency(_A("dependencies::H"), _A("dependencies::GG"))); + REQUIRE_THAT( + src, IsDependency(_A("dependencies::I"), _A("dependencies::H"))); + REQUIRE_THAT( + src, IsDependency(_A("dependencies::J"), _A("dependencies::I"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00044/test_case.h b/tests/t00044/test_case.h index 831a0d34..e20a1e6d 100644 --- a/tests/t00044/test_case.h +++ b/tests/t00044/test_case.h @@ -30,41 +30,41 @@ TEST_CASE("t00044", "[test-case][class]") REQUIRE(model->name() == "t00044_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(src, !Contains("type-parameter-")); - REQUIRE_THAT(puml, IsClassTemplate("sink", "T")); - REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A")); + REQUIRE_THAT(src, IsClassTemplate("sink", "T")); + REQUIRE_THAT(src, IsClassTemplate("signal_handler", "T,A")); - REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "Ret(Args...),A")); - REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "void(int),bool")); + REQUIRE_THAT(src, IsClassTemplate("signal_handler", "Ret(Args...),A")); + REQUIRE_THAT(src, IsClassTemplate("signal_handler", "void(int),bool")); REQUIRE_THAT( - puml, IsClassTemplate("sink", "signal_handler")); + src, IsClassTemplate("sink", "signal_handler")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("sink"), _A("sink>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("sink>"), _A("sink>"))); - REQUIRE_THAT(puml, IsClassTemplate("signal_handler", "T,A")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("signal_handler", "T,A")); + REQUIRE_THAT(src, IsInstantiation(_A("signal_handler"), _A("signal_handler"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("signal_handler"), _A("signal_handler"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -82,8 +82,37 @@ TEST_CASE("t00044", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, !Contains("type-parameter-")); + + REQUIRE_THAT(src, IsClass(_A("sink"))); + REQUIRE_THAT(src, IsClass(_A("signal_handler"))); + + REQUIRE_THAT(src, IsClass(_A("signal_handler"))); + REQUIRE_THAT(src, IsClass(_A("signal_handler"))); + + REQUIRE_THAT(src, IsClass(_A("sink>"))); + + REQUIRE_THAT(src, + IsInstantiation( + _A("sink"), _A("sink>"))); + + REQUIRE_THAT(src, + IsInstantiation(_A("sink>"), + _A("sink>"))); + + REQUIRE_THAT(src, IsClass(_A("signal_handler"))); + REQUIRE_THAT(src, + IsInstantiation(_A("signal_handler"), + _A("signal_handler"))); + + REQUIRE_THAT(src, + IsInstantiation(_A("signal_handler"), + _A("signal_handler"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00045/test_case.h b/tests/t00045/test_case.h index 35965dd2..e91de811 100644 --- a/tests/t00045/test_case.h +++ b/tests/t00045/test_case.h @@ -29,44 +29,43 @@ TEST_CASE("t00045", "[test-case][class]") REQUIRE(model->name() == "t00045_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::A"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::A"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::B"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::C"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::D"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::E"))); - REQUIRE_THAT(puml, IsClass(_A("ns1::ns2::R"))); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::B"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::C"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::D"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::E"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::R"))); - REQUIRE_THAT(puml, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::B"))); - REQUIRE_THAT(puml, IsBaseClass(_A("ns1::A"), _A("ns1::ns2::C"))); - REQUIRE_THAT(puml, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::D"))); - REQUIRE_THAT(puml, IsBaseClass(_A("A"), _A("ns1::ns2::E"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::B"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::A"), _A("ns1::ns2::C"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::D"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("ns1::ns2::E"))); REQUIRE_THAT( - puml, IsAssociation(_A("ns1::ns2::R"), _A("ns1::ns2::A"), "+a")); + src, IsAssociation(_A("ns1::ns2::R"), _A("ns1::ns2::A"), "+a")); REQUIRE_THAT( - puml, IsAssociation(_A("ns1::ns2::R"), _A("ns1::A"), "+ns1_a")); - REQUIRE_THAT(puml, + src, IsAssociation(_A("ns1::ns2::R"), _A("ns1::A"), "+ns1_a")); + REQUIRE_THAT(src, IsAssociation(_A("ns1::ns2::R"), _A("ns1::ns2::A"), "+ns1_ns2_a")); - REQUIRE_THAT( - puml, IsAssociation(_A("ns1::ns2::R"), _A("A"), "+root_a")); + REQUIRE_THAT(src, IsAssociation(_A("ns1::ns2::R"), _A("A"), "+root_a")); - REQUIRE_THAT(puml, IsDependency(_A("ns1::ns2::R"), _A("AA"))); + REQUIRE_THAT(src, IsDependency(_A("ns1::ns2::R"), _A("AA"))); - REQUIRE_THAT(puml, IsFriend(_A("ns1::ns2::R"), _A("AAA"))); + REQUIRE_THAT(src, IsFriend(_A("ns1::ns2::R"), _A("AAA"))); REQUIRE_THAT( - puml, !IsFriend(_A("ns1::ns2::R"), _A("ns1::ns2::AAA"))); + src, !IsFriend(_A("ns1::ns2::R"), _A("ns1::ns2::AAA"))); // TODO: // REQUIRE_THAT(puml, IsFriend(_A("ns1::ns2::R"), // _A("AAAA"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -87,8 +86,38 @@ TEST_CASE("t00045", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::A"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::B"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::C"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::D"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::E"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::R"))); + + REQUIRE_THAT(src, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::B"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::A"), _A("ns1::ns2::C"))); + REQUIRE_THAT(src, IsBaseClass(_A("ns1::ns2::A"), _A("ns1::ns2::D"))); + REQUIRE_THAT(src, IsBaseClass(_A("A"), _A("ns1::ns2::E"))); + + REQUIRE_THAT( + src, IsAssociation(_A("ns1::ns2::R"), _A("ns1::ns2::A"), "+a")); + REQUIRE_THAT( + src, IsAssociation(_A("ns1::ns2::R"), _A("ns1::A"), "+ns1_a")); + REQUIRE_THAT(src, + IsAssociation(_A("ns1::ns2::R"), _A("ns1::ns2::A"), "+ns1_ns2_a")); + REQUIRE_THAT(src, IsAssociation(_A("ns1::ns2::R"), _A("A"), "+root_a")); + + REQUIRE_THAT(src, IsDependency(_A("ns1::ns2::R"), _A("AA"))); + + REQUIRE_THAT(src, IsFriend(_A("ns1::ns2::R"), _A("AAA"))); + REQUIRE_THAT( + src, !IsFriend(_A("ns1::ns2::R"), _A("ns1::ns2::AAA"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00046/test_case.h b/tests/t00046/test_case.h index d79a5ee4..11272ee2 100644 --- a/tests/t00046/test_case.h +++ b/tests/t00046/test_case.h @@ -29,21 +29,21 @@ TEST_CASE("t00046", "[test-case][class]") REQUIRE(model->name() == "t00046_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + 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, IsClass(_A("E"))); + REQUIRE_THAT(src, IsClass(_A("R"))); - REQUIRE_THAT(puml, IsField("i", "std::vector")); + REQUIRE_THAT(src, IsField("i", "std::vector")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -58,8 +58,21 @@ TEST_CASE("t00046", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsField; + + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AA"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::B"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::C"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::D"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::E"))); + REQUIRE_THAT(src, IsClass(_A("ns1::ns2::R"))); + + REQUIRE_THAT(src, IsField("i", "std::vector")); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00047/test_case.h b/tests/t00047/test_case.h index 3398fe1e..69d341b8 100644 --- a/tests/t00047/test_case.h +++ b/tests/t00047/test_case.h @@ -29,21 +29,21 @@ TEST_CASE("t00047", "[test-case][class]") REQUIRE(model->name() == "t00047_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if class templates exist - REQUIRE_THAT(puml, IsClassTemplate("conditional_t", "Ts...")); - REQUIRE_THAT(puml, IsClassTemplate("conditional_t", "Else")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("conditional_t", "Ts...")); + REQUIRE_THAT(src, IsClassTemplate("conditional_t", "Else")); + REQUIRE_THAT(src, IsClassTemplate("conditional_t", "std::true_type,Result,Tail...")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("conditional_t", "std::false_type,Result,Tail...")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -58,8 +58,18 @@ TEST_CASE("t00047", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + + // Check if class templates exist + REQUIRE_THAT(src, IsClass(_A("conditional_t"))); + REQUIRE_THAT(src, IsClass(_A("conditional_t"))); + REQUIRE_THAT( + src, IsClass(_A("conditional_t"))); + REQUIRE_THAT( + src, IsClass(_A("conditional_t"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00048/test_case.h b/tests/t00048/test_case.h index 7c19e9e5..3bea43d1 100644 --- a/tests/t00048/test_case.h +++ b/tests/t00048/test_case.h @@ -29,27 +29,27 @@ TEST_CASE("t00048", "[test-case][class]") REQUIRE(model->name() == "t00048_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsAbstractClass(_A("Base"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); + REQUIRE_THAT(src, IsAbstractClass(_A("Base"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); // Check if class templates exist - REQUIRE_THAT(puml, IsAbstractClassTemplate("BaseTemplate", "T")); - REQUIRE_THAT(puml, IsClassTemplate("ATemplate", "T")); - REQUIRE_THAT(puml, IsClassTemplate("BTemplate", "T")); + REQUIRE_THAT(src, IsAbstractClassTemplate("BaseTemplate", "T")); + REQUIRE_THAT(src, IsClassTemplate("ATemplate", "T")); + REQUIRE_THAT(src, IsClassTemplate("BTemplate", "T")); // Check if all inheritance relationships exist - REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("A"))); - REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("B"))); + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("A"))); + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("B"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -66,8 +66,25 @@ TEST_CASE("t00048", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsAbstractClass; + + // Check if all classes exist + REQUIRE_THAT(src, IsAbstractClass(_A("Base"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + + // Check if class templates exist + REQUIRE_THAT(src, IsAbstractClass(_A("BaseTemplate"))); + REQUIRE_THAT(src, IsClass(_A("ATemplate"))); + REQUIRE_THAT(src, IsClass(_A("BTemplate"))); + + // Check if all inheritance relationships exist + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("A"))); + REQUIRE_THAT(src, IsBaseClass(_A("Base"), _A("B"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00049/test_case.h b/tests/t00049/test_case.h index 1fb001eb..bf2f6474 100644 --- a/tests/t00049/test_case.h +++ b/tests/t00049/test_case.h @@ -29,35 +29,35 @@ TEST_CASE("t00049", "[test-case][class]") REQUIRE(model->name() == "t00049_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("R"))); // Check if class templates exist - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); + REQUIRE_THAT(src, IsClassTemplate("A", "T")); // Check if all methods exist - REQUIRE_THAT(puml, (IsMethod("get_int_map", "A"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("get_int_map", "A"))); + REQUIRE_THAT(src, (IsMethod("set_int_map", "void", "A && int_map"))); // Check if all fields exist - REQUIRE_THAT(puml, (IsField("a_string", "A"))); + REQUIRE_THAT(src, (IsField("a_string", "A"))); REQUIRE_THAT( - puml, (IsField("a_vector_string", "A"))); - REQUIRE_THAT(puml, (IsField("a_int_map", "A"))); + src, (IsField("a_vector_string", "A"))); + REQUIRE_THAT(src, (IsField("a_int_map", "A"))); // Check if all relationships exist - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, 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"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -71,8 +71,34 @@ TEST_CASE("t00049", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + mermaid::AliasMatcher _A(src); + using mermaid::IsField; + using mermaid::IsMethod; + + // Check if all classes exist + REQUIRE_THAT(src, IsClass(_A("R"))); + + // Check if class templates exist + REQUIRE_THAT(src, IsClass(_A("A"))); + + // Check if all methods exist + REQUIRE_THAT(src, (IsMethod("get_int_map", "A"))); + REQUIRE_THAT(src, + (IsMethod("set_int_map", "void", "A && int_map"))); + + // Check if all fields exist + REQUIRE_THAT(src, (IsField("a_string", "A"))); + REQUIRE_THAT( + src, (IsField("a_vector_string", "A"))); + REQUIRE_THAT(src, (IsField("a_int_map", "A"))); + + // Check if all relationships exist + 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/t00050/test_case.h b/tests/t00050/test_case.h index 5e5d5bf6..72c815c8 100644 --- a/tests/t00050/test_case.h +++ b/tests/t00050/test_case.h @@ -29,32 +29,32 @@ TEST_CASE("t00050", "[test-case][class]") REQUIRE(model->name() == "t00050_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("utils::D"))); - REQUIRE_THAT(puml, IsEnum(_A("E"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("B"))); + REQUIRE_THAT(src, IsClass(_A("C"))); + REQUIRE_THAT(src, IsClass(_A("utils::D"))); + REQUIRE_THAT(src, IsEnum(_A("E"))); - REQUIRE_THAT(puml, HasNote(_A("A"), "left")); - REQUIRE_THAT(puml, HasNote(_A("A"), "right")); - REQUIRE_THAT(puml, HasNote(_A("B"), "top")); - REQUIRE_THAT(puml, HasNote(_A("C"), "top")); - REQUIRE_THAT(puml, HasNote(_A("utils::D"), "top")); - REQUIRE_THAT(puml, !HasNote(_A("E"), "bottom")); - REQUIRE_THAT(puml, !HasNote(_A("NoComment"), "top")); - REQUIRE_THAT(puml, HasNote(_A("F"), "top")); - REQUIRE_THAT(puml, HasNote(_A("G"), "top")); - REQUIRE_THAT(puml, HasNote(_A("G"), "bottom")); - REQUIRE_THAT(puml, HasNote(_A("G"), "right")); + REQUIRE_THAT(src, HasNote(_A("A"), "left")); + REQUIRE_THAT(src, HasNote(_A("A"), "right")); + REQUIRE_THAT(src, HasNote(_A("B"), "top")); + REQUIRE_THAT(src, HasNote(_A("C"), "top")); + REQUIRE_THAT(src, HasNote(_A("utils::D"), "top")); + REQUIRE_THAT(src, !HasNote(_A("E"), "bottom")); + REQUIRE_THAT(src, !HasNote(_A("NoComment"), "top")); + REQUIRE_THAT(src, HasNote(_A("F"), "top")); + REQUIRE_THAT(src, HasNote(_A("G"), "top")); + REQUIRE_THAT(src, HasNote(_A("G"), "bottom")); + REQUIRE_THAT(src, HasNote(_A("G"), "right")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -70,8 +70,18 @@ TEST_CASE("t00050", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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("C"))); + REQUIRE_THAT(src, IsClass(_A("utils::D"))); + REQUIRE_THAT(src, IsEnum(_A("E"))); + + save_mermaid(config.output_directory(), diagram->name + ".mmd", src); } } \ No newline at end of file diff --git a/tests/t00051/test_case.h b/tests/t00051/test_case.h index dece426e..ea66c8e0 100644 --- a/tests/t00051/test_case.h +++ b/tests/t00051/test_case.h @@ -29,51 +29,51 @@ TEST_CASE("t00051", "[test-case][class]") REQUIRE(model->name() == "t00051_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsInnerClass(_A("A"), _A("A::custom_thread1"))); - REQUIRE_THAT(puml, IsInnerClass(_A("A"), _A("A::custom_thread2"))); + 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(puml, + REQUIRE_THAT(src, (IsMethod("custom_thread1", "void", "Function && f, Args &&... args"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("thread", "void", "(lambda at ../../tests/t00051/t00051.cc:59:27) &&"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("start_thread3", "B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at " "../../tests/t00051/t00051.cc:43:27)>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("get_function", "(lambda at ../../tests/t00051/t00051.cc:48:16)"))); - REQUIRE_THAT(puml, IsClassTemplate("B", "F,FF=F")); - REQUIRE_THAT(puml, (IsMethod("f", "void"))); - REQUIRE_THAT(puml, (IsMethod("ff", "void"))); + REQUIRE_THAT(src, IsClassTemplate("B", "F,FF=F")); + REQUIRE_THAT(src, (IsMethod("f", "void"))); + REQUIRE_THAT(src, (IsMethod("ff", "void"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("B", "(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at " "../../tests/t00051/t00051.cc:43:27)")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda " "at ../../tests/t00051/t00051.cc:43:27)>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("A"), _A("B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda " "at ../../tests/t00051/t00051.cc:43:27)>"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -87,8 +87,50 @@ TEST_CASE("t00051", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 ../../tests/t00051/t00051.cc:59:27) &&"))); + REQUIRE_THAT(src, + (IsMethod("start_thread3", + "B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda at " + "../../tests/t00051/t00051.cc:43:27)>"))); + REQUIRE_THAT(src, + (IsMethod("get_function", + "(lambda at ../../tests/t00051/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 ../../tests/t00051/t00051.cc:43:18),(lambda at " + "../../tests/t00051/t00051.cc:43:27)>"))); + + REQUIRE_THAT(src, + IsInstantiation(_A("B"), + _A("B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda " + "at ../../tests/t00051/t00051.cc:43:27)>"))); + + REQUIRE_THAT(src, + IsDependency(_A("A"), + _A("B<(lambda at ../../tests/t00051/t00051.cc:43:18),(lambda " + "at ../../tests/t00051/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 0971db6a..264bf190 100644 --- a/tests/t00052/test_case.h +++ b/tests/t00052/test_case.h @@ -29,26 +29,25 @@ TEST_CASE("t00052", "[test-case][class]") REQUIRE(model->name() == "t00052_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("A"))); // Check if class templates exist - REQUIRE_THAT(puml, IsClassTemplate("B", "T")); + REQUIRE_THAT(src, IsClassTemplate("B", "T")); // Check if all methods exist - REQUIRE_THAT(puml, (IsMethod("a", "T", "T p"))); - REQUIRE_THAT( - puml, (IsMethod("aa", "void", "F && f, Q q"))); - REQUIRE_THAT(puml, (IsMethod("b", "T", "T t"))); - REQUIRE_THAT(puml, (IsMethod("bb", "T", "F && f, T t"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -61,8 +60,23 @@ TEST_CASE("t00052", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 fe4923c4..528b23ff 100644 --- a/tests/t00053/test_case.h +++ b/tests/t00053/test_case.h @@ -29,30 +29,30 @@ TEST_CASE("t00053", "[test-case][class]") REQUIRE(model->name() == "t00053_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("a"))); - REQUIRE_THAT(puml, IsClass(_A("b"))); - REQUIRE_THAT(puml, IsClass(_A("c"))); - REQUIRE_THAT(puml, IsClass(_A("d"))); - REQUIRE_THAT(puml, IsClass(_A("e"))); - REQUIRE_THAT(puml, IsClass(_A("f"))); - REQUIRE_THAT(puml, 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(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -79,8 +79,27 @@ TEST_CASE("t00053", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 b844e394..060c4900 100644 --- a/tests/t00054/test_case.h +++ b/tests/t00054/test_case.h @@ -29,34 +29,34 @@ TEST_CASE("t00054", "[test-case][class]") REQUIRE(model->name() == "t00054_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("a"))); - REQUIRE_THAT(puml, IsClass(_A("b"))); - REQUIRE_THAT(puml, IsClass(_A("c"))); - REQUIRE_THAT(puml, IsClass(_A("d"))); - REQUIRE_THAT(puml, IsClass(_A("e"))); - REQUIRE_THAT(puml, IsClass(_A("f"))); - REQUIRE_THAT(puml, 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(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, 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(puml, IsEnum(_A("i"))); - REQUIRE_THAT(puml, IsEnum(_A("h"))); - REQUIRE_THAT(puml, IsEnum(_A("j"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -87,8 +87,32 @@ TEST_CASE("t00054", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 391555a5..9f238ba7 100644 --- a/tests/t00055/test_case.h +++ b/tests/t00055/test_case.h @@ -29,35 +29,35 @@ TEST_CASE("t00055", "[test-case][class]") REQUIRE(model->name() == "t00055_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, IsClass(_A("E"))); - REQUIRE_THAT(puml, IsClass(_A("F"))); - REQUIRE_THAT(puml, IsClass(_A("G"))); - REQUIRE_THAT(puml, IsClass(_A("H"))); - REQUIRE_THAT(puml, IsClass(_A("I"))); - REQUIRE_THAT(puml, IsClass(_A("J"))); + 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(puml, IsLayoutHint(_A("A"), "right", _A("C"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("C"), "right", _A("E"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("E"), "right", _A("G"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("G"), "right", _A("I"))); + 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(puml, IsLayoutHint(_A("B"), "down", _A("D"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("D"), "down", _A("F"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("F"), "down", _A("H"))); - REQUIRE_THAT(puml, IsLayoutHint(_A("H"), "down", _A("J"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -79,8 +79,22 @@ TEST_CASE("t00055", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 2852bd3a..d271740c 100644 --- a/tests/t00056/test_case.h +++ b/tests/t00056/test_case.h @@ -29,94 +29,94 @@ TEST_CASE("t00056", "[test-case][class]") REQUIRE(model->name() == "t00056_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsConcept(_A("greater_than_simple"))); - REQUIRE_THAT(puml, IsConcept(_A("greater_than_with_requires"))); - REQUIRE_THAT(puml, IsConcept(_A("max_four_bytes"))); - REQUIRE_THAT(puml, IsConcept(_A("iterable"))); - REQUIRE_THAT(puml, IsConcept(_A("has_value_type"))); - REQUIRE_THAT(puml, IsConcept(_A("convertible_to_string"))); - REQUIRE_THAT(puml, IsConcept(_A("iterable_with_value_type"))); - REQUIRE_THAT(puml, IsConcept(_A("iterable_or_small_value_type"))); + 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(puml, + REQUIRE_THAT(src, IsConceptRequirement(_A("greater_than_with_requires"), "sizeof (l) > sizeof (r)")); REQUIRE_THAT( - puml, IsConceptRequirement(_A("iterable"), "container.begin()")); + src, IsConceptRequirement(_A("iterable"), "container.begin()")); REQUIRE_THAT( - puml, IsConceptRequirement(_A("iterable"), "container.end()")); + src, IsConceptRequirement(_A("iterable"), "container.end()")); #ifdef _MSC_VER REQUIRE_THAT(puml, IsConceptRequirement( _A("convertible_to_string"), "std::string{s}")); #else - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConceptRequirement( _A("convertible_to_string"), "std::string{s}")); #endif - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConceptRequirement(_A("convertible_to_string"), "{std::to_string(s)} noexcept")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConceptRequirement(_A("convertible_to_string"), "{std::to_string(s)} -> std::same_as")); // Check if class templates exist - REQUIRE_THAT(puml, IsClassTemplate("A", "max_four_bytes T")); - REQUIRE_THAT(puml, IsClassTemplate("B", "T")); - REQUIRE_THAT(puml, IsClassTemplate("C", "convertible_to_string T")); + 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( - puml, IsClassTemplate("D", "iterable T1,T2,iterable T3,T4,T5")); - REQUIRE_THAT(puml, IsClassTemplate("E", "T1,T2,T3")); - REQUIRE_THAT(puml, IsClassTemplate("F", "T1,T2,T3")); + 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(puml, + REQUIRE_THAT(src, IsConstraint( _A("A"), _A("max_four_bytes"), "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("D"), _A("max_four_bytes"), "T2")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("D"), _A("max_four_bytes"), "T5")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("D"), _A("iterable"), "T1")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("D"), _A("iterable"), "T3")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("iterable_with_value_type"), _A("has_value_type"), "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("iterable_or_small_value_type"), _A("max_four_bytes"), "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("iterable_or_small_value_type"), _A("iterable_with_value_type"), "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("E"), _A("greater_than_with_requires"), "T1,T3")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint( _A("F"), _A("greater_than_simple"), "T1,T3")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { auto j = generate_class_json(diagram, *model); @@ -135,8 +135,93 @@ TEST_CASE("t00056", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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()")); + +#ifdef _MSC_VER + REQUIRE_THAT(puml, + 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 7783304f..e033db34 100644 --- a/tests/t00057/test_case.h +++ b/tests/t00057/test_case.h @@ -29,37 +29,37 @@ TEST_CASE("t00057", "[test-case][class]") REQUIRE(model->name() == "t00057_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("t00057_A"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_B"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_C"))); - REQUIRE_THAT(puml, IsUnion(_A("t00057_D"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_E"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_F"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_G"))); - REQUIRE_THAT(puml, !IsClass(_A("(anonymous)"))); - REQUIRE_THAT(puml, IsClass(_A("t00057_R"))); + 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(puml, IsAggregation(_A("t00057_R"), _A("t00057_A"), "+a")); - REQUIRE_THAT(puml, IsAggregation(_A("t00057_R"), _A("t00057_B"), "+b")); - REQUIRE_THAT(puml, IsAssociation(_A("t00057_R"), _A("t00057_C"), "+c")); - REQUIRE_THAT(puml, IsAggregation(_A("t00057_R"), _A("t00057_D"), "+d")); - REQUIRE_THAT(puml, IsAssociation(_A("t00057_R"), _A("t00057_E"), "+e")); - REQUIRE_THAT(puml, IsAssociation(_A("t00057_R"), _A("t00057_F"), "+f")); - REQUIRE_THAT(puml, + 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(puml, + REQUIRE_THAT(src, IsAggregation(_A("t00057_E"), _A("t00057_E::(height)"), "+height")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -79,8 +79,35 @@ TEST_CASE("t00057", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 1ac074ab..aabb26a5 100644 --- a/tests/t00058/test_case.h +++ b/tests/t00058/test_case.h @@ -29,44 +29,44 @@ TEST_CASE("t00058", "[test-case][class]") REQUIRE(model->name() == "t00058_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClassTemplate("A", "int,int,double,std::string")); - REQUIRE_THAT(puml, - IsClassTemplate("B", "int,std::string,int,double,A")); + REQUIRE_THAT(src, IsClassTemplate("A", "int,int,double,std::string")); + REQUIRE_THAT( + src, IsClassTemplate("B", "int,std::string,int,double,A")); - REQUIRE_THAT(puml, IsConcept(_A("same_as_first_type"))); + REQUIRE_THAT(src, IsConcept(_A("same_as_first_type"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("A"), _A("same_as_first_type"), "T,Args...")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsConstraint(_A("B"), _A("same_as_first_type"), "T,Args...")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("A"), "+aa")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("B>"), "+bb")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation( _A("A"), _A("A"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("B"), _A("B>"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("same_as_first_type"), _A("first_type"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -81,8 +81,44 @@ TEST_CASE("t00058", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 54211c31..8449ca80 100644 --- a/tests/t00059/test_case.h +++ b/tests/t00059/test_case.h @@ -29,64 +29,64 @@ TEST_CASE("t00059", "[test-case][class]") REQUIRE(model->name() == "t00059_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsConcept(_A("fruit_c"))); - REQUIRE_THAT(puml, IsConcept(_A("apple_c"))); - REQUIRE_THAT(puml, IsConcept(_A("orange_c"))); + REQUIRE_THAT(src, IsConcept(_A("fruit_c"))); + REQUIRE_THAT(src, IsConcept(_A("apple_c"))); + REQUIRE_THAT(src, IsConcept(_A("orange_c"))); REQUIRE_THAT( - puml, IsConstraint(_A("apple_c"), _A("fruit_c"), "T")); + src, IsConstraint(_A("apple_c"), _A("fruit_c"), "T")); REQUIRE_THAT( - puml, IsConstraint(_A("orange_c"), _A("fruit_c"), "T")); + src, IsConstraint(_A("orange_c"), _A("fruit_c"), "T")); REQUIRE_THAT( - puml, IsConceptRequirement(_A("apple_c"), "t.get_sweetness()")); + src, IsConceptRequirement(_A("apple_c"), "t.get_sweetness()")); REQUIRE_THAT( - puml, IsConceptRequirement(_A("apple_c"), "t.get_bitterness()")); + src, IsConceptRequirement(_A("apple_c"), "t.get_bitterness()")); - REQUIRE_THAT(puml, IsClass(_A("gala_apple"))); - REQUIRE_THAT(puml, IsClass(_A("empire_apple"))); - REQUIRE_THAT(puml, IsClass(_A("valencia_orange"))); - REQUIRE_THAT(puml, IsClass(_A("lima_orange"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + 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( - puml, IsClassTemplate("fruit_factory", "apple_c TA,orange_c TO")); + src, IsClassTemplate("fruit_factory", "apple_c TA,orange_c TO")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("fruit_factory"), _A("gala_apple"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("fruit_factory"), _A("valencia_orange"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("fruit_factory"), _A("empire_apple"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsDependency(_A("fruit_factory"), _A("lima_orange"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("fruit_factory"), "+factory_1")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsAggregation(_A("R"), _A("fruit_factory"), "+factory_2")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("fruit_factory"), _A("fruit_factory"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsInstantiation(_A("fruit_factory"), _A("fruit_factory"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -101,8 +101,63 @@ TEST_CASE("t00059", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 c38b6490..3481b8a8 100644 --- a/tests/t00060/test_case.h +++ b/tests/t00060/test_case.h @@ -29,25 +29,25 @@ TEST_CASE("t00060", "[test-case][class]") REQUIRE(model->name() == "t00060_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("D"))); - REQUIRE_THAT(puml, !IsClass(_A("E"))); - REQUIRE_THAT(puml, !IsClass(_A("F"))); + 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(puml, IsClassTemplate("G", "T")); - REQUIRE_THAT(puml, IsClassTemplate("H", "T,P")); + REQUIRE_THAT(src, IsClassTemplate("G", "T")); + REQUIRE_THAT(src, IsClassTemplate("H", "T,P")); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -65,8 +65,22 @@ TEST_CASE("t00060", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 57748bf9..38df0dd5 100644 --- a/tests/t00061/test_case.h +++ b/tests/t00061/test_case.h @@ -29,18 +29,18 @@ TEST_CASE("t00061", "[test-case][class]") REQUIRE(model->name() == "t00061_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, !IsClass(_A("B"))); - REQUIRE_THAT(puml, !IsClass(_A("C"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -55,8 +55,15 @@ TEST_CASE("t00061", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 31ab4eff..d441f901 100644 --- a/tests/t00062/test_case.h +++ b/tests/t00062/test_case.h @@ -29,61 +29,61 @@ TEST_CASE("t00062", "[test-case][class]") REQUIRE(model->name() == "t00062_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(src, !Contains("type-parameter-")); // Check if all classes exist - REQUIRE_THAT(puml, IsClassTemplate("A", "T")); - REQUIRE_THAT(puml, IsClassTemplate("A", "U &")); - REQUIRE_THAT(puml, IsClassTemplate("A", "U &&")); - REQUIRE_THAT(puml, IsClassTemplate("A", "U const&")); - REQUIRE_THAT(puml, IsClassTemplate("A", "M C::*")); - REQUIRE_THAT(puml, IsClassTemplate("A", "M C::* &&")); - REQUIRE_THAT(puml, IsClassTemplate("A", "M (C::*)(Arg)")); - REQUIRE_THAT(puml, IsClassTemplate("A", "int (C::*)(bool)")); - REQUIRE_THAT(puml, IsClassTemplate("A", "M (C::*)(Arg) &&")); - REQUIRE_THAT(puml, IsClassTemplate("A", "M (C::*)(Arg1,Arg2,Arg3)")); - REQUIRE_THAT(puml, IsClassTemplate("A", "float (C::*)(int) &&")); + 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(puml, IsClassTemplate("A", "char[N]")); - REQUIRE_THAT(puml, IsClassTemplate("A", "char[1000]")); + REQUIRE_THAT(src, IsClassTemplate("A", "char[N]")); + REQUIRE_THAT(src, IsClassTemplate("A", "char[1000]")); - REQUIRE_THAT(puml, IsClassTemplate("A", "U(...)")); - REQUIRE_THAT(puml, IsClassTemplate("A", "C")); - REQUIRE_THAT(puml, IsClassTemplate("A", "C")); + REQUIRE_THAT(src, IsClassTemplate("A", "U(...)")); + REQUIRE_THAT(src, IsClassTemplate("A", "C")); + REQUIRE_THAT(src, IsClassTemplate("A", "C")); - REQUIRE_THAT(puml, (IsField("u", "U &"))); - REQUIRE_THAT(puml, (IsField("u", "U **"))); - REQUIRE_THAT(puml, (IsField("u", "U ***"))); - REQUIRE_THAT(puml, (IsField("u", "U &&"))); - REQUIRE_THAT(puml, (IsField("u", "const U &"))); - REQUIRE_THAT(puml, (IsField("c", "C &"))); - REQUIRE_THAT(puml, (IsField("m", "M 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(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, 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(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, + 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( - puml, IsInstantiation(_A("A"), _A("A"))); + src, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, IsInstantiation(_A("A"), _A("A"))); - REQUIRE_THAT(puml, 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>"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -94,8 +94,59 @@ TEST_CASE("t00062", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 965874c7..3afc52b1 100644 --- a/tests/t00063/test_case.h +++ b/tests/t00063/test_case.h @@ -29,17 +29,17 @@ TEST_CASE("t00063", "[test-case][class]") REQUIRE(model->name() == "t00063_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, !IsEnum(_A("B"))); - REQUIRE_THAT(puml, !IsEnum(_A("C"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -54,8 +54,15 @@ TEST_CASE("t00063", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 22d39c17..6cc3dfb8 100644 --- a/tests/t00064/test_case.h +++ b/tests/t00064/test_case.h @@ -29,56 +29,55 @@ TEST_CASE("t00064", "[test-case][class]") REQUIRE(model->name() == "t00064_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !Contains("type-parameter-")); + REQUIRE_THAT(src, !Contains("type-parameter-")); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("B"))); - REQUIRE_THAT(puml, IsClass(_A("C"))); - REQUIRE_THAT(puml, IsClass(_A("R"))); + 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(puml, IsClassTemplate("type_list", "Ts...")); - REQUIRE_THAT(puml, IsClassTemplate("type_list", "Ret(Arg &&),Ts...")); - REQUIRE_THAT(puml, IsClassTemplate("type_list", "T const,Ts...")); + 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(puml, IsClassTemplate("head", "typename")); - REQUIRE_THAT(puml, IsClassTemplate("head", "type_list")); + REQUIRE_THAT(src, IsClassTemplate("head", "typename")); + REQUIRE_THAT(src, IsClassTemplate("head", "type_list")); REQUIRE_THAT( - puml, IsClassTemplate("type_group_pair", "typename,typename")); - REQUIRE_THAT(puml, + src, IsClassTemplate("type_group_pair", "typename,typename")); + REQUIRE_THAT(src, IsClassTemplate( "type_group_pair", "type_list,type_list")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate( "type_group_pair", "type_list,type_list")); - REQUIRE_THAT(puml, IsClassTemplate("optional_ref", "T")); + REQUIRE_THAT(src, IsClassTemplate("optional_ref", "T")); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, IsClassTemplate("type_group_pair_it", "It,type_list,type_list")); - REQUIRE_THAT( - puml, (IsMethod("get", "ref_t", "unsigned int i"))); + REQUIRE_THAT(src, (IsMethod("get", "ref_t", "unsigned int i"))); #if LLVM_VERSION_MAJOR < 16 - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("getp", "value_type const*", "unsigned int i"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod( "find", "unsigned int", "value_type const& v"))); #else - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod("getp", "const value_type *", "unsigned int i"))); - REQUIRE_THAT(puml, + REQUIRE_THAT(src, (IsMethod( "find", "unsigned int", "const value_type & v"))); #endif - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -89,8 +88,53 @@ TEST_CASE("t00064", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 75dc215a..0a1c0fdf 100644 --- a/tests/t00065/test_case.h +++ b/tests/t00065/test_case.h @@ -29,25 +29,25 @@ TEST_CASE("t00065", "[test-case][class]") REQUIRE(model->name() == "t00065_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); // Check if all classes exist - REQUIRE_THAT(puml, IsClass(_A("R"))); - REQUIRE_THAT(puml, IsClass(_A("A"))); - REQUIRE_THAT(puml, IsClass(_A("AImpl"))); - REQUIRE_THAT(puml, IsEnum(_A("XYZ"))); - REQUIRE_THAT(puml, IsEnum(_A("ABC"))); + REQUIRE_THAT(src, IsClass(_A("R"))); + REQUIRE_THAT(src, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("AImpl"))); + REQUIRE_THAT(src, IsEnum(_A("XYZ"))); + REQUIRE_THAT(src, IsEnum(_A("ABC"))); - REQUIRE_THAT(puml, IsPackage("module1")); - REQUIRE_THAT(puml, IsPackage("module2")); - REQUIRE_THAT(puml, IsPackage("submodule1a")); - REQUIRE_THAT(puml, IsPackage("concepts")); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -58,8 +58,18 @@ TEST_CASE("t00065", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 4336d03b..8492271c 100644 --- a/tests/t00066/test_case.h +++ b/tests/t00066/test_case.h @@ -29,47 +29,47 @@ TEST_CASE("t00066", "[test-case][class]") REQUIRE(model->name() == "t00066_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, IsClass(_A("A"))); + REQUIRE_THAT(src, IsClass(_A("A"))); - REQUIRE_THAT(puml, !IsDependency(_A("A"), _A("A"))); + REQUIRE_THAT(src, !IsDependency(_A("A"), _A("A"))); - REQUIRE_THAT(puml, (IsMethod("A"))); - REQUIRE_THAT(puml, (IsMethod("A", "void", "A &&"))); + REQUIRE_THAT(src, (IsMethod("A"))); + REQUIRE_THAT(src, (IsMethod("A", "void", "A &&"))); REQUIRE_THAT( - puml, (IsMethod("A", "void", "const A &"))); + src, (IsMethod("A", "void", "const A &"))); - REQUIRE_THAT(puml, (IsMethod("~A"))); + REQUIRE_THAT(src, (IsMethod("~A"))); - REQUIRE_THAT(puml, (IsMethod("basic_method"))); - REQUIRE_THAT(puml, (IsMethod("static_method", "int"))); - REQUIRE_THAT(puml, (IsMethod("const_method"))); + REQUIRE_THAT(src, (IsMethod("basic_method"))); + REQUIRE_THAT(src, (IsMethod("static_method", "int"))); + REQUIRE_THAT(src, (IsMethod("const_method"))); REQUIRE_THAT( - puml, (IsMethod("default_int", "int", "int i = 12"))); - REQUIRE_THAT(puml, + src, (IsMethod("default_int", "int", "int i = 12"))); + REQUIRE_THAT(src, (IsMethod("default_string", "std::string", "int i, std::string s = \"abc\""))); - REQUIRE_THAT(puml, (IsMethod("size", "std::size_t"))); + REQUIRE_THAT(src, (IsMethod("size", "std::size_t"))); - REQUIRE_THAT(puml, (IsMethod("protected_method"))); - REQUIRE_THAT(puml, (IsMethod("private_method"))); - REQUIRE_THAT(puml, (IsField("public_member", "int"))); - REQUIRE_THAT(puml, (IsField("protected_member", "int"))); - REQUIRE_THAT(puml, (IsField("private_member", "int"))); - REQUIRE_THAT(puml, + 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(puml, (IsField("a_", "int"))); - REQUIRE_THAT(puml, (IsField("b_", "int"))); - REQUIRE_THAT(puml, (IsField("c_", "int"))); + 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", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -80,8 +80,46 @@ TEST_CASE("t00066", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } { - auto mmd = generate_class_mermaid(diagram, *model); + auto src = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + 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 03d3dc0a..45d77b35 100644 --- a/tests/t00067/test_case.h +++ b/tests/t00067/test_case.h @@ -29,22 +29,22 @@ TEST_CASE("t00067", "[test-case][class]") REQUIRE(model->name() == "t00067_class"); { - auto puml = generate_class_puml(diagram, *model); - AliasMatcher _A(puml); + auto src = generate_class_puml(diagram, *model); + AliasMatcher _A(src); - REQUIRE_THAT(puml, StartsWith("@startuml")); - REQUIRE_THAT(puml, EndsWith("@enduml\n")); + REQUIRE_THAT(src, StartsWith("@startuml")); + REQUIRE_THAT(src, EndsWith("@enduml\n")); - REQUIRE_THAT(puml, !(IsMethod("A"))); - REQUIRE_THAT(puml, !(IsMethod("A", "void", "A &&"))); + REQUIRE_THAT(src, !(IsMethod("A"))); + REQUIRE_THAT(src, !(IsMethod("A", "void", "A &&"))); REQUIRE_THAT( - puml, !(IsMethod("A", "void", "const A &"))); + src, !(IsMethod("A", "void", "const A &"))); - REQUIRE_THAT(puml, !(IsMethod("~A"))); + REQUIRE_THAT(src, !(IsMethod("~A"))); - REQUIRE_THAT(puml, !(IsMethod("~A"))); + REQUIRE_THAT(src, !(IsMethod("~A"))); - save_puml(config.output_directory(), diagram->name + ".puml", puml); + save_puml(config.output_directory(), diagram->name + ".puml", src); } { @@ -54,9 +54,22 @@ TEST_CASE("t00067", "[test-case][class]") save_json(config.output_directory(), diagram->name + ".json", j); } - { - auto mmd = generate_class_mermaid(diagram, *model); - save_mermaid(config.output_directory(), diagram->name + ".mmd", mmd); + { + 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/test_cases.h b/tests/test_cases.h index 9dc32df5..0ac7e500 100644 --- a/tests/test_cases.h +++ b/tests/test_cases.h @@ -302,12 +302,86 @@ struct AliasMatcher { const std::vector puml; }; +namespace mermaid { +struct AliasMatcher { + AliasMatcher(const std::string &mmd_) + : mmd{split(mmd_, "\n")} + { + } + + std::string operator()(std::string name) + { + std::vector patterns; + + const std::string alias_regex("([A-Z]_[0-9]+)"); + + util::replace_all(name, "(", "("); + util::replace_all(name, ")", ")"); + util::replace_all(name, " ", "\\s"); + util::replace_all(name, "*", "\\*"); + util::replace_all(name, "[", "\\["); + util::replace_all(name, "]", "\\]"); + util::replace_all(name, "<", "<"); + util::replace_all(name, ">", ">"); + + patterns.push_back( + std::regex{"class\\s" + alias_regex + "\\[\"" + name + "\"\\]"}); + // patterns.push_back( + // std::regex{"abstract\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"enum\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"package\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"package\\s\\[" + name + "\\]\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"file\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"folder\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + // patterns.push_back( + // std::regex{"participant\\s\"" + name + "\"\\sas\\s" + + // alias_regex}); + + std::smatch base_match; + + for (const auto &line : mmd) { + for (const auto &pattern : patterns) { + if (std::regex_search(line, base_match, pattern) && + base_match.size() == 2) { + std::ssub_match base_sub_match = base_match[1]; + std::string alias = base_sub_match.str(); + return trim(alias); + } + } + } + + return "__INVALID__ALIAS__"; + } + + const std::vector mmd; +}; +} + ContainsMatcher IsClass(std::string const &str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) { return ContainsMatcher(CasedString("class " + str, caseSensitivity)); } +namespace mermaid { +auto IsClass(std::string const &str, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher(CasedString("class " + str, caseSensitivity)); +} +} + ContainsMatcher IsUnion(std::string const &str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) { @@ -315,6 +389,16 @@ ContainsMatcher IsUnion(std::string const &str, CasedString("class " + str + " <>", caseSensitivity)); } +namespace mermaid { +auto IsUnion(std::string const &alias, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("class ") + alias + " \\{\\n\\s+<>", + caseSensitivity); +} +} + ContainsMatcher IsClassTemplate(std::string const &str, std::string const &tmplt, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) @@ -330,18 +414,48 @@ ContainsMatcher IsConcept(std::string const &str, CasedString("class " + str + " <>", caseSensitivity)); } +namespace mermaid { +auto IsConcept(std::string const &alias, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("class ") + alias + " \\{\\n\\s+<>", + caseSensitivity); +} +} + ContainsMatcher IsEnum(std::string const &str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) { return ContainsMatcher(CasedString("enum " + str, caseSensitivity)); } +namespace mermaid { +auto IsEnum(std::string const &alias, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("class ") + alias + " \\{\\n\\s+<>", + caseSensitivity); +} +} + ContainsMatcher IsAbstractClass(std::string const &str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) { return ContainsMatcher(CasedString("abstract " + str, caseSensitivity)); } +namespace mermaid { +auto IsAbstractClass(std::string const &alias, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return Catch::Matchers::Matches( + std::string("class ") + alias + " \\{\\n\\s+<>", + caseSensitivity); +} +} + ContainsMatcher IsAbstractClassTemplate(std::string const &str, std::string const &tmplt, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) @@ -356,6 +470,14 @@ ContainsMatcher IsBaseClass(std::string const &base, std::string const &sub, return ContainsMatcher(CasedString(base + " <|-- " + sub, caseSensitivity)); } +namespace mermaid { +ContainsMatcher IsBaseClass(std::string const &base, std::string const &sub, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher(CasedString(base + " <|-- " + sub, caseSensitivity)); +} +} + ContainsMatcher IsInnerClass(std::string const &parent, std::string const &inner, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) @@ -364,6 +486,16 @@ ContainsMatcher IsInnerClass(std::string const &parent, CasedString(inner + " --+ " + parent, caseSensitivity)); } +namespace mermaid { +ContainsMatcher IsInnerClass(std::string const &parent, + std::string const &inner, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher( + CasedString(parent + " ()-- " + inner + " : ", caseSensitivity)); +} +} + ContainsMatcher IsAssociation(std::string const &from, std::string const &to, std::string const &label = "", std::string multiplicity_source = "", std::string multiplicity_dest = "", @@ -494,6 +626,43 @@ ContainsMatcher IsConceptRequirement(std::string const &cpt, return ContainsMatcher(CasedString(requirement, caseSensitivity)); } +namespace mermaid { +ContainsMatcher IsConstraint(std::string const &from, std::string const &to, + std::string label = {}, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + util::replace_all(label, "<", "<"); + util::replace_all(label, ">", ">"); + util::replace_all(label, "(", "("); + util::replace_all(label, ")", ")"); + util::replace_all(label, "##", "::"); + util::replace_all(label, "{", "{"); + util::replace_all(label, "}", "}"); + + if (label.empty()) + return ContainsMatcher( + CasedString(fmt::format("{} ..> {}", from, to), caseSensitivity)); + else + return ContainsMatcher(CasedString( + fmt::format("{} ..> {} : {}", from, to, label), caseSensitivity)); +} + +ContainsMatcher IsConceptRequirement(std::string const &cpt, + std::string requirement, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + 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, "}", "}"); + + return ContainsMatcher(CasedString(requirement, caseSensitivity)); +} +} + ContainsMatcher IsLayoutHint(std::string const &from, std::string const &hint, std::string const &to, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) @@ -534,6 +703,17 @@ ContainsMatcher HasLink(std::string const &alias, std::string const &link, fmt::format("{} [[{}{{{}}}]]", alias, link, tooltip), caseSensitivity)); } +namespace mermaid { +ContainsMatcher HasLink(std::string const &alias, std::string const &link, + std::string const &tooltip, + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + return ContainsMatcher(CasedString( + fmt::format("click {} href \"{}\" \"{}\"", alias, link, tooltip), + caseSensitivity)); +} +} + ContainsMatcher HasMemberLink(std::string const &method, std::string const &link, std::string const &tooltip, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) @@ -589,6 +769,61 @@ ContainsMatcher IsMethod(std::string const &name, return ContainsMatcher(CasedString(pattern, caseSensitivity)); } +namespace mermaid { +template +ContainsMatcher IsMethod(std::string const &name, std::string type = "void", + std::string const ¶ms = "", + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + std::string pattern; + + if constexpr (has_type()) + pattern = "+"; + else if constexpr (has_type()) + pattern = "#"; + else + pattern = "-"; + + pattern += name; + + pattern += "(" + params + ")"; + + std::vector method_mods; + if constexpr (has_type()) + method_mods.push_back("default"); + if constexpr (has_type()) + method_mods.push_back("const"); + if constexpr (has_type()) + method_mods.push_back("constexpr"); + if constexpr (has_type()) + method_mods.push_back("consteval"); + + pattern += " : "; + + if (!method_mods.empty()) { + pattern += fmt::format("[{}] ", fmt::join(method_mods, ",")); + } + + util::replace_all(type, "<", "<"); + util::replace_all(type, ">", ">"); + util::replace_all(type, "(", "("); + util::replace_all(type, ")", ")"); + util::replace_all(type, "##", "::"); + util::replace_all(type, "{", "{"); + util::replace_all(type, "}", "}"); + + pattern += type; + + if constexpr (has_type()) + pattern += "*"; + + if constexpr (has_type()) + pattern += "$"; + + return ContainsMatcher(CasedString(pattern, caseSensitivity)); +} +} + template ContainsMatcher IsField(std::string const &name, std::string const &type = "void", @@ -611,6 +846,37 @@ ContainsMatcher IsField(std::string const &name, CasedString(pattern + " : " + type, caseSensitivity)); } +namespace mermaid { +template +ContainsMatcher IsField(std::string const &name, std::string type = "void", + CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes) +{ + std::string pattern; + if constexpr (has_type()) + pattern += "{static} "; + + if constexpr (has_type()) + pattern = "+"; + else if constexpr (has_type()) + pattern = "#"; + else + pattern = "-"; + + pattern += name; + + util::replace_all(type, "<", "<"); + util::replace_all(type, ">", ">"); + util::replace_all(type, "(", "("); + util::replace_all(type, ")", ")"); + util::replace_all(type, "##", "::"); + util::replace_all(type, "{", "{"); + util::replace_all(type, "}", "}"); + + return ContainsMatcher( + CasedString(pattern + " : " + type, caseSensitivity)); +} +} + template ContainsMatcher IsFriend(std::string const &from, std::string const &to, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes)