diff --git a/docs/test_cases.md b/docs/test_cases.md index b762f598..9b5a3647 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -36,6 +36,7 @@ * [t00035](./test_cases/t00035.md) - PlantUML class diagram layout hints test case * [t00036](./test_cases/t00036.md) - Class diagram with namespaces generated as packages * [t00037](./test_cases/t00037.md) - Anonymous nested struct test case + * [t00038](./test_cases/t00038.md) - Template instantiation with unexposed nested templates ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram test case * [t20002](./test_cases/t20002.md) - Free function sequence diagram test case diff --git a/docs/test_cases/t00038.md b/docs/test_cases/t00038.md new file mode 100644 index 00000000..7e692ca2 --- /dev/null +++ b/docs/test_cases/t00038.md @@ -0,0 +1,65 @@ +# t00038 - Template instantiation with unexposed nested templates +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00038_class: + type: class + generate_packages: true + glob: + - ../../tests/t00038/t00038.cc + using_namespace: + - clanguml::t00038 + include: + namespaces: + - clanguml::t00038 +``` +## Source code +File t00038.cc +```cpp +#include +#include +#include +#include + +namespace clanguml { +namespace t00038 { + +enum class property_t { property_a, property_b, property_c }; + +struct A { +}; +struct B { +}; +struct C { +}; + +struct key_t { + std::string key; +}; + +template struct map; + +template <> +struct map> : A { +}; + +template <> +struct map< + std::vector>> + : B { +}; + +template <> +struct map>>> + : C { +}; + +} // namespace t00038 +} // namespace clanguml + +``` +## Generated UML diagrams +![t00038_class](./t00038_class.svg "Template instantiation with unexposed nested templates") diff --git a/docs/test_cases/t00038_class.svg b/docs/test_cases/t00038_class.svg new file mode 100644 index 00000000..d98ca2dd --- /dev/null +++ b/docs/test_cases/t00038_class.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + property_t + + property_a + property_b + property_c + + + + + A + + + + + + B + + + + + + C + + + + + + key_t + + + key : std::string + + + + + map + + T + + + + + + map + + std::integral_constant<property_t,property_t::property_a> + + + + + + map + + std::vector<std::integral_constant<property_t,property_t::property_b>> + + + + + + map + + std::map<key_t,std::vector<std::integral_constant<property_t,property_t::property_c>>> + + + + + + + + + + + + + + + + diff --git a/docs/test_cases/t30001_package.svg b/docs/test_cases/t30001_package.svg index fdce9ac3..5a619080 100644 --- a/docs/test_cases/t30001_package.svg +++ b/docs/test_cases/t30001_package.svg @@ -1,6 +1,6 @@ - + @@ -8,39 +8,39 @@ - + A - + AA - + B - + AA - + AAA - + BBB - + BB - + AAA - + BBB - + BB - + A AAA note... - + diff --git a/docs/test_cases/t30002_package.svg b/docs/test_cases/t30002_package.svg index f6c1be0b..edba7654 100644 --- a/docs/test_cases/t30002_package.svg +++ b/docs/test_cases/t30002_package.svg @@ -1,6 +1,6 @@ - + @@ -8,85 +8,85 @@ - + A - + AA - + B - + BB - + A1 - + A2 - + A3 - + A4 - + A5 - + A6 - + A7 - + A8 - + A9 - + A10 - + A11 - + A12 - + A13 - + BBB - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/docs/test_cases/t30003_package.svg b/docs/test_cases/t30003_package.svg index 8651276a..80850b58 100644 --- a/docs/test_cases/t30003_package.svg +++ b/docs/test_cases/t30003_package.svg @@ -1,6 +1,6 @@ - + @@ -8,27 +8,27 @@ - + ns1 - + ns3 «deprecated» - + ns1 - + ns2_v1_0_0 - + ns2_v0_9_0 «deprecated» - + ns2 - + diff --git a/docs/test_cases/t30004_package.svg b/docs/test_cases/t30004_package.svg index 5dd0c78a..fa521c04 100644 --- a/docs/test_cases/t30004_package.svg +++ b/docs/test_cases/t30004_package.svg @@ -1,6 +1,6 @@ - + @@ -8,40 +8,40 @@ - + A - + Package AAA. - + Package BBB. - + CCCC package note. - + Another CCC note. - + We skipped DDD. - + AAA - + BBB - + CCC - + EEE - - - - - + + + + + diff --git a/docs/test_cases/t30005_package.svg b/docs/test_cases/t30005_package.svg index 026a4238..af71db87 100644 --- a/docs/test_cases/t30005_package.svg +++ b/docs/test_cases/t30005_package.svg @@ -1,6 +1,6 @@ - + @@ -8,36 +8,36 @@ - + A - + AA - + B - + BB - + C - + CC - + AAA - + BBB - + CCC - + - + diff --git a/docs/test_cases/t30006_package.svg b/docs/test_cases/t30006_package.svg index d2854297..9e9a5585 100644 --- a/docs/test_cases/t30006_package.svg +++ b/docs/test_cases/t30006_package.svg @@ -1,6 +1,6 @@ - + @@ -8,26 +8,26 @@ - + B - + A - + C - + Top A note. - + Bottom A note. - - - + + + - + diff --git a/docs/test_cases/t30007_package.svg b/docs/test_cases/t30007_package.svg index f216c56a..e86c10b7 100644 --- a/docs/test_cases/t30007_package.svg +++ b/docs/test_cases/t30007_package.svg @@ -1,6 +1,6 @@ - + @@ -8,29 +8,29 @@ - + A - + B - + AA - + C - + Compare layout with t30006. - + Bottom A note. - - - + + + - + diff --git a/tests/test_cases.yaml b/tests/test_cases.yaml index 6c93e7e4..d25f560b 100644 --- a/tests/test_cases.yaml +++ b/tests/test_cases.yaml @@ -108,6 +108,9 @@ test_cases: - name: t00037 title: Anonymous nested struct test case description: + - name: t00038 + title: Template instantiation with unexposed nested templates + description: Sequence diagrams: - name: t20001 title: Basic sequence diagram test case