Fixed handling of nested and anonymous classes

This commit is contained in:
Bartek Kryza
2022-09-04 18:12:54 +02:00
parent 4d4eb02e57
commit d887353c24
11 changed files with 102 additions and 20 deletions

View File

@@ -1,6 +1,11 @@
namespace clanguml {
namespace t00004 {
class B {
public:
enum AA { AA_1, AA_2, AA_3 };
};
class A {
public:
void foo() const { }
@@ -15,5 +20,6 @@ public:
void foo2() const { }
};
}
}

View File

@@ -41,12 +41,14 @@ TEST_CASE("t00004", "[test-case][class]")
REQUIRE_THAT(puml, StartsWith("@startuml"));
REQUIRE_THAT(puml, EndsWith("@enduml\n"));
REQUIRE_THAT(puml, IsClass(_A("A")));
REQUIRE_THAT(puml, IsClass(_A("AA")));
REQUIRE_THAT(puml, IsClass(_A("AAA")));
REQUIRE_THAT(puml, IsEnum(_A("Lights")));
REQUIRE_THAT(puml, IsInnerClass(_A("A"), _A("AA")));
REQUIRE_THAT(puml, IsInnerClass(_A("AA"), _A("AAA")));
REQUIRE_THAT(puml, IsInnerClass(_A("AA"), _A("Lights")));
REQUIRE_THAT(puml, IsClass(_A("A::AA")));
REQUIRE_THAT(puml, IsClass(_A("A::AA::AAA")));
REQUIRE_THAT(puml, IsEnum(_A("B::AA")));
REQUIRE_THAT(puml, IsEnum(_A("A::AA::Lights")));
REQUIRE_THAT(puml, IsInnerClass(_A("A"), _A("A::AA")));
REQUIRE_THAT(puml, IsInnerClass(_A("A::AA"), _A("A::AA::AAA")));
REQUIRE_THAT(puml, IsInnerClass(_A("A::AA"), _A("A::AA::Lights")));
REQUIRE_THAT(puml, (IsMethod<Public, Const>("foo")));
REQUIRE_THAT(puml, (IsMethod<Public, Const>("foo2")));

View File

@@ -8,6 +8,11 @@ struct ST {
double y;
double z;
} dimensions;
struct {
double c;
double h;
} units;
};
struct A {
@@ -17,6 +22,9 @@ struct A {
st.dimensions.x = 1;
st.dimensions.y = 1;
st.dimensions.z = 1;
st.units.c = 1;
st.units.h = 1;
}
ST st;

View File

@@ -37,7 +37,7 @@ TEST_CASE("t00037", "[test-case][class]")
REQUIRE_THAT(puml, IsClass(_A("ST")));
REQUIRE_THAT(puml, IsClass(_A("A")));
REQUIRE_THAT(puml, IsInnerClass(_A("ST"), _A("<<anonymous>>")));
REQUIRE_THAT(puml, IsClass(_A("ST::\\(anonymous_\\d+\\)")));
save_puml(
"./" + config.output_directory() + "/" + diagram->name + ".puml", puml);