From 79fb0e8d6081a4ba070a8fec67372b2fd5b60942 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sun, 25 Jul 2021 10:23:36 +0200 Subject: [PATCH] Added layer cake patter --- docs/test_cases.md | 1 + docs/test_cases/t00019.md | 160 +++++++++++++++++++++++++++++++ docs/test_cases/t00019_class.png | Bin 0 -> 25227 bytes tests/t00019/.clanguml | 18 ++++ tests/t00019/t00019.cc | 16 ++++ tests/t00019/t00019_base.h | 19 ++++ tests/t00019/t00019_layer1.h | 26 +++++ tests/t00019/t00019_layer2.h | 20 ++++ tests/t00019/t00019_layer3.h | 33 +++++++ tests/t00019/test_case.h | 59 ++++++++++++ tests/test_cases.cc | 1 + tests/test_cases.yaml | 3 + 12 files changed, 356 insertions(+) create mode 100644 docs/test_cases/t00019.md create mode 100644 docs/test_cases/t00019_class.png create mode 100644 tests/t00019/.clanguml create mode 100644 tests/t00019/t00019.cc create mode 100644 tests/t00019/t00019_base.h create mode 100644 tests/t00019/t00019_layer1.h create mode 100644 tests/t00019/t00019_layer2.h create mode 100644 tests/t00019/t00019_layer3.h create mode 100644 tests/t00019/test_case.h diff --git a/docs/test_cases.md b/docs/test_cases.md index 2c027fe4..95b075df 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -17,6 +17,7 @@ * [t00016](./test_cases/t00016.md) - Unnamed enums and empty templates * [t00017](./test_cases/t00017.md) - Test include relations also as members flag * [t00018](./test_cases/t00018.md) - Pimpl pattern + * [t00019](./test_cases/t00019.md) - Layercake pattern ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram ## Configuration diagrams diff --git a/docs/test_cases/t00019.md b/docs/test_cases/t00019.md new file mode 100644 index 00000000..2fe6f35b --- /dev/null +++ b/docs/test_cases/t00019.md @@ -0,0 +1,160 @@ +# t00019 - Layercake pattern +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00019_class: + type: class + glob: + - ../../tests/t00019/**.h + - ../../tests/t00019/**.cc + using_namespace: + - clanguml::t00019 + include: + namespaces: + - clanguml::t00019 + plantuml: + after: + - '@A(Base) <|-- @A(Layer3)' + - '@A(Layer3) <|-- @A(Layer2)' + - '@A(Layer2) <|-- @A(Layer1)' + +``` +## Source code +File t00019_layer2.h +```cpp +#pragma once + +namespace clanguml { +namespace t00019 { + +template class Layer2 : public LowerLayer { + + using LowerLayer::LowerLayer; + + using LowerLayer::m1; + + using LowerLayer::m2; + + int all_calls_count() const + { + return LowerLayer::m1_calls() + LowerLayer::m2_calls(); + } +}; +} +} + +``` +File t00019_base.h +```cpp +#pragma once + +#include + +namespace clanguml { +namespace t00019 { + +class Base { + + Base() = default; + + virtual ~Base() = default; + + virtual int m1() { return 2; } + + virtual std::string m2() { return "two"; } +}; +} +} + +``` +File t00019_layer1.h +```cpp +#pragma once + +#include +#include + +namespace clanguml { +namespace t00019 { + +template class Layer1 : public LowerLayer { + + using LowerLayer::LowerLayer; + + int m1() override + { + std::cout << "m1 called\n"; + return LowerLayer::m1(); + } + + std::string m2() override + { + std::cout << "m2 called\n"; + return LowerLayer::m2(); + } +}; +} +} + +``` +File t00019.cc +```cpp +#include "t00019_base.h" +#include "t00019_layer1.h" +#include "t00019_layer2.h" +#include "t00019_layer3.h" + +#include + +namespace clanguml { +namespace t00019 { + +class A { +public: + std::unique_ptr>>> layers; +}; +} +} + +``` +File t00019_layer3.h +```cpp +#pragma once + +#include + +namespace clanguml { +namespace t00019 { + +template class Layer3 : public LowerLayer { + + using LowerLayer::LowerLayer; + + virtual int m1() override + { + m_m1_calls++; + return LowerLayer::m1(); + } + + virtual std::string m2() override + { + m_m2_calls++; + return LowerLayer::m2(); + } + + int m1_calls() const { return m_m1_calls; } + + int m2_calls() const { return m_m2_calls; } + +private: + int m_m1_calls{}; + int m_m2_calls{}; +}; +} +} + +``` +## Generated UML diagrams +![t00019_class](./t00019_class.png "Layercake pattern") diff --git a/docs/test_cases/t00019_class.png b/docs/test_cases/t00019_class.png new file mode 100644 index 0000000000000000000000000000000000000000..c2eb10e49116b208f82e4bf631d6b1d341fd4ba9 GIT binary patch literal 25227 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 er>-0>u2VahIR7GQ*UFzv{Dd_)' + - '@A(Layer3) <|-- @A(Layer2)' + - '@A(Layer2) <|-- @A(Layer1)' diff --git a/tests/t00019/t00019.cc b/tests/t00019/t00019.cc new file mode 100644 index 00000000..e80e908d --- /dev/null +++ b/tests/t00019/t00019.cc @@ -0,0 +1,16 @@ +#include "t00019_base.h" +#include "t00019_layer1.h" +#include "t00019_layer2.h" +#include "t00019_layer3.h" + +#include + +namespace clanguml { +namespace t00019 { + +class A { +public: + std::unique_ptr>>> layers; +}; +} +} diff --git a/tests/t00019/t00019_base.h b/tests/t00019/t00019_base.h new file mode 100644 index 00000000..9838ed35 --- /dev/null +++ b/tests/t00019/t00019_base.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace clanguml { +namespace t00019 { + +class Base { + + Base() = default; + + virtual ~Base() = default; + + virtual int m1() { return 2; } + + virtual std::string m2() { return "two"; } +}; +} +} diff --git a/tests/t00019/t00019_layer1.h b/tests/t00019/t00019_layer1.h new file mode 100644 index 00000000..19860aa9 --- /dev/null +++ b/tests/t00019/t00019_layer1.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +namespace clanguml { +namespace t00019 { + +template class Layer1 : public LowerLayer { + + using LowerLayer::LowerLayer; + + int m1() override + { + std::cout << "m1 called\n"; + return LowerLayer::m1(); + } + + std::string m2() override + { + std::cout << "m2 called\n"; + return LowerLayer::m2(); + } +}; +} +} diff --git a/tests/t00019/t00019_layer2.h b/tests/t00019/t00019_layer2.h new file mode 100644 index 00000000..b60b8237 --- /dev/null +++ b/tests/t00019/t00019_layer2.h @@ -0,0 +1,20 @@ +#pragma once + +namespace clanguml { +namespace t00019 { + +template class Layer2 : public LowerLayer { + + using LowerLayer::LowerLayer; + + using LowerLayer::m1; + + using LowerLayer::m2; + + int all_calls_count() const + { + return LowerLayer::m1_calls() + LowerLayer::m2_calls(); + } +}; +} +} diff --git a/tests/t00019/t00019_layer3.h b/tests/t00019/t00019_layer3.h new file mode 100644 index 00000000..607b17a2 --- /dev/null +++ b/tests/t00019/t00019_layer3.h @@ -0,0 +1,33 @@ +#pragma once + +#include + +namespace clanguml { +namespace t00019 { + +template class Layer3 : public LowerLayer { + + using LowerLayer::LowerLayer; + + virtual int m1() override + { + m_m1_calls++; + return LowerLayer::m1(); + } + + virtual std::string m2() override + { + m_m2_calls++; + return LowerLayer::m2(); + } + + int m1_calls() const { return m_m1_calls; } + + int m2_calls() const { return m_m2_calls; } + +private: + int m_m1_calls{}; + int m_m2_calls{}; +}; +} +} diff --git a/tests/t00019/test_case.h b/tests/t00019/test_case.h new file mode 100644 index 00000000..f6a9a39a --- /dev/null +++ b/tests/t00019/test_case.h @@ -0,0 +1,59 @@ +/** + * tests/t00019/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("t00019", "[test-case][class]") +{ + auto [config, db] = load_config("t00019"); + + auto diagram = config.diagrams["t00019_class"]; + + REQUIRE(diagram->name == "t00019_class"); + + REQUIRE(diagram->include.namespaces.size() == 1); + REQUIRE_THAT(diagram->include.namespaces, + VectorContains(std::string{"clanguml::t00019"})); + + REQUIRE(diagram->exclude.namespaces.size() == 0); + + REQUIRE(diagram->should_include("clanguml::t00019::Layer1")); + REQUIRE(diagram->should_include("clanguml::t00019::Layer2")); + REQUIRE(diagram->should_include("clanguml::t00019::Layer3")); + REQUIRE(diagram->should_include("clanguml::t00019::Base")); + + auto model = generate_class_diagram(db, diagram); + + REQUIRE(model.name == "t00019_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, IsClass(_A("Base"))); + REQUIRE_THAT(puml, IsClassTemplate("Layer1", "LowerLayer")); + REQUIRE_THAT(puml, IsClassTemplate("Layer2", "LowerLayer")); + REQUIRE_THAT(puml, IsClassTemplate("Layer3", "LowerLayer")); + REQUIRE_THAT(puml, IsBaseClass(_A("Base"), _A("Layer3"))); + REQUIRE_THAT( + puml, IsBaseClass(_A("Layer3"), _A("Layer2"))); + REQUIRE_THAT( + puml, IsBaseClass(_A("Layer2"), _A("Layer1"))); + + save_puml( + "./" + config.output_directory + "/" + diagram->name + ".puml", puml); +} diff --git a/tests/test_cases.cc b/tests/test_cases.cc index 270a7944..18ad5356 100644 --- a/tests/test_cases.cc +++ b/tests/test_cases.cc @@ -122,6 +122,7 @@ using namespace clanguml::test::matchers; #include "t00016/test_case.h" #include "t00017/test_case.h" #include "t00018/test_case.h" +#include "t00019/test_case.h" // // Sequence diagram tests diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 4eceeaf3..35bc6e59 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -51,6 +51,9 @@ test_cases: - name: t00018 title: Pimpl pattern description: + - name: t00019 + title: Layercake pattern + description: Sequence diagrams: - name: t20001 title: Basic sequence diagram