Added method type diagram filter (#145)
This commit is contained in:
18
tests/t00067/.clang-uml
Normal file
18
tests/t00067/.clang-uml
Normal file
@@ -0,0 +1,18 @@
|
||||
compilation_database_dir: ..
|
||||
output_directory: puml
|
||||
diagrams:
|
||||
t00067_class:
|
||||
type: class
|
||||
glob:
|
||||
- ../../tests/t00067/t00067.cc
|
||||
include:
|
||||
namespaces:
|
||||
- clanguml::t00067
|
||||
exclude:
|
||||
method_types:
|
||||
- constructor
|
||||
- operator
|
||||
- assignment
|
||||
- static
|
||||
using_namespace:
|
||||
- clanguml::t00067
|
||||
67
tests/t00067/t00067.cc
Normal file
67
tests/t00067/t00067.cc
Normal file
@@ -0,0 +1,67 @@
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
namespace clanguml {
|
||||
namespace t00067 {
|
||||
class A {
|
||||
public:
|
||||
A() = default;
|
||||
A(int i)
|
||||
: private_member{i}
|
||||
{
|
||||
}
|
||||
A(A &&) = default;
|
||||
A(const A &) = delete;
|
||||
virtual ~A() = default;
|
||||
|
||||
void basic_method() { }
|
||||
static int static_method() { return 0; }
|
||||
void const_method() const { }
|
||||
auto auto_method() { return 1; }
|
||||
|
||||
A &operator++()
|
||||
{
|
||||
private_member++;
|
||||
return *this;
|
||||
}
|
||||
|
||||
A &operator=(A &&other) noexcept { return *this; }
|
||||
A &operator=(A &other) noexcept { return *this; }
|
||||
|
||||
std::size_t size() const { return private_member; }
|
||||
|
||||
auto double_int(const int i) { return 2 * i; }
|
||||
auto sum(const double a, const double b) { return a_ + b_ + c_; }
|
||||
|
||||
auto default_int(int i = 12) { return i + 10; }
|
||||
std::string default_string(int i, std::string s = "abc")
|
||||
{
|
||||
return s + std::to_string(i);
|
||||
}
|
||||
|
||||
static A create_from_int(int i) { return A(i); }
|
||||
|
||||
int public_member;
|
||||
static int static_int;
|
||||
static const int static_const_int = 1;
|
||||
static const auto auto_member{10UL};
|
||||
|
||||
protected:
|
||||
void protected_method() { }
|
||||
|
||||
int protected_member;
|
||||
|
||||
std::function<bool(const int)> compare = [this](const int v) {
|
||||
return private_member > v;
|
||||
};
|
||||
|
||||
private:
|
||||
void private_method() { }
|
||||
|
||||
int private_member;
|
||||
int a_, b_, c_;
|
||||
};
|
||||
|
||||
int A::static_int = 1;
|
||||
}
|
||||
}
|
||||
58
tests/t00067/test_case.h
Normal file
58
tests/t00067/test_case.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* tests/t00067/test_case.h
|
||||
*
|
||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||
*
|
||||
* 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("t00067", "[test-case][class]")
|
||||
{
|
||||
auto [config, db] = load_config("t00067");
|
||||
|
||||
auto diagram = config.diagrams["t00067_class"];
|
||||
|
||||
REQUIRE(diagram->name == "t00067_class");
|
||||
|
||||
auto model = generate_class_diagram(*db, diagram);
|
||||
|
||||
REQUIRE(model->name() == "t00067_class");
|
||||
|
||||
{
|
||||
auto puml = generate_class_puml(diagram, *model);
|
||||
AliasMatcher _A(puml);
|
||||
|
||||
REQUIRE_THAT(puml, StartsWith("@startuml"));
|
||||
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
|
||||
|
||||
REQUIRE_THAT(puml, !(IsMethod<Public, Default>("A")));
|
||||
REQUIRE_THAT(puml, !(IsMethod<Public, Default>("A", "void", "A &&")));
|
||||
REQUIRE_THAT(
|
||||
puml, !(IsMethod<Public, Deleted>("A", "void", "const A &")));
|
||||
|
||||
REQUIRE_THAT(puml, !(IsMethod<Public, Default>("~A")));
|
||||
|
||||
REQUIRE_THAT(puml, !(IsMethod<Public, Default>("~A")));
|
||||
|
||||
save_puml(
|
||||
config.output_directory() + "/" + diagram->name + ".puml", puml);
|
||||
}
|
||||
|
||||
{
|
||||
auto j = generate_class_json(diagram, *model);
|
||||
|
||||
using namespace json;
|
||||
|
||||
save_json(config.output_directory() + "/" + diagram->name + ".json", j);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user