From 8d89f6ccf0a84ff7eef4b834b85ba2c68b122b26 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 16 Apr 2022 17:15:01 +0200 Subject: [PATCH] Extended class diagram subclasses test with multiple inheritance --- Makefile | 4 ++++ tests/t00039/.clang-uml | 3 +++ tests/t00039/t00039.cc | 18 ++++++++++++++++++ tests/t00039/test_case.h | 11 +++++++++++ 4 files changed, 36 insertions(+) diff --git a/Makefile b/Makefile index 09933fdb..727c3eb4 100644 --- a/Makefile +++ b/Makefile @@ -80,6 +80,10 @@ init_compile_commands: debug clang-format: docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.3 +.PHONY: format +clang-format: + docker run --rm -v $(CURDIR):/root/sources bkryza/clang-format-check:1.3 + .PHONY: iwyu_fixes iwyu_fixes: debug python3 $(shell which iwyu_tool.py) -p debug > debug/iwyu.out diff --git a/tests/t00039/.clang-uml b/tests/t00039/.clang-uml index 89ff7ef5..8474b0ac 100644 --- a/tests/t00039/.clang-uml +++ b/tests/t00039/.clang-uml @@ -11,6 +11,9 @@ diagrams: include: subclasses: - clanguml::t00039::A + - clanguml::t00039::C + - clanguml::t00039::D + - clanguml::t00039::E - clanguml::t00039::ns3::F relationships: - inheritance \ No newline at end of file diff --git a/tests/t00039/t00039.cc b/tests/t00039/t00039.cc index 2944ed5e..a1e629c0 100644 --- a/tests/t00039/t00039.cc +++ b/tests/t00039/t00039.cc @@ -4,11 +4,29 @@ namespace clanguml::t00039 { struct B { }; +struct C { +}; + +struct D { +}; + +struct E { +}; + namespace ns1 { struct BB : public B { }; } // namespace ns1 +struct CD : public C, public D { +}; + +struct DE : public D, public E { +}; + +struct CDE : public C, public D, public E { +}; + struct A { }; diff --git a/tests/t00039/test_case.h b/tests/t00039/test_case.h index 6a2caf2c..a134fae7 100644 --- a/tests/t00039/test_case.h +++ b/tests/t00039/test_case.h @@ -46,6 +46,17 @@ TEST_CASE("t00039", "[test-case][class]") REQUIRE_THAT(puml, !IsClass(_A("B"))); REQUIRE_THAT(puml, !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(puml, IsClassTemplate("ns3::F", "T")); REQUIRE_THAT(puml, IsClassTemplate("ns3::FF", "T,M")); REQUIRE_THAT(puml, IsClassTemplate("ns3::FE", "T,M"));