Added test case for unsorted and ungrouped class members and methods
This commit is contained in:
14
tests/t00066/.clang-uml
Normal file
14
tests/t00066/.clang-uml
Normal file
@@ -0,0 +1,14 @@
|
||||
compilation_database_dir: ..
|
||||
output_directory: puml
|
||||
diagrams:
|
||||
t00066_class:
|
||||
type: class
|
||||
glob:
|
||||
- ../../tests/t00066/t00066.cc
|
||||
include:
|
||||
namespaces:
|
||||
- clanguml::t00066
|
||||
member_order: as_is
|
||||
group_methods: false
|
||||
using_namespace:
|
||||
- clanguml::t00066
|
||||
68
tests/t00066/t00066.cc
Normal file
68
tests/t00066/t00066.cc
Normal file
@@ -0,0 +1,68 @@
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
namespace clanguml {
|
||||
namespace t00066 {
|
||||
|
||||
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;
|
||||
} // namespace t00003
|
||||
} // namespace clanguml
|
||||
83
tests/t00066/test_case.h
Normal file
83
tests/t00066/test_case.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* tests/t00066/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("t00066", "[test-case][class]")
|
||||
{
|
||||
auto [config, db] = load_config("t00066");
|
||||
|
||||
auto diagram = config.diagrams["t00066_class"];
|
||||
|
||||
REQUIRE(diagram->name == "t00066_class");
|
||||
|
||||
auto model = generate_class_diagram(*db, diagram);
|
||||
|
||||
REQUIRE(model->name() == "t00066_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("A")));
|
||||
|
||||
REQUIRE_THAT(puml, !IsDependency(_A("A"), _A("A")));
|
||||
|
||||
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>("basic_method")));
|
||||
REQUIRE_THAT(puml, (IsMethod<Public, Static>("static_method", "int")));
|
||||
REQUIRE_THAT(puml, (IsMethod<Public, Const>("const_method")));
|
||||
REQUIRE_THAT(
|
||||
puml, (IsMethod<Public>("default_int", "int", "int i = 12")));
|
||||
REQUIRE_THAT(puml,
|
||||
(IsMethod<Public>("default_string", "std::string",
|
||||
"int i, std::string s = \"abc\"")));
|
||||
|
||||
REQUIRE_THAT(puml, (IsMethod<Public, Const>("size", "std::size_t")));
|
||||
|
||||
REQUIRE_THAT(puml, (IsMethod<Protected>("protected_method")));
|
||||
REQUIRE_THAT(puml, (IsMethod<Private>("private_method")));
|
||||
REQUIRE_THAT(puml, (IsField<Public>("public_member", "int")));
|
||||
REQUIRE_THAT(puml, (IsField<Protected>("protected_member", "int")));
|
||||
REQUIRE_THAT(puml, (IsField<Private>("private_member", "int")));
|
||||
REQUIRE_THAT(puml,
|
||||
(IsField<Public, Static>("auto_member", "const unsigned long")));
|
||||
|
||||
REQUIRE_THAT(puml, (IsField<Private>("a_", "int")));
|
||||
REQUIRE_THAT(puml, (IsField<Private>("b_", "int")));
|
||||
REQUIRE_THAT(puml, (IsField<Private>("c_", "int")));
|
||||
|
||||
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