From ec6b66391fb6dcde2cb22e780bd048d97f499641 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sat, 31 Jul 2021 20:59:12 +0200 Subject: [PATCH] Updated test cases documentation --- docs/test_cases.md | 3 ++ docs/test_cases/t00029.md | 77 +++++++++++++++++++++++++++++++ docs/test_cases/t00029_class.png | Bin 0 -> 14391 bytes docs/test_cases/t00030.md | 58 +++++++++++++++++++++++ docs/test_cases/t00030_class.png | Bin 0 -> 11512 bytes docs/test_cases/t00031.md | 66 ++++++++++++++++++++++++++ docs/test_cases/t00031_class.png | Bin 0 -> 19421 bytes tests/test_cases.yaml | 9 ++++ 8 files changed, 213 insertions(+) create mode 100644 docs/test_cases/t00029.md create mode 100644 docs/test_cases/t00029_class.png create mode 100644 docs/test_cases/t00030.md create mode 100644 docs/test_cases/t00030_class.png create mode 100644 docs/test_cases/t00031.md create mode 100644 docs/test_cases/t00031_class.png diff --git a/docs/test_cases.md b/docs/test_cases.md index e1a3c974..8f06dcc2 100644 --- a/docs/test_cases.md +++ b/docs/test_cases.md @@ -27,6 +27,9 @@ * [t00026](./test_cases/t00026.md) - Template memento pattern * [t00027](./test_cases/t00027.md) - Template decorator pattern * [t00028](./test_cases/t00028.md) - PlantUML note decorator test case + * [t00029](./test_cases/t00029.md) - PlantUML skip decorator test case + * [t00030](./test_cases/t00030.md) - PlantUML relationship decorators test case + * [t00031](./test_cases/t00031.md) - PlantUML style decorator test case ## Sequence diagrams * [t20001](./test_cases/t20001.md) - Basic sequence diagram ## Configuration diagrams diff --git a/docs/test_cases/t00029.md b/docs/test_cases/t00029.md new file mode 100644 index 00000000..e3bc3974 --- /dev/null +++ b/docs/test_cases/t00029.md @@ -0,0 +1,77 @@ +# t00029 - PlantUML skip decorator test case +## Config +```yaml +compilation_database_dir: .. +output_directory: puml +diagrams: + t00029_class: + type: class + glob: + - ../../tests/t00029/t00029.cc + using_namespace: + - clanguml::t00029 + include: + namespaces: + - clanguml::t00029 + +``` +## Source code +File t00029.cc +```cpp +#include +#include + +namespace clanguml { +namespace t00029 { + +class A { +}; + +/// \uml{skip} +class B { +}; + +template class C { + T param; +}; + +/// @uml{skip:t00029_class} +template class D { + T param; +}; + +enum class E { one, two, three }; + +/// \uml{skip} +enum class F { red, green, blue }; + +class G1 { +}; + +class G2 { +}; + +class G3 { +}; + +class G4 { +}; + +struct R { + G1 g1; + + /// \uml{skip} + G2 g2; + + /// \uml{skiprelationship} + G3 &g3; + + std::shared_ptr g4; +}; + +} // namespace t00029 +} // namespace clanguml + +``` +## Generated UML diagrams +![t00029_class](./t00029_class.png "PlantUML skip decorator test case") diff --git a/docs/test_cases/t00029_class.png b/docs/test_cases/t00029_class.png new file mode 100644 index 0000000000000000000000000000000000000000..558f2fbff2965fae53ff0b90ce044000c42d7802 GIT binary patch literal 14391 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 yQDHHH9tp_=xa4wIcI^$s{s*`J<87 +#include + +namespace clanguml { +namespace t00030 { + +class A { +}; + +class B { +}; + +class C { +}; + +class D { +}; + +struct R { + /// @uml{association[]} + A aaa; + + /// @uml{composition[0..1:1..*]} + std::vector bbb; + + /// @uml{aggregation[0..1:1..5]} + std::vector ccc; + + /// @uml{association[:1]} + D ddd; +}; + +} // namespace t00030 +} // namespace clanguml + +``` +## Generated UML diagrams +![t00030_class](./t00030_class.png "PlantUML relationship decorators test case") diff --git a/docs/test_cases/t00030_class.png b/docs/test_cases/t00030_class.png new file mode 100644 index 0000000000000000000000000000000000000000..5d84d8037034215f303a47f298674ed82c04d48b GIT binary patch literal 11512 zcmaiacRZYL(=Q3D2Z^$*F424My(C2MeF?I9CwlKSdX3&YA!=9zA!PMV^ys1o;oS0j zp7(j*b3W&sKd_&5Uo&&f^_}m`+}A{^D$Cq7wDWi^rgiHl|K0$v3{5FHe z%L9KHU1fD$-#9pW+FDq;BFS6WTR5A#T9{Lrc~Ze#T^)tk*&S_7?OomMY}wv8*x_>s zk^xextu%FA|NT7@G9cz%wp*f+!#oE;*b(b5$~d1X+_{E8SE!PfB8sqsX z{`qIe75Y!Q%85l9PqLgdOLRXR_88>HEHyh6cHL>mU*?!&ihLG1Il{L=s>aX6L)do!s(?Z_ATu>_J zFS}1os_S-HY!8x^`HaMyzsS+9XVr#;#5DFwMpE;g@qrP>I~*N|a?|sR*(mMu9Bs3m z0&9AF8}#D&f&&#THG+EWv9)`fXriX37pX0ZiCK&L)X^^_X(Drq&}kwP6lmU`Uw4_i z3JJQTwYE0qWSxo~x#YI42y(kDdvE2qjDBn7=KGF;j*b$HLrO(O^#ivLih}Ye2pkh2 zA%Pc+kB5$K#_{M8vLv>g1Qk`)2vpX8+g#=a-r8UReJjju4cCSnJekz9 zTKU#A2h_e*&q=Ew8G%)6xBL=242>aJGH1s%GNk2LvM30Qjf)q&`f>=GpLN;S-%t1A zMR8G4QEBPhw{HuZqNyX`=*9FF98(oa`qg|iG&F2%Pef8PG9sth!l*z=$coSGDbJ&_ z>k%_fRTUW;bNSPgUl-u4`<1_Sf^n0Rvt>^W$Qgslb=yXVhZPIQ0tWKPgXOTRjj$!L z={Oz2$q=q2h5H*7nVW~cuyBtn$=p-@s}PF_2H`d@4+>wkQ+jV%8ybtcKZ?_b3!iXB zKnLJ6LJbX#vH34}ebB`Ej{?+|CG8EHs^?qhP$uaRO#QisBwubqV7_M~ZO*xMA z($Z3e;vhL}uSnQ|8Q?uD^g|)8Gexaj6<@O{TaEk}EotR0$t1<7r?XiNkDdmbJ~qU5 z_qw2QTlwyjc&o-vVwNcWj>UFY2!1H(zh>fkCi8txS;=Raw?ZOWsN)WNI=@cbx4zO>e z*_ndyR*0L)tZbNzyHn`B2V+A9SD++g3L^%E_}f)?zN{9J^KLfmD;K@10!LpAQWvHg zq#KY^$mN&BcE2pMB-N2yQ*(1$e~GH~I(IhTeoq()uM51zNfq$VIQkTgw{YgZqexiNu($>#RNL*VfRpF=1 zRr-(g+f3m`0}k%C2>H$q!H>|hlWGI_NG5O4d$4ep4}fNz4Trj8kAWNV<nCPu|RqlJI)+Y;w}g&iM$n z_YloyeaZYs?nDY*$T`@WguIwcoh0sE@s0CPAUCOU4j^K9#~arHg- z@48ERx|I(0HB~U!ZeAPf|JkB-_WfPg6I#laZMUu)6yT zw9PqQQkV$g-dDfWb!80A*rf#BwT;z|I1XA>ACBV(o1(;E%i;HHnl6cB9t!b!{knYr z*&ig!*lm0F-k5q4)I7OO`}h-SyYlU{lj z>7xCpjwvH<^CSSmP^&s76~Iaf>@ZpYkI0$dE->}O zKakk<>sTRNy6pKh$*f7Dd;lXMbAfu_;|_wci67|c{}j~%-XDCQ!^g*GYT8wwR6+Hi zg$0avaFdQjPqLzKQh<#PG)dQT3pvXNUgqU9Wt68ay13aS@1pu!*0xr-DjU}B5XQO;)dAO)zwcv=Gxp94d zTB1xY?VrOpV%HmXG&@&8@W2cB!A@ks2TSd3PH%3uMj*BNyur;lmsCk!!Etd1g@yj5 zT|Hbf|9N;vz(n>rLB@lc7C8FmtN-&DQX#L8QZNoBml;Qmi(WiHZU!3GY{_6R=(*T1 zB3`C7e3;`QlqDRQ0k{({*oi*gpoBjq%|jvo>i3imq~R3&5M3Ph9BgSjtGarf*I9D0 zyIq&d3;gyd=@1#dFHatIcJhDz<8C0_PMRb9N$i~?Yf2KxC$t*QXF6Qx>qYymT5UKZ zLk$Nq?SI9Qh}rYV$M=kZiI&!EvdqtIZ`$1v=5c-I$8s>c!sfQ41R@*imHflsU>Y^YXe1!&z}Vm=DyWFlvP-59JEG!eo8j zTy1gZUMp)+1IUuY?*ApnO~$<9FMjYf>6v2M-M~~+SF0o&3PeW!-dNRfYlv_~MT|tj zA$An$BJb0;m_|Xj-E>|XOSNI~KRh<`Jp8%=c85#t*K>^%l9C2H?Xz$Cu?_2>Cjc7H z+6F01P3i`|M0W*byMkt^W>ZE}vmlNB_nFkvUV$jHZkm%6LiDloO*S7yTGOJWL4%+S zQ$pP_gb7;2KL?%7gc|-*dzw=>K*jr}Z41=ucz63s)XVjHE9=+ls_;*$Q^#79t|y%q zmf0gk&%f-|cIj&p08mE5+8#~mG$P6ryLK#nOD&B-DIRB8GrY)Er0yLe0)$B+x2j}R z5`BDtEv@`Ts4~>=&Z;vjh{$%m|2G26r9pkV+ItTH0-~zslHKuN5LLdIvVj~*#)T;7 zg%9-Litk^~z3nZ3xrq(hU-;CXHsg;=t}jnHjWAp6goK%|!#J+YNn*L0**>P@6(U}nIRe!SKt=j(Z0@Q?svz%kxfpryurThUHQHc7T@F<)Ef2Fj0u zh?Ga%s&KD!>xsvL711y4=8E8&73ZSf?#LBWkTUdiB6Oqng-_By*~+pOx@Duq!imC+ z#}E`5Ml$9mPzsgrx!F150cO%i?>}gMwT1ua8|(C@-(@xruuUM*4kUaka_6CM!ysj+;ZZs}ZHz`E1VJsj(&-dFX$7 z`IljsENo(mvJ|3G*Jl%^2)riyKSCe*G>=Df5&|EuR2u&w^fKC_01{^i2ro=!Q1*!z zJ9>VoVV56;Xm{gpG=%&4;S!EejV2kF1fRQ0RKj1rN{?I6l9BrLkU(M}F{&RPD6kJI zkoY(H{_-f47sTxx2)}-CT^)BiH7!Y$fwJExpW`3;*7G_5d6vmrXaxbs76AVC+;h5OZ*N5sM1)3Ne60TA z!u5BB8KR7-iXm9l4sq;0vLz;J8v+AqbpMcEoJR4i%SDS!3*vg~ij)g1oAjTB0&{7; zGR~2XMJXe{Lb^=m-7OkhCp zGtYl9UOoL6=SYrn{<6k?!Ov|c{9jxT7w4y&!-A!Sy-LZpuf`wTB!^wH?oRk#)#t(P zbr5Yb{eR0`|MKCn4M%6M@1dmB-*l!6{#HWf?#@d_zHl^KpZ%|-@xzSc>f5LoKE>xk zy9FX)55MoD8pVHs3W*uE@ap8YZ$-LyNPqxtt&1{{Bdw2ZT5JPwRa3&3=MGkuxl(_%1iQ0h(r)vT?r?;p+>$R4hXH8fA79+EY55gKyx95@#$ zAoczQ0Ji*tFU&Z|9`M8v{KDHdM2NO8bcW9XaME1`8AKDTC{vQ$|;Ew-YJlAZ~h}U885|&{1latYfUGZ5-PR|*CO5s6b)N7ot zzCihK7+h}c1D^FG6K3-VObGzG9NfZZ3}N=mh5Ai9-Q#X(B`liLhn49K=oP9AeodOl z?E#O!G=ExK(1KOKT(ihe4wECqOn$rFy%dxWFngU{TQy_ydnq24O?80N-ob<$ltkJ)>7N$Jx2t)XH zkPUbrvf9{Pp|$|+lf)^iTiS;Y#`R+LA-s@%A81J1dyT<(gVmU_r;ikh3+Bafh(~ri zlcl@lT%v*D@wipBovNIS8X*;k*GYO@@_O-ROJpc5J zjIWbHj8)UnIUNn(thVgA2FlS;#7YDnXh?r^y(a4HKnQp8EUjeGTZYkXPUSXmc?CJIiHybs-B9A|p z2K#nC#uW0c^eY}u?(xgd?jxn}A7|Z3-&Q1b4A(BNBTnZFVfJE$RYZ*_CbeABb>cn#^Da!zD+Kj|J-r)O|n*2Tz<52>4zdE=Y{B3r3 z($ejP?QXXYN7UpJZg1pcfbu4Gh*%d);(k@}AH>E)gV7h}yrmzV3!&5W)QyCXchHWIW9%=sHp<6S@DC$nd0*^Hx`2^< z8HoSnJQnR;%(`SMF+dqslwIGczWE%Rt$6Z*+9^==>^c9&K_sJr7EEdiq|Yp{HdY>u zpuHAmBvImsGVb(3MMKjVu0ynY97XMbBq@jZ-EGYJ*{joGj4bSg&k%|olzyOCOi!tDQY=vsAH1ig5AtQt2Q)2$B?TlKul$4ecp(*hc0&~Ur& zO6?9};Fk^p#mPzMnXm1v2oKX65iu7GzzQZh*S2RhSRpNy)c(*n957CrYvr!CJETl1 zp{Lt+LWO6E&1N}uC^hwGck%zm)zWzBZsZv zKE^!07iK7A-k*)@e}u&oh4I0#g<^7*mWPSl{w^QK=?Z034;JJm`5AO$(@rYaJFXll z(T9%D|i#?6lV2!#WxtA_Xq+wpo1PETm;pDc2 zMq0e2)oGY|(w$YZ;w>Jw+Xi12k&sSizcixE6kNgWvMwSe=Fyw}@=g~2?k??inS}e_ zc77UX81mb_pLgu!_6k-XJzEqly%XXGUOztP6$HB17AG7CUzJJM=d3KqA9F01^)TS1 zPi7IV-y(jUNaWb9eC|}r;)^Ba&E&PwHeHP#>u7bNP;=+6g8z6+qW5yKB>_mSgv{C> zZRZ;F8ZA|&T!IZ9&CYs?Q0ea6?K%>UT}HA6pIJBBEi`xixq#S#UDi9K%MP?jfk5k1 zGKiKN_FtK%(4cYnFwFWbTt!#T&q7{)U~q8o_V$)u<-@lRqTcf#tx}>PJySSnNuN*i zx-waCCo__gCYGGLdn&XlnTWTE2jp2L`bFqMs{jkS1CVEchR^^0j(^4HjeP~#Vw56TrozIQ=(6!Z6LUG-zqp5$BGi% z59WljgXpOUz zAF}UJ0$VNzEnTR@tDiwyG=t=6Gl#Kc9MVUzB#oFDSRYLRFabz2z*syNr&v3V%(sCU zj+%b>@FAX3oQ;w3>(EevKNp}O&uXpbcBTF6NjIq0(33MUBMr#xsPwI%WP1&o*PX+vvLPK(+@6Pl7yq#{)b6N(FIfAO`Gq~`Kbtkm9 zTfcCOfPer1*BjvHOvTdPko`x*nH@(u38x;#Y+iIU7Hxr-?Xr;) z&!4HHgeIGrotw@=BfB4ykC0*WcK?o=P41Z1d3x^QI z5I^;+A>p>{R+%YLg3R(7Wo`9)hN~{{VgXEsTy04C#aQB*`D202TyQ5|>>9>ZPOsN% zxkBfj40eA47-q^dlP%`J98FT;aR5FG){xHwrKsB%PFvfiz7drmIbt zunhgu`rA(_eCRfmpE&iX<#vJ+MqnT#IFkB%)!-r_VkT^_(=?d4h<|n}_cHg|6_qrF zByYm`6ql9s3sIWi?VrVhYM7>_K$rPVBkG!Wgk&?e}Ti!1YMpe zRtgG5k?~VS9wzQ&BBD^Y+?X3rC9~ic_XPri?wq74ls#UrM-^Jam-xFmh|WLu-Iy5-Ap}SIA}#iort3u>wUtFee>umHfXyj?_!-x<%9Gya}2kU z&*@@&{dg2)g3o{uAWeC3GR}2t?DkcmFR!#W%pBCd=WlqoZj0Hr_EhT}cZ^|+!7tO~ zB827j2SJxT2}ht>ar6<7HU~umA));}oFk}bVD2+c4uauMVBCgD?)y6tPA_U#o3XNe z>R5PQ>rAujmrabL-#Zz1web>#SC4B;3DQO$+Y9mR?Q8K!E+_OuOG~Q~SGn!5k^7N= ziX>m{)`?w!&KmI=$m5F_m{>a}7{=tX7}yv4@Hao5UY$?>Q1}5jit815b@*vJFP zcwp~qeKb4E4NmM3_$he*WWLi(taomUG7lpx(A>|9TQu(+Y$+qgp-7&SVf^BD>AO>F zg5s*4T&hW<=_FP|hLky0Jyt0*E6zKYk5_4it(v_9l>Qw6w-yx83}WZji8!tGZEwa8 z;@a{Pjj+-?s$CkIG#8<-U4|`X!``9X{pBHl?bo z+v2jV3|xmjhhZ}kA7hANe^^MwGfoj!6K|ukt zvChZzExeZnKx8>Rmg6KFp$w~`v3{5X?RH|vkodc@@gM3q2-(FpH|8bT5Q~cFbbt1V z`=(Wxy-eaeP@qf33gn$N?_LWAFb zTjw6nW??N410u$)+7G6wTo%#>Bn``v%oNruxmB)BQc20J6`)Mgl4?)Kt96VwV}E(I zh3wADLA$R>=UQAmWKEf;CKzbs*STwGWR&lco|fjZIYdZLU+U1s+TNjd^)oX54^%q7 zFj>%^xkoZ5+hH@Gu$LIR7}TLFc(-?N40J`7GGw!wDBLw3dhC<#z8iw<(=2ZK)fb(Y z%avM{+6&EgY3wG-;`4kT_ui_Xv#YyzTHR!(>XGl+(z^LP+Y2T`jJn#>Gxrk&B0u~zU+SJQz@X&Gh8!zE8%`ZzPm^6CiC&s)-o)7 zAc^C|;Mjojt;y#|xoT7o-m!r&Q$g%PM;8YP*r!*Mkp8@tqMA7sG5_UfLr|o9%U&sR za7V5r*(JrUM#sUc`kAuff6`O(X4nA!3efTJTfbU8S&on|R>0!WM~@hcCuCZ}eM%edx_Eldo&`=>b5iaw=ie$nF~9;2oN8)k4kA z+RK#d-P`x4ZUX<$XSu?bRa4gjlO*b)G%t|H9at&pQ5ihyZuDz}!jDkgxc*>x;+BIc zJxM`2do`EhPH;ry&~E2yQjVtJkm}AKgvRnYNKC*vEXN!}Ry7JeVRb79Eh1EstfN2iHP0j zdAQQtWV!9$NH&kr07cf$2MSMJoy>0IP^|JGihoZ4Na(HlAkjZAdM6UZP#oE=p7cnv z=e#ahzRURM!OxNc6h5~giwKF1@kefCJej6-YvXMN}kJb_E-FT~S}O(Y+#cy-#eqxi|=J==qH_zc@Lm`B%r3UbH&xqrjQRqQ1+d zZ(dUMQ4^lj>1;?Pk+zcVTlr;QoC-#zvh9xS<@+K|_n7_*(joA)KVd8*Xz?(orJWqdK{J$2bONL)XPv+ zdAF^pCh28K2m}DH)4J6F-+FqGtOIit>Ol{46c$Us90eO?5`1W-cZFOfZ6CPr1FkE( zT@8X8I4}d&C%zHU7zh(Rx7Odobr|_T{9;YFv_BU+$rBiO6U?d zcN0j>(0%E;8|SmP{r;ed(S&@%cM^+H@|<+4yn#Zf*eosnRTp~bz0LgvNnY^b{w;FT z{>G$6d2(Ktvb1XPq&@)@?0!*|*2L7*R1FtV;{qr_CQpT%UJ)g=df{6nV_!)D{NzL# z{w}6a?iom9@(QtCRWfdIu5zX`cTu9q=kqT2G1|21@Xci{32@7oW8RS00SI>^mQb*9JuMbv$jw$#cp=lzC6>RlhueqKbx8faw10GyC$`R zPuJueZ1E*Lm^dNOR^Q%u_ReX@gRVb%%+G)PkDI`I|6ifZjd>=1J8f1I(KlXn0RM$( zR8-CedA?)WU+#RCV{W04lt=*d@Z&JPUf5|5>eK)wF1`sP4M)*{d@6c~n<>^u%q8(A zJxu~!JK~l~)81m-Y7%gzy8cE|m+I3V? z;hUSXGSP3&y)!jN!j2E8t6Uz(2?}nm^fya59R$%dpz>v>&)@%N4#nlJ!XfB8Wxwq%O+sJBony3Cz0oHI?Vbv`5lp z12mrqu*d$*G5CS1B3+;4b(E>_rZ*W9q5z%f&+@l>Ktr8db>zZhh~BuFqwY>O|cdE|@ zqV&wGL#F@GHn!FA{6oS7)e_~e0;#AGPPQ8bN4>s&xG_T5B|$(6LhoZ{eMp0z zAm%q#QgR=;tnM0)FX>@^M@VJyMJ zhSyY4ipMcE!Bb@`(60u3=5@xQ&l!MG8ZbM<5tTw{2~45*X*yi8&@b2`VmZebTERa2 z-|Kee~A+Nk*C%LFDiKd04Pnes60*mK+HnYbI9vk15COj`eWc**k55Je|Hx4b7>B( zX2`;o(L@7yI|MD%EAlwzJxG6IBbjtLuNHafyJ?yGqwz#9uXTmW!(ha@7?sF?&Duz zd8;TX$qqlq2Ao0t;EY4=ys>n6Vq#)<9BC|Q`iuapj(wJPpZEfJtrVB~3XE4AB=x#D z5&ev(3V1HBI668y*sVK_sUGPjNVLb#^e7`E1C|kjtj5I9r^ys4kzyL#j}4LwS^V)5 zc23jxXdmkW{U)^YVJOq$DM+R~4^N}~`6F6v8y-uJK{VqK!aS7>8X~Ako%}5OerH}D z5^E9%l>%yLy21 +#include + +namespace clanguml { +namespace t00031 { + +/// @uml{style[#back:lightgreen|yellow;header:blue/red]} +class A { +}; + +/// @uml{style[#line.dotted:blue]} +enum B { + one, + two, + three +}; + +/// @uml{style[#pink;line:red;line.bold;text:red]} +template class C { + T ttt; +}; + +class D { +}; + +struct R { + /// @uml{style[#red,dashed,thickness=2]} + A *aaa; + + /// @uml{composition} + /// @uml{style[#green,dashed,thickness=4]} + std::vector bbb; + + /// @uml{style[#blue,dotted,thickness=8]} + C ccc; + + /// @uml{style[#blue,plain,thickness=16]} + D *ddd; +}; + +} // namespace t00031 +} // namespace clanguml + +``` +## Generated UML diagrams +![t00031_class](./t00031_class.png "PlantUML style decorator test case") diff --git a/docs/test_cases/t00031_class.png b/docs/test_cases/t00031_class.png new file mode 100644 index 0000000000000000000000000000000000000000..bf83fe3e4137c6efc33bc194c9464aed061545ea GIT binary patch literal 19421 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