Added regex support to namespaces filter

This commit is contained in:
Bartek Kryza
2023-06-06 21:31:50 +02:00
parent 399b7e1907
commit c7e61a586b
8 changed files with 154 additions and 28 deletions

View File

@@ -144,4 +144,62 @@ TEST_CASE("Test elements regexp filter", "[unit-test]")
c.set_name("ClassA");
CHECK(filter.should_include(c));
}
TEST_CASE("Test namespaces regexp filter", "[unit-test]")
{
using clanguml::class_diagram::model::class_method;
using clanguml::common::model::access_t;
using clanguml::common::model::diagram_filter;
using clanguml::common::model::namespace_;
using clanguml::common::model::package;
using clanguml::common::model::source_file;
using clanguml::class_diagram::model::class_;
auto cfg = clanguml::config::load("./test_config_data/filters.yml");
auto &config = *cfg.diagrams["regex_namespace_test"];
clanguml::class_diagram::model::diagram diagram;
diagram_filter filter(diagram, config);
class_ c{{}};
c.set_namespace(namespace_{"ns1::ns2"});
c.set_name("ClassA");
CHECK(filter.should_include(c));
c.set_namespace(namespace_{"ns1::ns2::detail"});
c.set_name("ClassAImpl");
CHECK(!filter.should_include(c));
c.set_namespace(namespace_{"ns1::interface"});
c.set_name("IClassA");
CHECK(filter.should_include(c));
CHECK(!filter.should_include(namespace_{"ns1"}));
CHECK(filter.should_include(namespace_{"ns1::ns2"}));
CHECK(!filter.should_include(namespace_{"ns1::ns2::detail"}));
CHECK(filter.should_include(namespace_{"ns1::interface"}));
package p{{}};
p.set_namespace({"ns1"});
p.set_name("ns2");
CHECK(filter.should_include(p));
p.set_namespace({"ns1::ns2"});
p.set_name("detail");
CHECK(!filter.should_include(p));
p.set_namespace({"ns1"});
p.set_name("interface");
CHECK(filter.should_include(p));
}