From 6854089a74ef0bcbd390b9f6b86da9208c450e9c Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 8 Jul 2025 12:55:17 +0200 Subject: [PATCH] Fixes --- ...96b62d68c8ec7934a2fa3ec9ca40acdc0e5e8cdaea | Bin 0 -> 5073 bytes ...fb94f58846bae6b6a72a5b09c8f483d918823963eb | Bin 0 -> 4306 bytes ...721590e096f24c1bd3697183dc6f0d2fb7d660c50f | Bin 0 -> 5662 bytes ...0bc284adddd4ef9a147aff2a7bdecbb7b3866e291d | Bin 0 -> 4536 bytes ...456dfd6008e9d5cd143d7669104915926248235e1b | Bin 0 -> 4456 bytes ...be0427ec0b1f47eced387d0906afb5f5ff7d918d06 | Bin 0 -> 4306 bytes ...1396400d6be6706c486279250c0744ca70adf7f003 | Bin 0 -> 3968 bytes ...ef4089991f1a3ecb16990bdc728a28fd72130e1587 | Bin 0 -> 4536 bytes ...847c864a4074a09a53dbd03558c8ac8418a40d36b8 | Bin 0 -> 3978 bytes ...5d19d64575ce1f76fbdb0f8ea1197bdca82a32e43e | Bin 0 -> 5073 bytes ...9dbf343ee24fe8c80aabbbd84983391ca8d03cfaa7 | Bin 0 -> 4456 bytes ...bc1002b566deb55d6629e0718c0ecf1bb7168d1939 | Bin 0 -> 4654 bytes ...0413a10aa43e3490042270a541c5d64d2186b3c07a | Bin 0 -> 6253 bytes ...abda81d993af06f200d4dd68e332ae8ea5faa3d8ac | Bin 0 -> 3978 bytes ...c5b5f5845ec59b2d20acd811bffdd3d070c5e794de | Bin 0 -> 4456 bytes ...4706ee97a18f9d0865c8f45340abf7262bbb5494ab | Bin 0 -> 3978 bytes ...7c8be68967a8d9edc3df0d29cf21b89337ba852443 | Bin 0 -> 5671 bytes ...3b129a7a0cc9bc5e9628cd267af3ee4b64908151eb | Bin 0 -> 3968 bytes ...1a563eb1a73d2a8d090c0f8abec624177e05baf608 | Bin 0 -> 4496 bytes ...e8fb0f47439a1c9e19584d7801f5d8e3ed22edcc4c | Bin 0 -> 3968 bytes ...439c996b0640d909d0773c79fa4e8b05cd9f4e46c9 | Bin 0 -> 5052 bytes .phpunit.cache/test-results | 2 +- cobertura.xml | 832 ++++++++++-------- src/Graph/Calc.php | 32 +- src/Graph/Graph.php | 5 + src/Graph/Parser.php | 31 +- src/Model/Part.php | 21 +- tests/Graph/SimpleTest.php | 4 +- tests/Graph/formel.txt | 2 +- 29 files changed, 550 insertions(+), 379 deletions(-) create mode 100644 .phpunit.cache/code-coverage/0c97d5489f3591195ecb2796b62d68c8ec7934a2fa3ec9ca40acdc0e5e8cdaea create mode 100644 .phpunit.cache/code-coverage/19aef04741064502eecf19fb94f58846bae6b6a72a5b09c8f483d918823963eb create mode 100644 .phpunit.cache/code-coverage/282097d00aa88b0e114c2d721590e096f24c1bd3697183dc6f0d2fb7d660c50f create mode 100644 .phpunit.cache/code-coverage/2d0dcf35185eed61d10eb60bc284adddd4ef9a147aff2a7bdecbb7b3866e291d create mode 100644 .phpunit.cache/code-coverage/3b956ccbeb04f9bcfe92c1456dfd6008e9d5cd143d7669104915926248235e1b create mode 100644 .phpunit.cache/code-coverage/3e1fab3772093cb603b8aebe0427ec0b1f47eced387d0906afb5f5ff7d918d06 create mode 100644 .phpunit.cache/code-coverage/4d04fa19239d51fdaaf5cd1396400d6be6706c486279250c0744ca70adf7f003 create mode 100644 .phpunit.cache/code-coverage/5c2f8f486d7632077a6f8bef4089991f1a3ecb16990bdc728a28fd72130e1587 create mode 100644 .phpunit.cache/code-coverage/606aa647be81a0b8cb6bf2847c864a4074a09a53dbd03558c8ac8418a40d36b8 create mode 100644 .phpunit.cache/code-coverage/7a228ff414c133cb02a1f55d19d64575ce1f76fbdb0f8ea1197bdca82a32e43e create mode 100644 .phpunit.cache/code-coverage/8bc06688e2c1205d6dd6dd9dbf343ee24fe8c80aabbbd84983391ca8d03cfaa7 create mode 100644 .phpunit.cache/code-coverage/93efb12ab3c1401460a055bc1002b566deb55d6629e0718c0ecf1bb7168d1939 create mode 100644 .phpunit.cache/code-coverage/9858de8e1eac63deec57b00413a10aa43e3490042270a541c5d64d2186b3c07a create mode 100644 .phpunit.cache/code-coverage/9d30f65d49e5cc6783e277abda81d993af06f200d4dd68e332ae8ea5faa3d8ac create mode 100644 .phpunit.cache/code-coverage/ac2d69f71673b8f25c9194c5b5f5845ec59b2d20acd811bffdd3d070c5e794de create mode 100644 .phpunit.cache/code-coverage/c3d4f88dc384475ed76c1b4706ee97a18f9d0865c8f45340abf7262bbb5494ab create mode 100644 .phpunit.cache/code-coverage/c7b1b6a4fe2ffa285f3d4f7c8be68967a8d9edc3df0d29cf21b89337ba852443 create mode 100644 .phpunit.cache/code-coverage/c8afcafac71e02822b42a23b129a7a0cc9bc5e9628cd267af3ee4b64908151eb create mode 100644 .phpunit.cache/code-coverage/e2a7fb2b47ef3a45700e841a563eb1a73d2a8d090c0f8abec624177e05baf608 create mode 100644 .phpunit.cache/code-coverage/eeb65ee9ab7078000ceb2be8fb0f47439a1c9e19584d7801f5d8e3ed22edcc4c create mode 100644 .phpunit.cache/code-coverage/ff9b6d8eab48d2bd32aca1439c996b0640d909d0773c79fa4e8b05cd9f4e46c9 diff --git a/.phpunit.cache/code-coverage/0c97d5489f3591195ecb2796b62d68c8ec7934a2fa3ec9ca40acdc0e5e8cdaea b/.phpunit.cache/code-coverage/0c97d5489f3591195ecb2796b62d68c8ec7934a2fa3ec9ca40acdc0e5e8cdaea new file mode 100644 index 0000000000000000000000000000000000000000..abed17b8c95d863b842a01fff6eb4f10db1dd2b7 GIT binary patch literal 5073 zcmd5=O>f&c5cN+9gdSR8QJea->C@KO-AlI#8lWcw0WH%Bx3XlAbkHF1f8TjSJ9WH1 ztYo$5!Nf@9ycrJPj5xlQ`A9~$dZC;*s{Wwu{aV%aeAX=Wta;Q{-Rt?SSKgGr*Q$DQ z#?24HXYIC?k7OaAoh)J*4KBeMnA&T*Ql)m$RLPNi-Z`01E=4UXs^ zqghyGpXM`FmGi%>+C0o}ly%xh(`%X0X4>s#1~Ye&6y&#)*|@da0bo$8wT`B=aq@ES z4n151=Qb46<)=OH|JXknOfK=C4Pp~9h4Fl>G21;zD^qch(n3bVhi0vZo<`+{8{7P& zzj{3^=~Rc#mP0<-VF=~>&BKOc+j)1+E9*a+nyecsGMtm>8Yx{bUy$MyP+3=~jk3D- z%%Euc2~cTQsIy5(6{2No@7e6FGX6N7J4b7+>4=vMl_J9gA>G}TP3^qhmcCok{>`8f zB^x1jpkvT~$=Uz-)G3knps%Sm!J)Pf-X80SYB?jdr^g=Y(Kxd(mGMu}^bal*?aJhr z7kzoNT~wy*n2(1bnfqG#tqs+H^5=*WZ;2VEzQ202YV3MT<@vX(!yC#MwRZ1dyXYK> z@~Nz-=+K98)~q*`{>DKuvY66$i(DZij{NHKF$uftjhEk@>5Y(u=!=j=0i@2Sa7;)m z1+%+-c|S*|_zvoTF@&T0Azv-YtjB%egrajr=G1{4e{AzjCKgKMZ^_n`7qgQB@ zVgept=4{>6bjvz}jocz0b@2P-fb=(AZoOJmn!U%_XA}8M-Y2{T5;79_p&%i}+c6Dz zn~A-U#3bbOOE6$vf&uFi3@l9cLOMDKP{&jXcuc2&7no0hA0$8q37A2G7E2ja1^dAo za3o_5Ok}J9(2O8wGD4HVUlc7>zMOoh)qy zcpR=VuLHoC*8yP6c(5^MJPrpQ6OIQS6F^Nca6l(86eJ)A3CKYLa*%)=Bp|aSMm)_s z9PwKyiV+*clo+u^s0xlGpP1lK@|g+2MzKl=wi-mn4If&U49!m|j2&8FSmJL-Ic>qVOScv)uv36SagK^tSmlK)FVY*h-4(ZD>awaX<2P| z_@?Z-aGprTqZMf&yul$j16?^~mNHk?n@BMdk55)4<3myNLR#BE`tUO##LKJc>|D={ zG!L_>Eb`fBBUiVxOKGe!-sD2Ww3%*unZnGqCw%hTia6`+b^|b|WU0IfZJfMp-JyRD zg0m}%>Ede({0I9dgW)0mvq5YkpfK)_HNN%_(oz>3q$m~M@U|}1(9tOEaAoQr>Zen~ zoKAIUO+Mt49X6qSx4K<%Y+{p+aPsPe|9-d0km&*17AKv|kw1qhuq* z9&~K;>9Ji*>*M0CjwdU<;ok!29?f0l$#|*+{@_ zBxtb|L)B+LSObp4tbq?PYXCH64R#uad@M;=7fTYhizNx8U`c`{0enfYB!G>Sw+|Z` zhXw!{&tb@*%i+pc7emIn7&5?f=*9pIU}Fr>Mq)gk186hH$UMi$EHQF(_}#1X&f!zj VR~yBzCr)~L*J}ai=tcJQ^b5Yx?oa># literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/282097d00aa88b0e114c2d721590e096f24c1bd3697183dc6f0d2fb7d660c50f b/.phpunit.cache/code-coverage/282097d00aa88b0e114c2d721590e096f24c1bd3697183dc6f0d2fb7d660c50f new file mode 100644 index 0000000000000000000000000000000000000000..6c9ce5a554c594430dc5a27765ad592f27611ae8 GIT binary patch literal 5662 zcmd5=-*4J55av%oQ6H!@ElmQXHBTFw_R?QkyFEp!Ofb}2;zYKoiYET|-8lgQMVeyV ziU+JDB%eQ@zq|9@9T{E_?}1II(wvH~OwMyEL^3X>Y+SrBN#`ti&{XsEi=f$3ah0qu zelWGjv`1p{SCKd*UgsE`4i}oq8BLk;MwDETzbi$CSI45J8C9x+43K9S6Yu_EoLuvX zq;i>zX_h88u-YuSr&4>PJ2HT!v|Gs-CwcNn0IU@mT(%}%0dxe-nKx3T4;&2{u)tAZ zsswvZZ)@29t{tX}j^S>m!v%z3!oya^f9(x4<5^{(0rC9jB4@sakt)BG#c%dUGe3p> z^p#9~v!_0q@pJiH;-L@+f_L-fA@ke;5>LMSa4 zsijNb7*LNGL<_-I-)}tn4JRu()}T9byt0#H4b_liFhHdC>Zp-kxZ)F@alQ0L-;A%d zi=n?Z-;?{rB;%>2%dTz2=Yr~mG@8GJAlgtw52M24vSi&e4dbUS2!)Gz_YC9j_HH5I zJ;kQmC*X4C9z3CYCQbS~N1Cy<)zW2}K>&mFIxg}uW3R@3oCG7tevqo>Ojps{CM{K_ zaHioV9cS_lEW_zr{e~CL^eahV+^T&tJfyy0Yq;Jysm1n=vcXsby7?(8x!N6R9Bbzd zCuaf*LstPXbQb{K3Mky&&<_z29K1n8RRBB*1?>`YCm(0=Cpy{q(=^>jiASB9cp8M9 zi6?Rvd!kc~JrTs7jp=&pgHn}QAep@seEN>543rC#*Nq0N(%f+#+a=^qNY0{A|5T$; z2xsukUiO+N=yz7pYK4uY_HC5iHdklAUX8&qT2{V$h_i)AHHR{F+wY3opE&nGGw4#N zyBYTHOxlLCXS+HKyAx{w5}DRs`x?Ii(%E6eNgrco476GruL+qJc@Djg#v^RZpz<$| z<0=XPb=U!HV2uS?d)j;3!(Lgs&~%b9Lmqb?It)n+a literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/2d0dcf35185eed61d10eb60bc284adddd4ef9a147aff2a7bdecbb7b3866e291d b/.phpunit.cache/code-coverage/2d0dcf35185eed61d10eb60bc284adddd4ef9a147aff2a7bdecbb7b3866e291d new file mode 100644 index 0000000000000000000000000000000000000000..b11917153298132fbc92a04f8dbb2188087bc593 GIT binary patch literal 4536 zcmd5=QE%EX5ay>;(H>f98aN4rnx_qId+FM$NP9x6oWxLXjuY8VRaEiccjrKxQlu${ zN<451A^Gm}-FN3RH*_?h!HlQOSi#gcu9pQkPl(*1o_Dr0q>S-*Pycy++M+ zAIRUH1ADt8U(!82JBW)~WmdqX_j({qx;OM4PzfWvxmn-=*Of=o^{j`Z`xbykI6x-d z$K)1B?+qhChqwzSK&#{A-GlU6`uxQ4IaaE;)p=S>^um%-*(B4T8f8tqf zSt_|BkC`W9`V7-m0xO8&L&ji+cyS441fLLZzBzDi?Be8o9@nh!%9mHrF0`6UO5uK>(H>f98sq~)&C`aqy>u-q(w>ki$1&8K<3zSo6;=K3yVrp>rASi@ zl|aG@ft-7M@3|l5hKvRznDdMpE2#R$^{SvsEv9A8r{x3Jbj25QORZpE6_slv%wl_S z%S|n9KvME#NE(r#cL+{TD9iPdGH!wiB?I#GY{=;HP*f(VF%4vhJfkrQX7lOdN@SYq z^ z=GPnC|L-2`#fPwW_K-SGxSe|61N>5YoQU ztnXadtY518$~n_}bH-9_uY>~Qf{ZaPp|78~%C|sCf=CcPCB9I5 z(+_HcA2F+`ub5zPW=+Fu6iNy1QegGFI2j`sM2{2O5x(XSz1ezohFsPF`8G z0evI1aOkJB4OUBO(ZEk08>9zeL?)!L>tOQT)rf8t^7qU0WL9TVFwbn@OG2^h%qJ)ztP3uN=OCA?ETJxZ zL=B3u2Ek;s;&xsaC!v=Xo1+OPam}pzOtDGsR$EMBl-`L7rimgd2Bx!*5ezgfc!3ML z59DvpfxX?4FYO+l9mHj=m=!STy&eeD?gf1ZRKf^vZkBk!b?K3IJ?r7CBWJax zndFWj>}Q*YN-r{1C^mg!n0T&xUw~KMf;T g5?n%8Gd;$^9p*5RmYTbhof9nl-GDAfLeJ0t0Ic6af&c&j literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/3e1fab3772093cb603b8aebe0427ec0b1f47eced387d0906afb5f5ff7d918d06 b/.phpunit.cache/code-coverage/3e1fab3772093cb603b8aebe0427ec0b1f47eced387d0906afb5f5ff7d918d06 new file mode 100644 index 0000000000000000000000000000000000000000..2633d62498f0845dad11797622955fb725588fb9 GIT binary patch literal 4306 zcmd5f&U49!m|j2&8FSmJL-Ic>qVOScv)uv36SagK^tSmlK)FVY*h-4(ZD>awaX<2P| z_@?Z-aGprTqZMf&yul$j16?^~mNHk?n@BMdk55)4<3myNLR#BE`tUO##LKJc>|D={ zG!L_>Eb`fBBUiVxOKGe!-sD2Ww3%*unZnGqCw%hTia6`+b^|b|WU0IfZJfMp-JyRD zg0m}%>Ede({0I9dgW)0mvq5YkpfK)_HNN%_(oz>3q$m~M@U|}1(9tOEaAoQr>Zen~ zoKAIUO+Mt49X6qSx4K<%Y+{p+aPsPe|9-d0km&*17AKv|kw1qhuq* z9&~K;>9Ji*>*M0CjwdU<;ok!29?f0l$#|*+{@_ zBxtb|L)B+LSObp4tbq?PYXCH64R#uad@M;=7fTYhizNx8U`c`{0enfYB!G>Sw+|Z` zhXw!{&tb@*%i+pc7emIn7&5?f=*9pIU}Fr>Mq)gk186hH$UMi$EHQF(_}#1X&f!zj VR~yBzCr)~L*J}ai=tcJQ^b5Yx?oa># literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/4d04fa19239d51fdaaf5cd1396400d6be6706c486279250c0744ca70adf7f003 b/.phpunit.cache/code-coverage/4d04fa19239d51fdaaf5cd1396400d6be6706c486279250c0744ca70adf7f003 new file mode 100644 index 0000000000000000000000000000000000000000..1dafcd483df4dbcb76214efbcf01677c77fc764f GIT binary patch literal 3968 zcmd5kiV@&HUaU$D6MOFX%&N0vhhBVnw zsYtO7#C$%N?_7M#hL?;?|yn`01TsvsMNb*=$GI6kSn>42WC4W1a2=H5CjYxb< z6LjOp=CSdvjJC}>ZrrufaJGUVV_0acpQN5|k+K|-z?8tm*|4SIMr!B3km3fRfH!ea z2XhY!LmZkjT)A!*M?0&M5Z}3n>SJnAK)SydwYJW*!o_9lcMnR~Ffv)!|9?%^e{_n< zq7CRS)3P|GZLm5_qn>Hu^w=ORl~prUDz_rV7hfa7>f_JX|FgSxR;qPn3s1+blhlLe zt~I_CP=M)B;`{4u+xwQ`w~X*{0<8G*$1eg?t+~yYc+ox)}+W9WGI|u<=5I&EsP59focO|J)RH@2aw3MLLzOFq(QbzqTUNd)C9~oMKH${w!E$%- z@9nqwJiN{CAud`ioPzHD_Xd!MC;lF233HphUEqzzCmvh?!bpJQ+7^KMF(eNkjXEH` z9gP&rM%b}Ht-xuk3n}WVf?=@p6OO7lsg91*Ro5CC;Q?&W8dwye_Fj18lN7Dvvr>BH zG4eEH&(Lv)U_puxg{6-IE*S~~Snx@4kKdPrfKMOyj8MS$S190n7}`O?4b-FI4vOG? o+(JDtZlMUD;R`zO_Jx<8J^Nr*sg3kAzo#|aLNPFKz$IkjAN*yI4gdfE literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/5c2f8f486d7632077a6f8bef4089991f1a3ecb16990bdc728a28fd72130e1587 b/.phpunit.cache/code-coverage/5c2f8f486d7632077a6f8bef4089991f1a3ecb16990bdc728a28fd72130e1587 new file mode 100644 index 0000000000000000000000000000000000000000..b11917153298132fbc92a04f8dbb2188087bc593 GIT binary patch literal 4536 zcmd5=QE%EX5ay>;(H>f98aN4rnx_qId+FM$NP9x6oWxLXjuY8VRaEiccjrKxQlu${ zN<451A^Gm}-FN3RH*_?h!HlQOSi#gcu9pQkPl(*1o_Dr0q>S-*Pycy++M+ zAIRUH1ADt8U(!82JBW)~WmdqX_j({qx;OM4PzfWvxmn-=*Of=o^{j`Z`xbykI6x-d z$K)1B?+qhChqwzSK&#{A-GlU6`uxQ4IaaE;)p=S>^um%-*(B4T8f8tqf zSt_|BkC`W9`V7-m0xO8&L&ji+cyS441fLLZzBzDi?Be8o9@nh!%9mHrF0`6UO5u}V7Mdc+kW&=r3&m^bO-E=a$mUGSY zdNyGtpMBG;d34*TxTOOy#m|xn9&#U10$Lk77(b+u=!IrU8F0 zZnm)hwH=O2Ptn~Shgv7#!sA}Xx8V+2%5vkN0gd9vx)QO4m6^EF^)K<;ikO4nVxxKN zVj80xKQ@nzb7in?#xiZMrGm311R29ZLj5GvVuzHC5D852Oq?xS8m5J^?nhMIAQbQ> z4C-j^L173(vzkfU&EjBZRRZF>a8N0x76GLDdtNJJb<1s7wtjb@5gi65>*o8{Wc^2{ zpe)*g?lUb5W7-z0!!(kI(PN9Wl19#DDeXEczPK9US08`Aeoyb(c_}xQ%|9J?PLdCb z*;cz!KmevgiOVZY_1r%bw%B~lOQtnA^A_Va>d;yA}rT*>gz*3l6YAxLK?+6a}Q4A3r(1)D-10wR0m;e9( literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/7a228ff414c133cb02a1f55d19d64575ce1f76fbdb0f8ea1197bdca82a32e43e b/.phpunit.cache/code-coverage/7a228ff414c133cb02a1f55d19d64575ce1f76fbdb0f8ea1197bdca82a32e43e new file mode 100644 index 0000000000000000000000000000000000000000..abed17b8c95d863b842a01fff6eb4f10db1dd2b7 GIT binary patch literal 5073 zcmd5=O>f&c5cN+9gdSR8QJea->C@KO-AlI#8lWcw0WH%Bx3XlAbkHF1f8TjSJ9WH1 ztYo$5!Nf@9ycrJPj5xlQ`A9~$dZC;*s{Wwu{aV%aeAX=Wta;Q{-Rt?SSKgGr*Q$DQ z#?24HXYIC?k7OaAoh)J*4KBeMnA&T*Ql)m$RLPNi-Z`01E=4UXs^ zqghyGpXM`FmGi%>+C0o}ly%xh(`%X0X4>s#1~Ye&6y&#)*|@da0bo$8wT`B=aq@ES z4n151=Qb46<)=OH|JXknOfK=C4Pp~9h4Fl>G21;zD^qch(n3bVhi0vZo<`+{8{7P& zzj{3^=~Rc#mP0<-VF=~>&BKOc+j)1+E9*a+nyecsGMtm>8Yx{bUy$MyP+3=~jk3D- z%%Euc2~cTQsIy5(6{2No@7e6FGX6N7J4b7+>4=vMl_J9gA>G}TP3^qhmcCok{>`8f zB^x1jpkvT~$=Uz-)G3knps%Sm!J)Pf-X80SYB?jdr^g=Y(Kxd(mGMu}^bal*?aJhr z7kzoNT~wy*n2(1bnfqG#tqs+H^5=*WZ;2VEzQ202YV3MT<@vX(!yC#MwRZ1dyXYK> z@~Nz-=+K98)~q*`{>DKuvY66$i(DZij{NHKF$uftjhEk@>5Y(u=!=j=0i@2Sa7;)m z1+%+-c|S*|_zvoTF@&T0Azv-YtjB%egrajr=G1{4e{AzjCKgKMZ^_n`7qgQB@ zVgept=4{>6bjvz}jocz0b@2P-fb=(AZoOJmn!U%_XA}8M-Y2{T5;79_p&%i}+c6Dz zn~A-U#3bbOOE6$vf&uFi3@l9cLOMDKP{&jXcuc2&7no0hA0$8q37A2G7E2ja1^dAo za3o_5Ok}J9(2O8wGD4HVUlc7>zMOoh)qy zcpR=VuLHoC*8yP6c(5^MJPrpQ6OIQS6F^Nca6l(86eJ)A3CKYLa*%)=Bp|aSMm)_s z9PwKyiV+*clo+u^s0xlGpP1lK@|g+2MzKl=wi-mn4IK>(H>f98sq~)&C`aqy>u-q(w>ki$1&8K<3zSo6;=K3yVrp>rASi@ zl|aG@ft-7M@3|l5hKvRznDdMpE2#R$^{SvsEv9A8r{x3Jbj25QORZpE6_slv%wl_S z%S|n9KvME#NE(r#cL+{TD9iPdGH!wiB?I#GY{=;HP*f(VF%4vhJfkrQX7lOdN@SYq z^ z=GPnC|L-2`#fPwW_K-SGxSe|61N>5YoQU ztnXadtY518$~n_}bH-9_uY>~Qf{ZaPp|78~%C|sCf=CcPCB9I5 z(+_HcA2F+`ub5zPW=+Fu6iNy1QegGFI2j`sM2{2O5x(XSz1ezohFsPF`8G z0evI1aOkJB4OUBO(ZEk08>9zeL?)!L>tOQT)rf8t^7qU0WL9TVFwbn@OG2^h%qJ)ztP3uN=OCA?ETJxZ zL=B3u2Ek;s;&xsaC!v=Xo1+OPam}pzOtDGsR$EMBl-`L7rimgd2Bx!*5ezgfc!3ML z59DvpfxX?4FYO+l9mHj=m=!STy&eeD?gf1ZRKf^vZkBk!b?K3IJ?r7CBWJax zndFWj>}Q*YN-r{1C^mg!n0T&xUw~KMf;T g5?n%8Gd;$^9p*5RmYTbhof9nl-GDAfLeJ0t0Ic6af&c&j literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/93efb12ab3c1401460a055bc1002b566deb55d6629e0718c0ecf1bb7168d1939 b/.phpunit.cache/code-coverage/93efb12ab3c1401460a055bc1002b566deb55d6629e0718c0ecf1bb7168d1939 new file mode 100644 index 0000000000000000000000000000000000000000..d7cc1603fb2e2986b4e4cb48746970803c57e305 GIT binary patch literal 4654 zcmd5=O>f&U49!m|j2+s`T=_GVPg}6<(zQVg>=d9-9HrG}%Z4Ne4T}8tk&4qfS%ATc zJMX9aUOOs3L-SauqMlkuAtH+W_Ih#}qKB-n*u}40;H_V9qlVrtO3q9K{ z?znCWvHHm_z3i68aFl*0ncyZ59woq9(|FvQ^cG+wS;@Uj(};S=3zx}BV7dl> zE^b=bf1Vw-3s2#0w?ozexbV1_@mF^TEk&_)P)t4lsVcc|U}oB{RrQnqGThI>Z@yN! zZ|~GcH-4<2YU@hpvuVSWxfT-k7I4XUEyUGNTrPGER)-q&BL_ja#&Sx1b(P9D{ZH{%f%Q z#mOm(TF`x^MQ%!Ku{ug4shd1nq?OQOE(&4RUiQW2h<^F;$Lsra+RO{F&20U{apxrQ zD4A)LO$7vCI+8fQz)(;7M?#C8uk!*j3ViP-RaqDO*&Z6AK7-E@pkjV`7qWZhGMwD5 zhLT%I29ukj#L^l@Ecji*8$6#vLO=Te8Pr_RvsEP)Z=;$3Rf7tJoizVisj`7m;a%wG z2&=)A6ox}7DH;!^BuHEkGwz8?i4`+8*tY zvXQwFP$&NBCDZ<%J^(GC1JJii?2T;-hgPy*I>Ew!2S7tCKhyq2b_Zm%$4Jlw%e)k5 z^{m^wka<;>&{lLFVbg;VG(L^1tR$3FN3el4sK|l#!S(QGo;QZg3vS8d%?HpmK<$>m z2?87hrVtl6MYxDz!V#d2wM$`vBN)SkBe;SIM~H^d{=o_jh($vSg5V*V5DSbZ1mPnz zA^2K^CYDHqKR`ha``Tv+5Zh-65L+?`5L-3~5L-HE99urPM~ub+zLuZ~oCAH>zwABm YAyn3t;L&s1H<{M)Luo=4nIIUiziA+f$^<1Vgir1AthJjZKX*6`dHL7qe_*KKJpA=;ypZ$k{dpj zR4$Vd&C=u+W}77sRBCT{PkJzwW-}S#AkQB0fwdyNL1WS-Kugd$^M;B{2G8!ljMPGW@eZNtRGWDV52LL`_;!@Q})Qc%f+HV-(v z@KDIVOIo}nPm;0Z4m56}0OGP6@L+<1d)T3ANx814x^+nB3`8(7P{xXUKze>obD^|c zq?RdtYd}5Hx6J7B`%Ol_<76er3Uo(~*LHHOplWjT4N`M;R7kH}@iEW1UV6iCCfAyI z=&#N9lpEwpn4&V<_BP+HAQsL6`qy_YhP%%e`CbTc4DSwwpGq#Rex=b@LFetC1d|qViuZbTg!4Rq+l&TrirF+|yr7{%G zG+d|SOum8dO20vbNY*P+*RLdHGBhuSht%h91J}7EmDoN;Ha^M*y#{piQhAx;+})f{>p+h%Fp{J63Qnn8<8-A}RkYxaC_aA|gk$JW*wfP|(m+`K_l18MCr z;-rT@83V0`!K*{2`FswIv)U`{>R~T#a2!{W3pm6dzy{WMnr}{fZ+X~XmM%0MXUvet zl^>8dPW(Phz{e|wTYy&xH@t!Y+#-Cyryl;mH~2w>Z}5W%-wX`J=BMX9iqLh*B{MBf OqfF?zV{CDt)#@LYr_LJy literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/9d30f65d49e5cc6783e277abda81d993af06f200d4dd68e332ae8ea5faa3d8ac b/.phpunit.cache/code-coverage/9d30f65d49e5cc6783e277abda81d993af06f200d4dd68e332ae8ea5faa3d8ac new file mode 100644 index 0000000000000000000000000000000000000000..5b0044bec7eefc5afe0b0a4601b8bec20cf7a929 GIT binary patch literal 3978 zcmd5}V7Mdc+kW&=r3&m^bO-E=a$mUGSY zdNyGtpMBG;d34*TxTOOy#m|xn9&#U10$Lk77(b+u=!IrU8F0 zZnm)hwH=O2Ptn~Shgv7#!sA}Xx8V+2%5vkN0gd9vx)QO4m6^EF^)K<;ikO4nVxxKN zVj80xKQ@nzb7in?#xiZMrGm311R29ZLj5GvVuzHC5D852Oq?xS8m5J^?nhMIAQbQ> z4C-j^L173(vzkfU&EjBZRRZF>a8N0x76GLDdtNJJb<1s7wtjb@5gi65>*o8{Wc^2{ zpe)*g?lUb5W7-z0!!(kI(PN9Wl19#DDeXEczPK9US08`Aeoyb(c_}xQ%|9J?PLdCb z*;cz!KmevgiOVZY_1r%bw%B~lOQtnA^A_Va>d;yA}rT*>gz*3l6YAxLK?+6a}Q4A3r(1)D-10wR0m;e9( literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/ac2d69f71673b8f25c9194c5b5f5845ec59b2d20acd811bffdd3d070c5e794de b/.phpunit.cache/code-coverage/ac2d69f71673b8f25c9194c5b5f5845ec59b2d20acd811bffdd3d070c5e794de new file mode 100644 index 0000000000000000000000000000000000000000..0f7e35318fc9788c8e80245ebfd8cad32d682924 GIT binary patch literal 4456 zcmd5=U2obj6y>K>(H>f98sq~)&C`aqy>u-q(w>ki$1&8K<3zSo6;=K3yVrp>rASi@ zl|aG@ft-7M@3|l5hKvRznDdMpE2#R$^{SvsEv9A8r{x3Jbj25QORZpE6_slv%wl_S z%S|n9KvME#NE(r#cL+{TD9iPdGH!wiB?I#GY{=;HP*f(VF%4vhJfkrQX7lOdN@SYq z^ z=GPnC|L-2`#fPwW_K-SGxSe|61N>5YoQU ztnXadtY518$~n_}bH-9_uY>~Qf{ZaPp|78~%C|sCf=CcPCB9I5 z(+_HcA2F+`ub5zPW=+Fu6iNy1QegGFI2j`sM2{2O5x(XSz1ezohFsPF`8G z0evI1aOkJB4OUBO(ZEk08>9zeL?)!L>tOQT)rf8t^7qU0WL9TVFwbn@OG2^h%qJ)ztP3uN=OCA?ETJxZ zL=B3u2Ek;s;&xsaC!v=Xo1+OPam}pzOtDGsR$EMBl-`L7rimgd2Bx!*5ezgfc!3ML z59DvpfxX?4FYO+l9mHj=m=!STy&eeD?gf1ZRKf^vZkBk!b?K3IJ?r7CBWJax zndFWj>}Q*YN-r{1C^mg!n0T&xUw~KMf;T g5?n%8Gd;$^9p*5RmYTbhof9nl-GDAfLeJ0t0Ic6af&c&j literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/c3d4f88dc384475ed76c1b4706ee97a18f9d0865c8f45340abf7262bbb5494ab b/.phpunit.cache/code-coverage/c3d4f88dc384475ed76c1b4706ee97a18f9d0865c8f45340abf7262bbb5494ab new file mode 100644 index 0000000000000000000000000000000000000000..5b0044bec7eefc5afe0b0a4601b8bec20cf7a929 GIT binary patch literal 3978 zcmd5}V7Mdc+kW&=r3&m^bO-E=a$mUGSY zdNyGtpMBG;d34*TxTOOy#m|xn9&#U10$Lk77(b+u=!IrU8F0 zZnm)hwH=O2Ptn~Shgv7#!sA}Xx8V+2%5vkN0gd9vx)QO4m6^EF^)K<;ikO4nVxxKN zVj80xKQ@nzb7in?#xiZMrGm311R29ZLj5GvVuzHC5D852Oq?xS8m5J^?nhMIAQbQ> z4C-j^L173(vzkfU&EjBZRRZF>a8N0x76GLDdtNJJb<1s7wtjb@5gi65>*o8{Wc^2{ zpe)*g?lUb5W7-z0!!(kI(PN9Wl19#DDeXEczPK9US08`Aeoyb(c_}xQ%|9J?PLdCb z*;cz!KmevgiOVZY_1r%bw%B~lOQtnA^A_Va>d;yA}rT*>gz*3l6YAxLK?+6a}Q4A3r(1)D-10wR0m;e9( literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/c7b1b6a4fe2ffa285f3d4f7c8be68967a8d9edc3df0d29cf21b89337ba852443 b/.phpunit.cache/code-coverage/c7b1b6a4fe2ffa285f3d4f7c8be68967a8d9edc3df0d29cf21b89337ba852443 new file mode 100644 index 0000000000000000000000000000000000000000..fbbae32b5637593510fc3ee6a25458839587a11f GIT binary patch literal 5671 zcmd5=O>g2b5ap+!s0S*omgWOO&1n~{_R=qHyL*aMnP8}QgA>`NDysPJopAyLinNMx zD-N-6+B`px-^_UCmh>-(chAODX->s=CTDXhL^8@JY?MDUNoOp%*HrWLo1ocJah0rp z{97dxz!1W4N2;a03CD@UWHful5F-@~kvak9ggue9pQWMyk4n%>S}~nsrk+ z&#sbb*PLk=&G@x=DsWl*y(tYaS6sl_oWuy_+nR}q$r>o?ArkDQq2E+uDX3&Zn+fhN zJY@2pk`_&mFI?Cro#$Js5I0=T3{UBA%m@cEYO4vb5e=zV`Sr_Y%tbzAb=DW9GP6K3d(Qdf15+6&7Z$G?4OXSO<2<%Y$eEBLXHh6R z)hHCe9ei_^o%#*>gH^OzVI!$|8)di6)!MIDV{nXymG2(nbRkmBp-kQOyW-|I&OOi! zx)kbmiv2s2w&CvCtPaEO#2SEvrnT3+#;<|2b{KIIVa$wyRzu^}A=7+5hu%l+6*gur z0C;d5SCI>-!wz5rYb?l`)80EC_QKMIrsIqm@_6#lKIO#k!v=hOVi*E^LKyG~1~5c8 l!C4P~;2ZoP!Z)#D*1Yc7V+QqdE}3ag89_p~6isUIS8r@y{Ote$ literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/c8afcafac71e02822b42a23b129a7a0cc9bc5e9628cd267af3ee4b64908151eb b/.phpunit.cache/code-coverage/c8afcafac71e02822b42a23b129a7a0cc9bc5e9628cd267af3ee4b64908151eb new file mode 100644 index 0000000000000000000000000000000000000000..1dafcd483df4dbcb76214efbcf01677c77fc764f GIT binary patch literal 3968 zcmd5kiV@&HUaU$D6MOFX%&N0vhhBVnw zsYtO7#C$%N?_7M#hL?;?|yn`01TsvsMNb*=$GI6kSn>42WC4W1a2=H5CjYxb< z6LjOp=CSdvjJC}>ZrrufaJGUVV_0acpQN5|k+K|-z?8tm*|4SIMr!B3km3fRfH!ea z2XhY!LmZkjT)A!*M?0&M5Z}3n>SJnAK)SydwYJW*!o_9lcMnR~Ffv)!|9?%^e{_n< zq7CRS)3P|GZLm5_qn>Hu^w=ORl~prUDz_rV7hfa7>f_JX|FgSxR;qPn3s1+blhlLe zt~I_CP=M)B;`{4u+xwQ`w~X*{0<8G*$1eg?t+~yYc+ox)}+W9WGI|u<=5I&EsP59focO|J)RH@2aw3MLLzOFq(QbzqTUNd)C9~oMKH${w!E$%- z@9nqwJiN{CAud`ioPzHD_Xd!MC;lF233HphUEqzzCmvh?!bpJQ+7^KMF(eNkjXEH` z9gP&rM%b}Ht-xuk3n}WVf?=@p6OO7lsg91*Ro5CC;Q?&W8dwye_Fj18lN7Dvvr>BH zG4eEH&(Lv)U_puxg{6-IE*S~~Snx@4kKdPrfKMOyj8MS$S190n7}`O?4b-FI4vOG? o+(JDtZlMUD;R`zO_Jx<8J^Nr*sg3kAzo#|aLNPFKz$IkjAN*yI4gdfE literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/e2a7fb2b47ef3a45700e841a563eb1a73d2a8d090c0f8abec624177e05baf608 b/.phpunit.cache/code-coverage/e2a7fb2b47ef3a45700e841a563eb1a73d2a8d090c0f8abec624177e05baf608 new file mode 100644 index 0000000000000000000000000000000000000000..a0e4fa9657d988713e0e3c36f42103fb4d596e4a GIT binary patch literal 4496 zcmd5=ZExBz5ay>;(LS`&G{_5tI-fSQ?Mv5IMcOB%%5eonlp;+r zR04@p5}fDWo;#npA)^5araY&{3aY+wy(p& zHJeb$WE_A=wcH0J1hWkpf{u={XaIVOmORJ+fdtMbydE8dW|k1q z;(CMofA2wGe2Dc-QTlH8LMk%{p$6X0}aT?vs|0^U&{5JOB~JL@uPTt04RCdPKJl`TOO4a$Dz8Fwbh-21zUwwY6?q z0n|^666e4Sp%!PK=9MmM=**wbwojm5XlX7`ciO#DHoDo0N$5DRB~GexDfyENiXdSI zJ5~q{h86{GD?dOzm#0C{_f{Q^qEU1-iaN4;=cP?iO+wdMySMv&1dDgWcYX_-K|?Su zFUZ+rC5jIu74SQ+g#;Bo!%5@O(VE?>F~_4&dMpaXZf8D03SnPxIXnltZr&=DK{mcZ1Y;p_E3i`q=K literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/eeb65ee9ab7078000ceb2be8fb0f47439a1c9e19584d7801f5d8e3ed22edcc4c b/.phpunit.cache/code-coverage/eeb65ee9ab7078000ceb2be8fb0f47439a1c9e19584d7801f5d8e3ed22edcc4c new file mode 100644 index 0000000000000000000000000000000000000000..1dafcd483df4dbcb76214efbcf01677c77fc764f GIT binary patch literal 3968 zcmd5kiV@&HUaU$D6MOFX%&N0vhhBVnw zsYtO7#C$%N?_7M#hL?;?|yn`01TsvsMNb*=$GI6kSn>42WC4W1a2=H5CjYxb< z6LjOp=CSdvjJC}>ZrrufaJGUVV_0acpQN5|k+K|-z?8tm*|4SIMr!B3km3fRfH!ea z2XhY!LmZkjT)A!*M?0&M5Z}3n>SJnAK)SydwYJW*!o_9lcMnR~Ffv)!|9?%^e{_n< zq7CRS)3P|GZLm5_qn>Hu^w=ORl~prUDz_rV7hfa7>f_JX|FgSxR;qPn3s1+blhlLe zt~I_CP=M)B;`{4u+xwQ`w~X*{0<8G*$1eg?t+~yYc+ox)}+W9WGI|u<=5I&EsP59focO|J)RH@2aw3MLLzOFq(QbzqTUNd)C9~oMKH${w!E$%- z@9nqwJiN{CAud`ioPzHD_Xd!MC;lF233HphUEqzzCmvh?!bpJQ+7^KMF(eNkjXEH` z9gP&rM%b}Ht-xuk3n}WVf?=@p6OO7lsg91*Ro5CC;Q?&W8dwye_Fj18lN7Dvvr>BH zG4eEH&(Lv)U_puxg{6-IE*S~~Snx@4kKdPrfKMOyj8MS$S190n7}`O?4b-FI4vOG? o+(JDtZlMUD;R`zO_Jx<8J^Nr*sg3kAzo#|aLNPFKz$IkjAN*yI4gdfE literal 0 HcmV?d00001 diff --git a/.phpunit.cache/code-coverage/ff9b6d8eab48d2bd32aca1439c996b0640d909d0773c79fa4e8b05cd9f4e46c9 b/.phpunit.cache/code-coverage/ff9b6d8eab48d2bd32aca1439c996b0640d909d0773c79fa4e8b05cd9f4e46c9 new file mode 100644 index 0000000000000000000000000000000000000000..e16027f87089488b953fdb1d5d1b60fe653629a8 GIT binary patch literal 5052 zcmd5=O>g5i5cN+9gdTQ*qBbS#!}O^&+FrJsU<34IAfRPBVJk}pNe3G&{NFooC}$nl zhe}o#doVE;Id6u;HzSU2Wj2w~yZUKNYh+Kj&1MVIj^k$U}~~%q)2g2qHm;hy?#ZCV?d>Sp?1pZ z+B1Wq`A0xa`$AnzLaGoQQ@drex61g_bnYFkt)?ShGt?9rCJ5=_p=@gB?Y{K=lJ*Y< zjVRd&u?HQ4{%g+u%cow6)PlaH+6;%Q0Xq>Df55GL`W!(fn5~6Wz+> zpRfAzZojHb*)t!HK{AiE@_QSq0p-sLCEgJ;O#OKC!=|y@J(cGlZ;nqWU)0vUhwZ#~ zD9V?zqM}1D#znK;Rr)gr#mIb4?=5nLj5zYE&&wq2ZZKYcb!IR^=3*#9<~fjhpTa32 ztrX1e?&bXwo#JEI-qG8`2O8<>y}WsD%=-VKjsSH8xzF7Bt>x`^!J!LY4M(QIs@rVP z>PDpOU)`*ER-WrpkIU30J|^e9_;$RUGB4@%!@Q()pz8U3u=3oe!8j=YGt@vO zE=f=?hbeK%+wgr;LLClh@47cOZ=282`3*Dgen~n*-0bVp8@gD2?LzbJ;XVVcsAq7u z8+6s2IMldwD=lahjsP;jeKqfXD?b4lz43^enHapv$*+z#{Zq`c*>0&3IeCOW3B65m zowIdQ(1$kdTtVe{vG0cv{ear>SU# zBqkxFUxESa5)4?EU|?a^3e(9^fI6n8fXDO{@B;Hw;0FniK>}uwpv6)ORl$C+1{_IQ z0~0B005oL{b{d8RmSn7pB^lerl8jNXB*T&zzGPTJ0jHhu_F*H(I*w6+i5L?F@Hkur zuLD5A>i|$N9&8kh$Kk+`z{U(ikboB?7zz@Qg9PLt0huK+;c4iJ2|tCRn7|;FO^C3V zKvhiOL4s9c!q%}$a0L0xgkY;s5Q1@o$aaIsCW6Q&f{2k2z{>6=|BRK?-ZWP8cLFX) P^aaaEM2NmU91i~go`vaX literal 0 HcmV?d00001 diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results index 9579b5b..d2ec013 100644 --- a/.phpunit.cache/test-results +++ b/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":1,"defects":[],"times":{"SimpleTest::testGraph":0.027}} \ No newline at end of file +{"version":1,"defects":{"SimpleTest::testGraph":8},"times":[]} \ No newline at end of file diff --git a/cobertura.xml b/cobertura.xml index 0fc9a6a..fe4bdfa 100644 --- a/cobertura.xml +++ b/cobertura.xml @@ -1,6 +1,6 @@ - + /home/thomas/projekte/calc/src @@ -3292,44 +3292,88 @@ - + - + - + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + @@ -3337,20 +3381,20 @@ - + - - - + + + - + - + @@ -3365,7 +3409,7 @@ - + @@ -3384,43 +3428,43 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - - - - - - - - + + + + + + + + - - - - + + + + @@ -3442,7 +3486,7 @@ - + @@ -3453,14 +3497,14 @@ - + - - - - + + + + @@ -3468,46 +3512,46 @@ - - + + - - + + - - + + - - + + - - + + - + - - - - - - + + + + + + - + - + - + - - - + + + @@ -3519,9 +3563,9 @@ - + - + @@ -3536,59 +3580,59 @@ - - + + - + - + - + - - - - - - + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - + + - - - + + + - + - + @@ -3603,7 +3647,7 @@ - + @@ -3612,41 +3656,41 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - - - - - - - - + + + + + + + + - - - - + + + + @@ -3668,7 +3712,7 @@ - + @@ -3679,14 +3723,14 @@ - + - - - - + + + + @@ -3694,42 +3738,42 @@ - - + + - - + + - - + + - - + + - - - - - - - - + + + + + + + + - + - + - + - - - + + + @@ -3741,9 +3785,9 @@ - + - + @@ -3758,52 +3802,52 @@ - - + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - - - - + + + + @@ -3814,162 +3858,204 @@ - - - - - - + + + + + + - + - + - + - - - + + + - + - + - + - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + - + + - + - - - - - - + + + + + + + + + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + @@ -3999,9 +4085,9 @@ - + - + @@ -4014,11 +4100,11 @@ - + - - - + + + @@ -4037,9 +4123,9 @@ - + - + @@ -4052,9 +4138,9 @@ - + - + @@ -4145,9 +4231,9 @@ - + - + @@ -4155,9 +4241,9 @@ - - - + + + @@ -4166,14 +4252,14 @@ - + - + @@ -4214,31 +4300,31 @@ - + - + - + - + - - - - - + + + + + - - - - - + + + + + @@ -4246,59 +4332,79 @@ - + - + - + - + + - + - + - + - + - + - + + + + + + + + + + + + + + + + - - - - + + + + + + + + - + - + - + - - - - + + + + - - - - + + + + diff --git a/src/Graph/Calc.php b/src/Graph/Calc.php index 2328a4e..11a7ccf 100644 --- a/src/Graph/Calc.php +++ b/src/Graph/Calc.php @@ -24,23 +24,41 @@ class Calc foreach ($yield as $y) { $this->parseFormulas($y); - $y->setResult($this->math->evaluate($y->getUnparsed())); - var_dump($y); + $this->parseParams($y); + var_dump($y->getParsed()); + $y->setResult($this->math->evaluate($y->getParsed())); } } private function parseFormulas(Part $p): void { - preg_match_all('/\$F\w*\$F/', $formel->getUnparsed(), $founds); + preg_match_all('/\$F\w*\$F/', $p->getUnparsed(), $founds); if (!empty($founds[0])) { foreach ($founds[0] as $key => $found) { $foundValue = str_replace('$F', '', $found); - $foundPart = array_find($p->getChildren(), ($c) => $c->getName() == $foundValue)); - if (count($foundPart) > 0) { - $formel->setParsed(str_replace($found, $foundPart[0]->getResult(), $formel->getParsed())) + $foundPart = array_find($p->getChildren(), fn($c) => $c->getName() == $foundValue); + if ($foundPart) { + $p->setParsed(str_replace($found, $foundPart->getResult(), $p->getParsed())); } else { - $formel->setParsed(str_replace($found, 0, $formel->getParsed())) + $p->setParsed(str_replace($found, 0, $p->getParsed())); + } + } + } + } + + private function parseParams(Part $p): void + { + preg_match_all('/\$P\w*\$P/', $p->getUnparsed(), $founds); + + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { + $foundValue = str_replace('$F', '', $found); + $foundPart = array_find($p->getChildren(), fn($c) => $c->getName() == $foundValue); + if ($foundPart) { + $p->setParsed(str_replace($found, $foundPart->getResult(), $p->getParsed())); + } else { + $p->setParsed(str_replace($found, 0, $p->getParsed())); } } } diff --git a/src/Graph/Graph.php b/src/Graph/Graph.php index d9dcaf0..212e41a 100644 --- a/src/Graph/Graph.php +++ b/src/Graph/Graph.php @@ -36,4 +36,9 @@ class Graph return true; } + + public function getSum(): int + { + return array_reduce((array)$this->calcFormel, fn($sum, $item) => $sum + $item->getResult(), 0); + } } diff --git a/src/Graph/Parser.php b/src/Graph/Parser.php index 0b0debd..364ee7b 100644 --- a/src/Graph/Parser.php +++ b/src/Graph/Parser.php @@ -8,8 +8,6 @@ use PhpParser\Node\Expr\Assign; use PhpParser\NodeTraverser; use PhpParser\NodeVisitorAbstract; use PhpParser\ParserFactory; -use PSC\Library\Calc\Model\Formel; -use PSC\Library\Calc\Model\FormelCollection; use PSC\Library\Calc\Model\Part; use PSC\Library\Calc\Model\PartCollection; use PSC\Library\Calc\Model\PartType; @@ -52,7 +50,7 @@ class Parser } }); - $parser = new ParserFactory()->createForNewestSupportedVersion(); + $parser = (new ParserFactory())->createForNewestSupportedVersion(); try { $ast = $parser->parse('traverse($ast); @@ -74,8 +72,7 @@ class Parser { // $formel = $this->parseCalcVariables($formel, $breakValid); $this->parseFormulas($formel); - - // $formel = $this->parseParameters($formel, $breakValid); + $this->parseParams($formel); // $formel = $this->parseVariables($formel, $breakValid); } @@ -83,6 +80,30 @@ class Parser { preg_match_all('/\$F\w*\$F/', $formel->getUnparsed(), $founds); + if (!empty($founds[0])) { + foreach ($founds[0] as $key => $found) { + $foundValue = str_replace('$F', '', $found); + if ($this->internalParts->getPartByName($foundValue)) { + $part = $this->internalParts->getPartByName($foundValue); + $this->parse($part); + $formel->addChild($part); + } else { + $formel->addChild(new Part( + type: PartType::Formel, + name: $foundValue, + unParsed: $found, + parsed: 0, + result: 0, + )); + } + } + } + } + + private function parseParams(Part $formel): void + { + preg_match_all('/\$P\w*\$P/', $formel->getUnparsed(), $founds); + if (!empty($founds[0])) { foreach ($founds[0] as $key => $found) { $foundValue = str_replace('$F', '', $found); diff --git a/src/Model/Part.php b/src/Model/Part.php index 9907648..b9be54b 100644 --- a/src/Model/Part.php +++ b/src/Model/Part.php @@ -12,7 +12,11 @@ class Part extends Node private string $unParsed, private string $parsed = '', private int $result = 0, - ) {} + ) { + if($parsed == '') { + $this->parsed = $unParsed; + } + } public function getName(): string { @@ -24,8 +28,23 @@ class Part extends Node return $this->unParsed; } + public function getParsed(): string + { + return $this->parsed; + } + + public function setParsed(string $parsed): void + { + $this->parsed = $parsed; + } + public function setResult(int $result): void { $this->result = $result; } + + public function getResult(): string + { + return $this->result; + } } diff --git a/tests/Graph/SimpleTest.php b/tests/Graph/SimpleTest.php index 92d5a18..aef15ba 100644 --- a/tests/Graph/SimpleTest.php +++ b/tests/Graph/SimpleTest.php @@ -5,6 +5,7 @@ use PSC\Library\Calc\Graph\Graph; use PSC\Library\Calc\Model\Part; use PSC\Library\Calc\Model\PartType; +use function PHPUnit\Framework\assertSame; use function PHPUnit\Framework\assertTrue; class SimpleTest extends TestCase @@ -24,9 +25,10 @@ class SimpleTest extends TestCase $this->graph->addCalcFormel(new Part( type: PartType::CalcFormel, name: 'test1', - unParsed: '$Ftest2$F+$Ftest3$F+10', + unParsed: '$Ftest1$F+$Ftest2$F+10', )); assertTrue($this->graph->build()); + assertSame(7510, $this->graph->getSum()); } } diff --git a/tests/Graph/formel.txt b/tests/Graph/formel.txt index a5815b8..bcb04f6 100644 --- a/tests/Graph/formel.txt +++ b/tests/Graph/formel.txt @@ -1,2 +1,2 @@ $test1 = '100*50'; -$test2 = '50*50'; +$test2 = '$Ptest3$P*50';