From ee5c670c0755f8eaa0c14307ba6cc1c3b514a1d7 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sun, 25 Jul 2021 12:16:52 +0200 Subject: [PATCH] Added template method pattern --- docs/test_cases.md | 1 + docs/test_cases/t00021.md | 16 ++++----- docs/test_cases/t00022.md | 56 +++++++++++++++++++++++++++++++ docs/test_cases/t00022_class.png | Bin 0 -> 10532 bytes tests/t00022/.clanguml | 12 +++++++ tests/t00022/t00022.cc | 31 +++++++++++++++++ tests/t00022/test_case.h | 50 +++++++++++++++++++++++++++ tests/test_cases.cc | 1 + tests/test_cases.yaml | 3 ++ 9 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 docs/test_cases/t00022.md create mode 100644 docs/test_cases/t00022_class.png create mode 100644 tests/t00022/.clanguml create mode 100644 tests/t00022/t00022.cc create mode 100644 tests/t00022/test_case.h diff --git a/docs/test_cases.md b/docs/test_cases.md index 963737db..9761b821 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -20,6 +20,7 @@ * [t00019](./test_cases/t00019.md) - Layercake pattern * [t00020](./test_cases/t00020.md) - Abstract factory pattern * [t00021](./test_cases/t00021.md) - Visitor pattern + * [t00022](./test_cases/t00022.md) - Template method pattern ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram ## Configuration diagrams diff --git a/docs/test_cases/t00021.md b/docs/test_cases/t00021.md index 2218a661..32390628 100644 --- a/docs/test_cases/t00021.md +++ b/docs/test_cases/t00021.md @@ -35,20 +35,20 @@ public: class Visitor1 : public Visitor { public: - void visit_A(const A &item) const override { } - void visit_B(const B &item) const override { } + void visit_A(const A &item) const override {} + void visit_B(const B &item) const override {} }; class Visitor2 : public Visitor { public: - void visit_A(const A &item) const override { } - void visit_B(const B &item) const override { } + void visit_A(const A &item) const override {} + void visit_B(const B &item) const override {} }; class Visitor3 : public Visitor { public: - void visit_A(const A &item) const override { } - void visit_B(const B &item) const override { } + void visit_A(const A &item) const override {} + void visit_B(const B &item) const override {} }; class Item { @@ -59,12 +59,12 @@ public: class A : public Item { public: - void accept(const Visitor &visitor) const override { } + void accept(const Visitor &visitor) const override {} }; class B : public Item { public: - void accept(const Visitor &visitor) const override { } + void accept(const Visitor &visitor) const override {} }; } } diff --git a/docs/test_cases/t00022.md b/docs/test_cases/t00022.md new file mode 100644 index 00000000..04c950ce --- /dev/null +++ b/docs/test_cases/t00022.md @@ -0,0 +1,56 @@ +# t00022 - Template method pattern +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00022_class: + type: class + glob: + - ../../tests/t00022/t00022.cc + using_namespace: + - clanguml::t00022 + include: + namespaces: + - clanguml::t00022 + +``` +## Source code +File t00022.cc +```cpp +#include + +namespace clanguml { +namespace t00022 { + +class A { +public: + void template_method() + { + method1(); + method2(); + } + +protected: + virtual void method1() = 0; + virtual void method2() = 0; +}; + +class A1 : public A { +protected: + void method1() override { } + void method2() override { } +}; + +class A2 : public A { +protected: + void method1() override { } + void method2() override { } +}; + +} +} + +``` +## Generated UML diagrams +![t00022_class](./t00022_class.png "Template method pattern") diff --git a/docs/test_cases/t00022_class.png b/docs/test_cases/t00022_class.png new file mode 100644 index 0000000000000000000000000000000000000000..abf6c9d6427085cae9e9a0c9d0888a86975284d5 GIT binary patch literal 10532 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 literal 0 HcmV?d00001 diff --git a/tests/t00022/.clanguml b/tests/t00022/.clanguml new file mode 100644 index 00000000..6cebb830 --- /dev/null +++ b/tests/t00022/.clanguml @@ -0,0 +1,12 @@ +compilation_database_dir: .. +output_directory: puml +diagrams: + t00022_class: + type: class + glob: + - ../../tests/t00022/t00022.cc + using_namespace: + - clanguml::t00022 + include: + namespaces: + - clanguml::t00022 diff --git a/tests/t00022/t00022.cc b/tests/t00022/t00022.cc new file mode 100644 index 00000000..2e26ace2 --- /dev/null +++ b/tests/t00022/t00022.cc @@ -0,0 +1,31 @@ +#include + +namespace clanguml { +namespace t00022 { + +class A { +public: + void template_method() + { + method1(); + method2(); + } + +protected: + virtual void method1() = 0; + virtual void method2() = 0; +}; + +class A1 : public A { +protected: + void method1() override {} + void method2() override {} +}; + +class A2 : public A { +protected: + void method1() override {} + void method2() override {} +}; +} +} diff --git a/tests/t00022/test_case.h b/tests/t00022/test_case.h new file mode 100644 index 00000000..9b69fb25 --- /dev/null +++ b/tests/t00022/test_case.h @@ -0,0 +1,50 @@ +/** + * tests/t00022/test_case.cc + * + * Copyright (c) 2021 Bartek Kryza + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +TEST_CASE("t00022", "[test-case][class]") +{ + auto [config, db] = load_config("t00022"); + + auto diagram = config.diagrams["t00022_class"]; + + REQUIRE(diagram->name == "t00022_class"); + + REQUIRE(diagram->include.namespaces.size() == 1); + REQUIRE_THAT(diagram->include.namespaces, + VectorContains(std::string{"clanguml::t00022"})); + + REQUIRE(diagram->exclude.namespaces.size() == 0); + + REQUIRE(diagram->should_include("clanguml::t00022::A")); + + auto model = generate_class_diagram(db, diagram); + + REQUIRE(model.name == "t00022_class"); + + auto puml = generate_class_puml(diagram, model); + AliasMatcher _A(puml); + + 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"))); + + save_puml( + "./" + config.output_directory + "/" + diagram->name + ".puml", puml); +} diff --git a/tests/test_cases.cc b/tests/test_cases.cc index c7c7ad47..d12c2b02 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -125,6 +125,7 @@ using namespace clanguml::test::matchers; #include "t00019/test_case.h" #include "t00020/test_case.h" #include "t00021/test_case.h" +#include "t00022/test_case.h" // // Sequence diagram tests diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 4deb7fa9..388c1bea 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -60,6 +60,9 @@ test_cases: - name: t00021 title: Visitor pattern description: + - name: t00022 + title: Template method pattern + description: Sequence diagrams: - name: t20001 title: Basic sequence diagram