Added basic config option inheritance

This commit is contained in:
Bartek Kryza
2022-02-06 00:02:42 +01:00
parent bf64a59d0d
commit 8117dfefab
55 changed files with 375 additions and 399 deletions

View File

@@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 17)
file(GLOB_RECURSE TEST_CASE_SOURCES t*/*.cc)
file(GLOB_RECURSE TEST_CASE_CONFIGS t*/.clang-uml)
file(GLOB_RECURSE TEST_CONFIG_YMLS test_config_data/*.yml)
set(CLANG_UML_TEST_UTIL_SRC
test_util.cc
@@ -31,6 +32,14 @@ set(CLANG_UML_TEST_DECORATOR_PARSER_HEADER
catch.h
)
set(CLANG_UML_TEST_CONFIG_SRC
test_config.cc
${TEST_UTIL_SOURCES}
)
set(CLANG_UML_TEST_CONFIG_HEADER
catch.h
)
add_executable(test_util
${CLANG_UML_TEST_UTIL_SRC}
${CLANG_UML_TEST_UTIL_HEADER})
@@ -51,6 +60,16 @@ target_link_libraries(test_decorator_parser
${YAML_CPP_LIBRARIES}
spdlog::spdlog clang-umllib cppast)
add_executable(test_config
${CLANG_UML_TEST_CONFIG_SRC}
${CLANG_UML_TEST_CONFIG_HEADER})
target_link_libraries(test_config
PRIVATE
${LIBCLANG_LIBRARIES}
${YAML_CPP_LIBRARIES}
spdlog::spdlog clang-umllib cppast)
add_executable(test_cases
${CLANG_UML_TEST_CASES_SRC}
${CLANG_UML_TEST_CASES_HEADER})
@@ -73,6 +92,19 @@ foreach(TEST_CASE_CONFIG ${TEST_CASE_CONFIGS})
COPYONLY)
endforeach()
foreach(TEST_CONFIG_YML ${TEST_CONFIG_YMLS})
file(RELATIVE_PATH
TEST_CONFIG_YML_RELATIVE
${CMAKE_CURRENT_SOURCE_DIR}
${TEST_CONFIG_YML})
message(${TEST_CONFIG_YML_RELATIVE})
configure_file(
${TEST_CONFIG_YML_RELATIVE}
${TEST_CONFIG_YML_RELATIVE}
COPYONLY)
endforeach()
add_test(NAME test_util COMMAND test_util)
add_test(NAME test_decorator_parser COMMAND test_decorator_parser)
add_test(NAME test_config COMMAND test_config)
add_test(NAME test_cases COMMAND test_cases)

View File

@@ -24,11 +24,11 @@ TEST_CASE("t00002", "[test-case][class]")
REQUIRE(diagram->name == "t00002_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
REQUIRE(diagram->include().namespaces.size() == 1);
REQUIRE_THAT(diagram->include().namespaces,
VectorContains(std::string{"clanguml::t00002"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->exclude().namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00002::A"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -56,5 +56,5 @@ TEST_CASE("t00002", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("D"), _A("A"), "-as"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,11 +24,11 @@ TEST_CASE("t00003", "[test-case][class]")
REQUIRE(diagram->name == "t00003_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
REQUIRE(diagram->include().namespaces.size() == 1);
REQUIRE_THAT(diagram->include().namespaces,
VectorContains(std::string{"clanguml::t00003"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->exclude().namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00003::A"));
@@ -64,5 +64,5 @@ TEST_CASE("t00003", "[test-case][class]")
REQUIRE_THAT(puml, (IsField<Private>("c", "int")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,11 +24,11 @@ TEST_CASE("t00004", "[test-case][class]")
REQUIRE(diagram->name == "t00004_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
REQUIRE(diagram->include().namespaces.size() == 1);
REQUIRE_THAT(diagram->include().namespaces,
VectorContains(std::string{"clanguml::t00004"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->exclude().namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00004::A"));
REQUIRE(diagram->should_include("clanguml::t00004::A::AA"));
@@ -54,5 +54,5 @@ TEST_CASE("t00004", "[test-case][class]")
REQUIRE_THAT(puml, (IsMethod<Public, Const>("foo2")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00005", "[test-case][class]")
REQUIRE(diagram->name == "t00005_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00005"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00005::A"));
REQUIRE(diagram->should_include("clanguml::t00005::B"));
REQUIRE(diagram->should_include("clanguml::t00005::C"));
@@ -74,5 +68,5 @@ TEST_CASE("t00005", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "+k"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00006", "[test-case][class]")
REQUIRE(diagram->name == "t00006_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00006"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00006::A"));
REQUIRE(diagram->should_include("clanguml::t00006::B"));
REQUIRE(diagram->should_include("clanguml::t00006::C"));
@@ -83,5 +77,5 @@ TEST_CASE("t00006", "[test-case][class]")
REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("NNN"), "+ns"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00007", "[test-case][class]")
REQUIRE(diagram->name == "t00007_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00007"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00007::A"));
REQUIRE(diagram->should_include("clanguml::t00007::B"));
REQUIRE(diagram->should_include("clanguml::t00007::C"));
@@ -55,5 +49,5 @@ TEST_CASE("t00007", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("C"), "+c"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00008", "[test-case][class]")
REQUIRE(diagram->name == "t00008_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00008"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00008::A"));
REQUIRE(diagram->should_include("clanguml::t00008::B"));
@@ -58,5 +52,5 @@ TEST_CASE("t00008", "[test-case][class]")
REQUIRE_THAT(puml, (IsField<Public>("comparator", "CMP")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00009", "[test-case][class]")
REQUIRE(diagram->name == "t00009_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00009"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00009::A"));
REQUIRE(diagram->should_include("clanguml::t00009::B"));
@@ -61,5 +55,5 @@ TEST_CASE("t00009", "[test-case][class]")
IsAssociation(_A("B"), _A("A<std::vector<std::string>>"), "+avector"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00010", "[test-case][class]")
REQUIRE(diagram->name == "t00010_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00010"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00010::A"));
REQUIRE(diagram->should_include("clanguml::t00010::B"));
@@ -56,5 +50,5 @@ TEST_CASE("t00010", "[test-case][class]")
REQUIRE_THAT(puml, IsAggregation(_A("C"), _A("B<int>"), "+aintstring"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00011", "[test-case][class]")
REQUIRE(diagram->name == "t00011_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00011"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00011::A"));
REQUIRE(diagram->should_include("clanguml::t00011::B"));
@@ -50,5 +44,5 @@ TEST_CASE("t00011", "[test-case][class]")
// REQUIRE_THAT(puml, IsFriend(_A("A"), _A("D<T>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00012", "[test-case][class]")
REQUIRE(diagram->name == "t00012_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00012"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00012::A"));
REQUIRE(diagram->should_include("clanguml::t00012::B"));
@@ -53,5 +47,5 @@ TEST_CASE("t00012", "[test-case][class]")
"std::vector<std::vector<std::vector<std::string>>>>,3,3,3>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,11 +24,6 @@ TEST_CASE("t00013", "[test-case][class]")
REQUIRE(diagram->name == "t00013_class");
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00013"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00013::A"));
REQUIRE(diagram->should_include("clanguml::t00013::B"));
REQUIRE(diagram->should_include("ABCD::F"));
@@ -63,5 +58,5 @@ TEST_CASE("t00013", "[test-case][class]")
REQUIRE_THAT(puml, IsDependency(_A("R"), _A("F<int>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,11 +24,6 @@ TEST_CASE("t00014", "[test-case][class]")
REQUIRE(diagram->name == "t00014_class");
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00014"}));
REQUIRE(diagram->exclude.namespaces.size() == 2);
REQUIRE(diagram->should_include("clanguml::t00014::S"));
auto model = generate_class_diagram(db, diagram);
@@ -58,5 +53,5 @@ TEST_CASE("t00014", "[test-case][class]")
REQUIRE_THAT(puml, IsAggregation(_A("R"), _A("B"), "+bs2"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00015", "[test-case][class]")
REQUIRE(diagram->name == "t00015_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00015"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00015::ns1::ns2::A"));
auto model = generate_class_diagram(db, diagram);
@@ -48,5 +42,5 @@ TEST_CASE("t00015", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("ns3::B")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00016", "[test-case][class]")
REQUIRE(diagram->name == "t00016_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00016"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00016::is_numeric"));
auto model = generate_class_diagram(db, diagram);
@@ -57,5 +51,5 @@ TEST_CASE("t00016", "[test-case][class]")
IsInstantiation(_A("is_numeric<>"), _A("is_numeric<unsigned char>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00017", "[test-case][class]")
REQUIRE(diagram->name == "t00017_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00017"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00017::A"));
REQUIRE(diagram->should_include("clanguml::t00017::B"));
REQUIRE(diagram->should_include("clanguml::t00017::C"));
@@ -78,5 +72,5 @@ TEST_CASE("t00017", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("K"), "-k"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00018", "[test-case][class]")
REQUIRE(diagram->name == "t00018_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00018"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00018::widget"));
auto model = generate_class_diagram(db, diagram);
@@ -49,5 +43,5 @@ TEST_CASE("t00018", "[test-case][class]")
REQUIRE_THAT(puml, IsDependency(_A("impl::widget"), _A("widget")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00019", "[test-case][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"));
@@ -56,5 +50,5 @@ TEST_CASE("t00019", "[test-case][class]")
_A("Layer2<Layer3<Base>>"), _A("Layer1<Layer2<Layer3<Base>>>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00020", "[test-case][class]")
REQUIRE(diagram->name == "t00020_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00020"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00020::ProductA"));
auto model = generate_class_diagram(db, diagram);
@@ -52,5 +46,5 @@ TEST_CASE("t00020", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("Factory2")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00021", "[test-case][class]")
REQUIRE(diagram->name == "t00021_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00021"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00021::Visitor"));
auto model = generate_class_diagram(db, diagram);
@@ -50,5 +44,5 @@ TEST_CASE("t00021", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("Visitor3")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00022", "[test-case][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);
@@ -46,5 +40,5 @@ TEST_CASE("t00022", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("A2")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00023", "[test-case][class]")
REQUIRE(diagram->name == "t00023_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00023"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00023::Visitor"));
auto model = generate_class_diagram(db, diagram);
@@ -46,5 +40,5 @@ TEST_CASE("t00023", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("StrategyB")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00024", "[test-case][class]")
REQUIRE(diagram->name == "t00024_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00024"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00024::A"));
auto model = generate_class_diagram(db, diagram);
@@ -50,5 +44,5 @@ TEST_CASE("t00024", "[test-case][class]")
REQUIRE_THAT(puml, IsBaseClass(_A("Target"), _A("Proxy")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00025", "[test-case][class]")
REQUIRE(diagram->name == "t00025_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00025"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00025::A"));
auto model = generate_class_diagram(db, diagram);
@@ -56,5 +50,5 @@ TEST_CASE("t00025", "[test-case][class]")
puml, !IsAggregation(_A("ProxyHolder"), _A("Target2"), "+proxy2"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00026", "[test-case][class]")
REQUIRE(diagram->name == "t00026_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00026"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00026::A"));
auto model = generate_class_diagram(db, diagram);
@@ -50,5 +44,5 @@ TEST_CASE("t00026", "[test-case][class]")
IsInstantiation(_A("Caretaker<T>"), _A("Caretaker<std::string>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00027", "[test-case][class]")
REQUIRE(diagram->name == "t00027_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00027"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00027::A"));
auto model = generate_class_diagram(db, diagram);
@@ -62,5 +56,5 @@ TEST_CASE("t00027", "[test-case][class]")
puml, IsAggregation(_A("Window"), _A("Text<Color>"), "+description"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00028", "[test-case][class]")
REQUIRE(diagram->name == "t00028_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00028"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00028::A"));
auto model = generate_class_diagram(db, diagram);
@@ -63,5 +57,5 @@ note.)";
REQUIRE_THAT(puml, HasNote(_A("R"), "right", "R class note."));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00029", "[test-case][class]")
REQUIRE(diagram->name == "t00029_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00029"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00029::A"));
auto model = generate_class_diagram(db, diagram);
@@ -61,5 +55,5 @@ TEST_CASE("t00029", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("G4"), "+g4"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00030", "[test-case][class]")
REQUIRE(diagram->name == "t00030_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00030"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00030::A"));
auto model = generate_class_diagram(db, diagram);
@@ -53,5 +47,5 @@ TEST_CASE("t00030", "[test-case][class]")
REQUIRE_THAT(puml, IsAssociation(_A("R"), _A("D"), "+ddd", "", "1"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00031", "[test-case][class]")
REQUIRE(diagram->name == "t00031_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00031"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00031::A"));
auto model = generate_class_diagram(db, diagram);
@@ -61,5 +55,5 @@ TEST_CASE("t00031", "[test-case][class]")
_A("R"), _A("D"), "+ddd", "#blue,plain,thickness=16"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00032", "[test-case][class]")
REQUIRE(diagram->name == "t00032_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00032"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00032::A"));
auto model = generate_class_diagram(db, diagram);
@@ -59,5 +53,5 @@ TEST_CASE("t00032", "[test-case][class]")
REQUIRE_THAT(puml, IsBaseClass(_A("C"), _A("Overload<TBase,int,A,B,C>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00033", "[test-case][class]")
REQUIRE(diagram->name == "t00033_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00033"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00033::A"));
auto model = generate_class_diagram(db, diagram);
@@ -62,5 +56,5 @@ TEST_CASE("t00033", "[test-case][class]")
puml, IsInstantiation(_A("A<T>"), _A("A<B<std::unique_ptr<C<D>>>>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,12 +24,6 @@ TEST_CASE("t00034", "[test-case][class]")
REQUIRE(diagram->name == "t00034_class");
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t00034"}));
REQUIRE(diagram->exclude.namespaces.size() == 0);
REQUIRE(diagram->should_include("clanguml::t00034::A"));
auto model = generate_class_diagram(db, diagram);
@@ -54,5 +48,5 @@ TEST_CASE("t00034", "[test-case][class]")
puml, IsInstantiation(_A("drop_void<T>"), _A("drop_void<Void>")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,14 +22,6 @@ TEST_CASE("t20001", "[test-case][sequence]")
auto diagram = config.diagrams["t20001_sequence"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t20001"}));
REQUIRE(diagram->exclude.namespaces.size() == 1);
REQUIRE_THAT(diagram->exclude.namespaces,
VectorContains(std::string{"clanguml::t20001::detail"}));
REQUIRE(diagram->should_include("clanguml::t20001::A"));
REQUIRE(!diagram->should_include("clanguml::t20001::detail::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -52,5 +44,5 @@ TEST_CASE("t20001", "[test-case][sequence]")
REQUIRE_THAT(puml, !HasCall("A", "detail::C", "add"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,10 +22,6 @@ TEST_CASE("t20002", "[test-case][sequence]")
auto diagram = config.diagrams["t20002_sequence"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t20002"}));
REQUIRE(diagram->name == "t20002_sequence");
auto model = generate_sequence_diagram(db, diagram);
@@ -42,5 +38,5 @@ TEST_CASE("t20002", "[test-case][sequence]")
REQUIRE_THAT(puml, HasFunctionCall("m3", "m4"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,14 +22,6 @@ TEST_CASE("t30001", "[test-case][package]")
auto diagram = config.diagrams["t30001_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30001"}));
REQUIRE(diagram->exclude.namespaces.size() == 1);
REQUIRE_THAT(diagram->exclude.namespaces,
VectorContains(std::string{"clanguml::t30001::detail"}));
REQUIRE(diagram->should_include("clanguml::t30001::A"));
REQUIRE(!diagram->should_include("clanguml::t30001::detail::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -51,5 +43,5 @@ TEST_CASE("t30001", "[test-case][package]")
REQUIRE_THAT(puml, IsPackage("AAA"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,14 +22,6 @@ TEST_CASE("t30002", "[test-case][package]")
auto diagram = config.diagrams["t30002_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30002"}));
REQUIRE(diagram->exclude.namespaces.size() == 1);
REQUIRE_THAT(diagram->exclude.namespaces,
VectorContains(std::string{"clanguml::t30002::detail"}));
REQUIRE(diagram->should_include("clanguml::t30002::A"));
REQUIRE(!diagram->should_include("clanguml::t30002::detail::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -74,5 +66,5 @@ TEST_CASE("t30002", "[test-case][package]")
REQUIRE_THAT(puml, IsDependency(_A("BBB"), _A("A13")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,10 +22,6 @@ TEST_CASE("t30003", "[test-case][package]")
auto diagram = config.diagrams["t30003_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30003"}));
REQUIRE(diagram->should_include("clanguml::t30003::A"));
REQUIRE(diagram->should_include("clanguml::t30003::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -52,5 +48,5 @@ TEST_CASE("t30003", "[test-case][package]")
REQUIRE_THAT(puml, IsDeprecated(_A("ns3")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,10 +22,6 @@ TEST_CASE("t30004", "[test-case][package]")
auto diagram = config.diagrams["t30004_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30004"}));
REQUIRE(diagram->should_include("clanguml::t30004::A"));
REQUIRE(diagram->should_include("clanguml::t30004::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -49,5 +45,5 @@ TEST_CASE("t30004", "[test-case][package]")
REQUIRE_THAT(puml, IsPackage("EEE"));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,10 +22,6 @@ TEST_CASE("t30005", "[test-case][package]")
auto diagram = config.diagrams["t30005_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30005"}));
REQUIRE(diagram->should_include("clanguml::t30005::A"));
REQUIRE(diagram->should_include("clanguml::t30005::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -50,5 +46,5 @@ TEST_CASE("t30005", "[test-case][package]")
REQUIRE_THAT(puml, IsDependency(_A("CCC"), _A("AAA")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -22,10 +22,6 @@ TEST_CASE("t30006", "[test-case][package]")
auto diagram = config.diagrams["t30006_package"];
REQUIRE(diagram->include.namespaces.size() == 1);
REQUIRE_THAT(diagram->include.namespaces,
VectorContains(std::string{"clanguml::t30006"}));
REQUIRE(diagram->should_include("clanguml::t30006::A"));
REQUIRE(diagram->should_include("clanguml::t30006::C"));
REQUIRE(!diagram->should_include("std::vector"));
@@ -50,5 +46,5 @@ TEST_CASE("t30006", "[test-case][package]")
REQUIRE_THAT(puml, IsDependency(_A("A"), _A("C")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -36,5 +36,5 @@ TEST_CASE("t90000", "[test-case][config]")
REQUIRE_THAT(puml, IsClass(_A("Boo")));
save_puml(
"./" + config.output_directory + "/" + diagram->name + ".puml", puml);
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);
}

View File

@@ -24,7 +24,7 @@ load_config(const std::string &test_name)
{
auto config = clanguml::config::load(test_name + "/.clang-uml");
cppast::libclang_compilation_database db(config.compilation_database_dir);
cppast::libclang_compilation_database db(config.compilation_database_dir());
return std::make_pair(std::move(config), std::move(db));
}
@@ -35,7 +35,7 @@ std::pair<clanguml::config::config, compilation_database> load_config2(
auto config = clanguml::config::load(test_name + "/.clang-uml");
auto db = clanguml::cx::compilation_database::from_directory(
config.compilation_database_dir);
config.compilation_database_dir());
return std::make_pair(std::move(config), std::move(db));
}

54
tests/test_config.cc Normal file
View File

@@ -0,0 +1,54 @@
/**
* tests/test_config.cc
*
* Copyright (c) 2021-2022 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.
*/
#define CATCH_CONFIG_MAIN
#include "catch.h"
#include "config/config.h"
#include "util/util.h"
TEST_CASE("Test config simple", "[unit-test]")
{
auto cfg = clanguml::config::load("./test_config_data/simple.yml");
CHECK(cfg.diagrams.size() == 1);
auto &diagram = *cfg.diagrams["class_main"];
CHECK(diagram.type() == clanguml::config::diagram_type::class_diagram);
CHECK(diagram.glob().size() == 2);
CHECK(clanguml::util::contains(diagram.using_namespace(), "clanguml"));
}
TEST_CASE("Test config inherited", "[unit-test]")
{
auto cfg = clanguml::config::load("./test_config_data/inherited.yml");
CHECK(cfg.diagrams.size() == 2);
auto &def = *cfg.diagrams["class_default"];
CHECK(def.type() == clanguml::config::diagram_type::class_diagram);
CHECK(def.glob().size() == 2);
CHECK(def.glob()[0] == "src/**/*.cc");
CHECK(def.glob()[1] == "src/**/*.h");
CHECK(clanguml::util::contains(def.using_namespace(), "clanguml"));
auto &cus = *cfg.diagrams["class_custom"];
CHECK(cus.type() == clanguml::config::diagram_type::class_diagram);
CHECK(cus.glob().size() == 1);
CHECK(cus.glob()[0] == "src/main.cc");
CHECK(clanguml::util::contains(cus.using_namespace(), "clanguml::ns1"));
CHECK(cus.include_relations_also_as_members());
}

View File

@@ -0,0 +1,24 @@
compilation_database_dir: debug
output_directory: output
include_relations_also_as_members: false
using_namespace:
- clanguml
include:
namespaces:
- clanguml
- ABCD
glob:
- src/**/*.cc
- src/**/*.h
diagrams:
class_default:
type: class
class_custom:
type: class
using_namespace:
- clanguml::ns1
include_relations_also_as_members: true
glob:
- src/main.cc

View File

@@ -0,0 +1,14 @@
compilation_database_dir: debug
output_directory: output
diagrams:
class_main:
type: class
glob:
- src/**/*.cc
- src/**/*.h
using_namespace:
- clanguml
include:
namespaces:
- clanguml
- ABCD