From 1b48e691efdb23d6f5878a78151feea8ae61c6c9 Mon Sep 17 00:00:00 2001 From: Ulriche Nguefack Date: Fri, 9 Feb 2024 10:18:03 +0100 Subject: [PATCH] Test factorial --- build/test/cache/test_factorial.c | 47 ++++++++++ build/test/cache/test_pow.c | 79 +++++++++++++++++ build/test/dependencies/test_factorial.d | 4 + .../test/dependencies/test_factorial_runner.d | 4 + build/test/dependencies/test_pow.d | 4 + build/test/dependencies/test_pow_runner.d | 3 + build/test/out/c/test_factorial.o | Bin 0 -> 6112 bytes build/test/out/c/test_factorial_runner.o | Bin 0 -> 9104 bytes build/test/out/c/test_pow.o | Bin 0 -> 6584 bytes build/test/out/c/test_pow_runner.o | Bin 0 -> 9240 bytes build/test/out/test_factorial.out | Bin 0 -> 64784 bytes build/test/out/test_pow.out | Bin 0 -> 64912 bytes build/test/preprocess/files/test_factorial.c | 47 ++++++++++ build/test/preprocess/files/test_pow.c | 79 +++++++++++++++++ .../test/preprocess/includes/test_factorial.c | 3 + build/test/preprocess/includes/test_pow.c | 3 + build/test/results/test_factorial.pass | 18 ++++ build/test/results/test_pow.pass | 22 +++++ build/test/results/test_template.pass | 2 +- build/test/runners/test_factorial_runner.c | 81 +++++++++++++++++ build/test/runners/test_pow_runner.c | 83 ++++++++++++++++++ test/Calculator/test_factorial.c | 25 ++++++ test/Calculator/{test_add.c => test_pow.c} | 0 23 files changed, 503 insertions(+), 1 deletion(-) create mode 100644 build/test/cache/test_factorial.c create mode 100644 build/test/cache/test_pow.c create mode 100644 build/test/dependencies/test_factorial.d create mode 100644 build/test/dependencies/test_factorial_runner.d create mode 100644 build/test/dependencies/test_pow.d create mode 100644 build/test/dependencies/test_pow_runner.d create mode 100644 build/test/out/c/test_factorial.o create mode 100644 build/test/out/c/test_factorial_runner.o create mode 100644 build/test/out/c/test_pow.o create mode 100644 build/test/out/c/test_pow_runner.o create mode 100755 build/test/out/test_factorial.out create mode 100755 build/test/out/test_pow.out create mode 100644 build/test/preprocess/files/test_factorial.c create mode 100644 build/test/preprocess/files/test_pow.c create mode 100644 build/test/preprocess/includes/test_factorial.c create mode 100644 build/test/preprocess/includes/test_pow.c create mode 100644 build/test/results/test_factorial.pass create mode 100644 build/test/results/test_pow.pass create mode 100644 build/test/runners/test_factorial_runner.c create mode 100644 build/test/runners/test_pow_runner.c create mode 100644 test/Calculator/test_factorial.c rename test/Calculator/{test_add.c => test_pow.c} (100%) diff --git a/build/test/cache/test_factorial.c b/build/test/cache/test_factorial.c new file mode 100644 index 0000000..debbcbf --- /dev/null +++ b/build/test/cache/test_factorial.c @@ -0,0 +1,47 @@ +#include "src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_factorial_4(void){ + + + + double result; + + double a = 4; + + + + + + result = factorial(a); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/cache/test_pow.c b/build/test/cache/test_pow.c new file mode 100644 index 0000000..fe4db9b --- /dev/null +++ b/build/test/cache/test_pow.c @@ -0,0 +1,79 @@ +#include "build/temp/../../src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_pow_N_N(void){ + + + + double result; + + double b = 3; + + double a = 3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/dependencies/test_factorial.d b/build/test/dependencies/test_factorial.d new file mode 100644 index 0000000..11420b1 --- /dev/null +++ b/build/test/dependencies/test_factorial.d @@ -0,0 +1,4 @@ +build/test/out/c/test_factorial.o: test/Calculator/test_factorial.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Calculator/calculator.h diff --git a/build/test/dependencies/test_factorial_runner.d b/build/test/dependencies/test_factorial_runner.d new file mode 100644 index 0000000..961d380 --- /dev/null +++ b/build/test/dependencies/test_factorial_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_factorial_runner.o: \ + build/test/runners/test_factorial_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_pow.d b/build/test/dependencies/test_pow.d new file mode 100644 index 0000000..d76ecae --- /dev/null +++ b/build/test/dependencies/test_pow.d @@ -0,0 +1,4 @@ +build/test/out/c/test_pow.o: test/Calculator/test_pow.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + test/Calculator/../../src/main/c/Calculator/calculator.h diff --git a/build/test/dependencies/test_pow_runner.d b/build/test/dependencies/test_pow_runner.d new file mode 100644 index 0000000..d2634ed --- /dev/null +++ b/build/test/dependencies/test_pow_runner.d @@ -0,0 +1,3 @@ +build/test/out/c/test_pow_runner.o: build/test/runners/test_pow_runner.c \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/out/c/test_factorial.o b/build/test/out/c/test_factorial.o new file mode 100644 index 0000000000000000000000000000000000000000..ebb50e00e7b4ff9af669b3a5de54a0c1b4ee5346 GIT binary patch literal 6112 zcmbuDZ)_Y#6~JfrZk0ToCEgkq@yR1lxahk{fIfj~$tQksGk6-0S& z=FNINSxbnHbTjY$=DjyFZ^pZ`{_NDL6S}4`Su}Qxt!k1omfO54m$+DB+u1huZssHJ z&6Y3yG(_+-nuUOlA_VN&`;O7r7pDOJfdWh_oS#123f9g`P(@Y47m86+#xA`Z|9dlOnz7D zS9g95^&dgCaYOPUX!NgW+Au7Kr+q80`*^)MLUwR@53dJ#eMf}s=khqOkMnwx*JWN` z;q~)u6AZ@mm$k%oXp=Z(I@JcToAX0@mj@_u4Kz`mK=u2m^2j}Cmgq_?L30VaP++}S zX+1n^D1HJfDB3r!gH48unQk=IuQak2)3T&I#<mOf&PrZtGQiO1$DhE8W-4k&b+8XtrA?CZa` zAB}rL2s7E&KfOiZ-nCfF=1K068OEun#msd$^H~6?C}4L(igcbPe(ot@j75)n2thax zKZB)M30h6l{?*%q4QvaZH4t|5!wYIybZxhu;S{aJk>n#Lj6Swej17Fdp?$&FdeqRC zje+}&?w=dIzcGwd)6n#NTl55ko}HOKd#*A$edfVaJc@PT=JO=R(t&%llTfWqZ)+`Bv@m{DRx@?V8_l^PUfe=p{O8 zEz4`j?qX8xV+5YSTn{}H0(zxf@u0QoeV6|p~cGY%cy(Y@zr`dd~ zWBIY&m@yVOUbF7lbGcf>ijM+guaiCKf$X(#bzvBM5PFS{>#s#|`v=31tUIw0HrELt zqs+HGzcO!ODw|fTG7P|SCp#CMbzR{U@Wr^c7qsG+jw_FwQalA~h{@NnW1u6V1~C%nMbI= zR@ts&wLG)IYT*JwVJ9ah#&Y{-tAXPO^gzfL1FjaII&i=o8oraTc*fzgEek(57Zvv2?y{;=>j(o}EuX?>!n>o^zy!@hg56Uuu1 zpAy~T6)FAoheQDCQyY8?C)qpis~mNB(8gil{1S3oUqZZbWBA(Fi8M%r?_^0tn_&DZ zuoi-r5SM{99IuU=BlDDRbG*|bm%3~RiQ@$ji@Z)802%j9EtvB-e)~xhkK^!ZwDzRI zb87VuZ=FXrA9^oM0AGc8X8!%YD5J#jEa81h@@9l%)+Co1$2(bcw`69KrP?Jn7;qX!U%)PVvPT(JCJ#dsB%+!?HsP zKSOaIP`F%=ukbNi@3RVjk96@3CT`RiTK?T$RqTgp++Qd>P5jryu|XuCn{O)iazFm0 z*vs|GzkS>ndiq8F87g{-clRBDWLUT(Ke*y z+AYiU?M0uNbCz#0v+8-wbUQ-fy>oUosKYg9z5_N~wyIUvJ`ZN-OvtsIx{a=@3@%-^ zbb;}th`7S_TBnV-MrPtg(S$1xeBi(b59xI$FySV-0AD9d6xVK4=3T38(?UOBlLLRu zxjb(&T#1AQ38P0gF3- i$doNcclHLp(4d?VO<1eB#%ad+mudd5hn_-E{r?N2V#|&I literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_factorial_runner.o b/build/test/out/c/test_factorial_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..121ea181759f3110f4b8ce8b6b50ec40982614b8 GIT binary patch literal 9104 zcmb_iYiu0V6~42ZS+BE+pGmNjfY%6;km6lCxFHE4*~GE41`{V>LlOwXKF0Qv^=z1( zNn*-VRtphDB|@!=8kG>0QVAhIRaLd(hf6A6KM*Yvf)-I8f*J`B2vmhfm7a6%xx3?= zwfdvI(#}2SyWctY-1nWa@9rNO2pNV@$q-vaRa2-Cubp3&QzWLud19IPvhjj%M$^YW ze9=_pRViH+A3AVaF>8ynXg>Sq*|TS7-@(VP@PSx>KKlm%1A2P;lX&{rooCX={Lj+q%=iVb z0~mP#9v{Gu>VSx3>x__$Z-LB=2rz^ZqG-(+G}4ez3&{(p8Y9XXv5Y3tDCWqiI5tJf zPb|L->|4=cNm2Ohrlgb8C-j_;>ln9DzM9dk0>Zxs5NMKzpFj^M@qbl<}q({CoA~TTJ!%r-3!)N46BjQ2bi>T%81pUj1 zEJwlYS~LUM!&rRKaFixyQ$w=awp!6i?#)&AjU?FO2 zu7)T>$0tbHL?dzh7E*R&Plk@~6=Z%1o64yOigAMQxWX@D!8j2^iQ-3rG{_mJZm5Ab zBZg_M%z!V9i$pB8B^HLo7g{XB4VyY6SC|`PgRL9DX?PhTu`6N-z&aoTt5|L}idbh9 ziz0?G*lK`K*C_^DlTa4zC2xi_-r635k*H6It?gI`qMeIZw{M2ASZFe_Gl|t8FP5m- zBCFYGsY|up4%|g1c!yD)<0qmRcL1ZI*|@l&H5Tqz(Sc@7&=-xZMl2>hR`ETWRQ%BG`S`Dt3lA#Hn07p;DsEMQwwr-`yoX3$7xVn9?6tEwAvP!=*7YS5%k`%l^RDu1r8%WYemhfHvY%_|a;U%ZCSi?si%ML3kB@ zCU9?n+%Sx98x~^*vl9(xbo0Ywk^=>~ zv4BpY4it*EDBIrXp|Oq3)^pfC>MSe|r; z7`f!m;Sl8L^@!k@sd1^U1Cg94P1?z^e5P>uhK(DOJ4!i!5|&Ikd1%r+Ddb=Pil38Tt113z{r6DtFl;d>LN^Q4Fsysg2A<2CsQl~ zB6jxmZHliM&B99cdAI56@k#BuYu&m;ckd+((*+iJ3w{f$-o6I@Q$b5*{xTK*iDKZ&_251k^yN`T(x^3B2Wvb5)-b22=`7Kks-o>Kro zxW*eMoW#(lbn=mjx?f?N5LY_&0bo6hf1lXZ``cE=J;td`EQe|ISP5idQTt>LYX`qF z30H253XyqO-a+SrpoQgo*&I9#S~JZm3Dfxw;(o@JuJR(|IA<`a{7#Ttpnp;bLc;#S zbRYa^yh*D*9-0UL8Q|zA&s1gm*gX6v=E0wy2mce`=)Z%9nC22-FU-UL%RKl$=fTg+ zgX_m?Wpk0o1RV@>&ds^U2him~DK9s{qy60L&NM2*bBEWV8mx#cXhYwu2P1QI6 ztEaL&x~-i!?d!-}1X>nS}Io=-ejpz(~XTYTPEyUpk zrh<2Xj0y2Z_$mG%f{<`t;>*x?(#_ce2tq=<1%3*D7(qzr2kXLeOuv*_1;>2`)8jI$ z;1{v}%slw-HC(NW=QUi-=f7(B5bJ;A9OJ`xeic8?H%xlFzLIbyPUYu2#&tjSJnsvx4PV9hat+_kdZ&iJ&-xk-KgE8M8vYIAy&B%h zai=u=5{`dJ!=Gba^^|L{c{aJ&U%>ZQT2YwxcpQp*Bq{|ZpK$KA62#X zF`kPxKlF7M@SXr4&k>b2X?%qb1o(Kqs5Gqc_i({Y8a~N!W;Og(#(fRHjrF@U{08Pf zqTy;iJgVWVng6(kf5!MTjH8O8y6>FU_-`@)6^-w4d*9ReA2a_m4OjJjtKq6W>dUSg z_c8Y0!1G$gnP*(>LyEtj{jSpZDdulvT=9R${4E+^-P8AIe6>!l*Z6DMe?jA`esnZG z(T}Jf0A*v4itWx@pYUl{1evKYxvi! zr!*Y@EP<(CW|i|4zlUSGN@f*2$M~>@7a0$pkJ#QR#`kG_e0Rlkv&<^~A7Olgaa4K8 z35hd~SP)NX_*&L)(Qq|S?$PiR>nAl_&D$9bSL^6q4Oi02d?pEE_~lBO zKz&N24_c(>N|X4#NF?wRQ35_Szz0kCfXO<1qe;Lwq(iprO|f5l!WyG5g51*oEsKLW zj%h@5lVUyiw?u?^I&dj`X$J}KxTy*vg;_pe<=?#Iy8zm%HHvpxOt|h4=jDwMrC;b3 zF|Nax0**d)`;$ym`v99)>Q{OX2uKaiT`W`f7orkKdi`6VOvjM^JcIXYf$7|hz^&DP zO-s-Ve01W0K@~;4|8PIheF7x<=`D0M1@6`$R^voAfzcaB41=kr{J*r{@RcH+3U(mWcL`HV9+^BD^>A zX1$)SB}5tNX5Ra~ui2TmGw=3^sT0R^O=GfY>@Zv5B+A%w=L$W>$uYK>ZDM~-@A$`T z;nJH|9{PC%S-9{{_GUVhK!cmZWKO0_3nJS@0at1w7ql#6@hwusc>m( z8Rg423+cT}8apTVdq-SFQ)4|IhJuh2j;iU3>G^ty?l8&VsSz z7#~=2>7dS7f@w+QZ^LdocHy=hV)SGya(a@lOe&tJ*&fq{wXO?UTnt(Z*VMVDF1YwS z8pq?p2Mt0Y!#PfWBWr*HCtu7SkmO5SE(00=rsTi9<*Ug52)ee`_(x&TzpQD4kOMpo zHuAoM_Zvb;7pHgezK8d>hmbx_kMsU0?gIEHLbHh@fX z{D9u#0u*}p0?>uy^FC{ zLp#!qN*rwI?e5Svw2pN>)~$hl67;2r^w$|IO8?PrNZ}6c!|k1^*v_px(Mbm0ycEq0 zp1&=w9ZscS8l$O$iIEh#U(ct2iit~uE zLv6`sC^2 zvf1gGlS6~VtX2fcz|dNf{rlMQnc3{bz@6EF z0b|hU&*mDQZ(D~dmTft;GO(sot{yr+Jd_(6%;qZD+`Q>7+U2U#w41)0^X+prdoJgh zrMl&U(Dlsn!?^{g=~-p3>Ev7w6wyiu%5~GNN^z}egP=Sg;v?r-m^wAgT+5qXV6%43 zTO4;?%kicj@y+^--zZs5q}4=W{C+lHZ<=1D7*~w>wp**%)?Bt+HKV;i>@`*oB(QpQ ze7e959=2|^>3FLl&vLyYoGHbbqTI0e?a}a>vm9n~O&^w*1#UhLZam9$CY$H%HO(L$ z_)|HS>(`^#0GA*tx1v#zV*G)5hYuU^=kWD+Y;n6q!cc8e!{Gm z{kjQ>oR^Dlls~X9mOpDc`FgFCuUHK?zu)LL`UP3Gthsv4uH^cS{R758{;XxsL2Mth zKJPjZ+IO9N%`VsdIV%q@WpQXQ2L}H6T*dbDrJCmkSppLc&6&F>!roYpZPs0*${MCu zEt_>tv*QyJquIXMl5cxHodmf7pR)sx@7rhe5AGqD;Te~KA71}(cHptPgjfuI*sz|$ zragK;)6QqKt!=HzD{v-m0}OxI`2951p1G(`tZz9A3V@;PE)+srOa7n`i+fYr>lN+* z?H?mKzn24fO#~pBI^b~~XYbuoapd9fje-H^#n1a>F&13Gt7I|d+L6Loa8pY}j4@Hc ztOkLLF}S^z)&~5B&^+bczkzVc%Mq(v)ZavYWDU{>JnpO7@al}hCjdu37s)`@LgB0v zhjwsO$$aGJAl6uG9Or=^9(23OKVG4jWB-C$8QcCf@OufzoW!+}`cH&#EWjlGCBjwz zFDf{{+X2I>5u57&Jppq(>|YifSi6U_MizmHV^#SO+2g)pLmX`fkbx%mOX31$OctY< zsX>_m^c|#t`r)jU{t(BwU!xQs4(TKQGjeuJ!B3O^JqrFk!cQvr^W^6f3jRC7OA7uH z;WY&xCfrx>QHm?yefeB+F)k?jPm`ag6#OdT&nh^cE7+bF1K$^1pAJk$Xx|b;fDaS? zV+DVi{J*Z?lZ5|4!GBH9^(O`2L;PC`K0*9D3ht2qn+iTg{$&X)*X=FB|E=i%o&3Z} zF7>z5^WLW7q@Pjnx5@7&1+NglO~F4yy!aO=-V0p+Kazj(k8lO=A$>#fLt)tg1%HtI z+@s*~d7f49R?`0>;W!|4kpg^2(LY4`zg6%h;$No`2UL~s`P+)V^phrka{V_FFGuM| zp7*_qzTCgPgiC#zesETxe|hGiOx^*i{_SLl`gmTQAbz)ke~S1!6#NF1hY zS@>K+|9>I;5RFp*Z^R!}aJZs)JFej3n*(F`VFH`_Tv?8aJ)x!I$e4o5bv~ouavwjf z;4)8`;Vw4de-n(JBgU$v9II{`o^{@1#+>Py%qY1oGn}SixOC1c`4uSW=9{3yX|q&v zth1no#soR0U9r$~1%qUi@Fx!b)DaJLrUB*h0{jD8 zB)?X*IPaJZiyrg?4q33ry=YPVj1e!-D=DV!l`O;h2J?0-Km<|1VgT9_??s)8w(@@N zA{_G;aXQurWo%dtL=qL=3po1xU+wXJMxWuF12%{+-$TT($@vS8!BuD9|41?^-EI0@&h^)u+GOllJVvGeFQMoCqV2;T96h+sIa^aQZclDhT`@k6KbmN zDUe0Y|CJ75B<*qj_|;6E|095@KGE`3ijN;T!%fw#gD@)o4T}E;8Do4rJJk4iPNGja zPat`_n~KK?C9!0DIerebqwFtJpdC_?{7P1iUs=QcyZjR)HQj$bGHuny91 zkiCjaJBhyx1m5pTng;e+sYs(-KM7w40)49X%M>4d+7ao9AJbu!aYg~r$%qP7|6s&{stocml{ku`Fxml}dd|7$?!Me^ z#&Nte`|dfv`#a~J`|<9*@9y1wL;XI(5GomBtEgxS6=HmKMUIge6BmhP;=RVzAB+tg zKl{9?$}7@9MSO7obBbAAoI~@uGw08rpL-1-U&jYx9{SwV0DAO+nZJYwj^BB1;CSiX zf#YLy1NZeoPJw_pR~98QGixZM5|<~$xo+@2@PH&Af1WDGnD3b_g-8LP=gz-aov}#9 z--c1IE{A@)+-S|}nR;kh8TpL(Y2-uha$u$EQ42X_6ma8FzgbrR zy#_&l?NXG1hTOa1M@Ef;9QuR)ae$iOCtj#o5uAmb%xc1o5d@{uQHKRFsa(>8UIs*S zjhV^2(vKNl{Stt+_rc>W_)#4Yk!+pelkwHa%m@HO7(R;D3_&9e3AK=1L)92T&WL3+ zkw!5GPKL25QvT+OE5W`M9R|K&G>wB|?uW;cr3kedftQWozd`q*dd6r*St`GkN{~u^ zFO?=zUX@B4DX$qzw}DNVls_14sH`RBb*Xfb@`hA4lJcfhVx+t!l>t)zWYj+o0qhoL z3;0=vK?UA1+HV1+judkivN~!T>IBwS1B0~zG%7PMLVDnRBQT3O{6qsi>)TKcyk`WC zKm?1a{mTjZrxCy@EzHivvyeT4#rO~=jv^U{=(%_$=)xGHFi^y_S7yREu?i)l3tt{e zr#LrGG(dEVP+R*+h}HK{nv~5n9uM70%5LmW-$Ubq%-6B0oRFXxCkXFQ_@yiuCqgJu zU?`9VIpfskDtHTGm{di^31M6+LZPi8KfHpzdf{)_+!46i+!PvY-3U(o%Mb}&9YO%! z1|qPEYGZ9jz~f>Q90^fBueN|<+yRV+X5+Gk){wt_WjmTR!Nh26 zH9{fT3Jj*H)$liXfoARkSc+OMC;zS7Zt4hno7RBqrDSM=C&1CuGHMN}*cfc`MI0G{ zYnBhTBG?u&sB;*+W;q%!pU*_ziZTznM;aq@Wtqva>js3{7Os^m5XJ zRxi^uM4b!?82%Q+Tsrfpx#UsPcw+0!)|u_5e`XIP)7Y~OM95<1%3#Utc*0!tq}k@0 z<`coaX5Ah$7>t;8LwnLnFwMPtiS3^`8$4|;3jP8#pAUlGl`SOV*%2pYJAIB*a71s( zaqPT13j5P=JZFos;la^8*4W_i=!PC4**DovW@4Ibgk|O8#RJx%c+o1x585d)me07; zefg9?4}+8Wf@2rOL9##u3=YP#V%P9kxVQVNaCdj4C(;$}%(JkUAi6kI#$7M#wa z3q-V%1<7o@m{!G^LLLf|6CRyH?ayRwQMBE$srh@br$1zCQcxaub`}ohxjXs}PeHZ4 zg%WIa6WK!CReiYAcH^1sdSQXv+j3K)lrLr`^L8qnOvfGQ2*47h2`N}8ZBG;&x8K2T zFQ!2Zmo0D`RYwLoC-h!dNFK1{NXS0N-t8~tlP8p`DD;ZiPPJ0c6Bl`rLFXcQmzMjm@f_QFmub_&z14Z;Kz z(spD5{T8`1(F!8SOhP!8E8QVRF1d5KHFD&-g?GGQv}lkjFN8>xGTBrVJ2wiw40E?g z3ZCmM3Bd6#nl9w*=tL@>xoYF4P0^i&WGM$PSTQ=4D;=_6(%xntaIHMd-2_Z(Xz>4R zaA6oCS}HoxjO^PeyhqlCo=)h<(&5g@d?}j9K&Sk7O4Oa6f)Vx-Mf70YiDom2=%k%1 zMz4%?MY^PzwCxnsFxlA^xw1Rb9X)90Qw1kl!sQ@ZbUer0a?fDL&F?GuqD0c3aRLQK zx0G}(dSP$~aH1kiZxskshXq4vJNbCF2#DC#+q*fub}Rw!WQiA<&h8Sa-FK~DAL;7( z7{j;}L&D`3&$xJ&gvAM0=UK#PZH9aa{4g0uZV<-dCS&E|+Teq*j^ojWjyI6gk)f}l z>2to``am2ATy_oQnCJ+i%6C-C_sQY~%kSWFI@&1vPgU$sa5` z+dGJ(j4NH`6O5~qh{_KE-U9s-gB%mh0mwfCKN@cYJ?ZlxSHm9!9Q~x2t2kd-fdAM6 z__r6pe+W4GZ|5OahyU3H_`h5Le`5jsuM6NGE`V2d%kpv~Hw)Sx=Ix&IHxZ!A?NXj~ zyqo)lr=JT>PnEr{d`N(03eFUs6A*8^a`~#V4OaGMxq(}|hDLU5AF@XJ`)}+UwMMt^ z80xbs?YrRCfc)bL4AUZd%F`y!-g9shfk~}rc-VyRnlj$*;Wv8lLB?^uHpA~D>E`@? z502kX3jZSG=pXAsJ4|1d8J&I+$Mpx(<1#Dbm$Lrd1@IqexO!iHqTyRX-7)Ss3!JzQ<9zK4%DtxQP zr;iLMA7C8U)fFE8K8>&D!Gwp8-^|K?k#US4$4cRuGzSLVN&1K zh%Y8YKIno2M1^0*Wf(IitRDM9rFASIAAc%ESwIZyo#D8z({OozBiCUpQv46Nl7z

m3^YXV%wh_$l@i)o?$@)1%=XGHemk@b%0e z((s?LZfW?9TyI{(;X|C#?HZ12AEtXXypikul7^45ep18l=X$@R;jb|MtcLe6epADhnE$?pKdtO}{;GIRGOp&e!ttDn zX$kXHoGA&5HJYC!`?*5n$C$rO<8$5{WGhO2oytKsTBdR@cS`zRvC=^R`@Lhd>;Pbv+;;)A9h6~6?fwz zk|-8M#3@LHN>g^CGznK069wRq98V-1`ykNJm?0;gpM(n-FNU{a$^`0DB3+V^o-E|> zdPzj^MkxYU8E_j4x1+4X?N0=*oThBYoo2sw+M1v%M{eo=mxaL`$26e1iLtKVt@Cs! zv+?YSXU$j{k-}O&K#udISOPHGs&`cVpM&om;{1ApB-7J+MU3n46@a5p-F}vdY8_zn za{Ws01_7zwxr=4WUY&0d!=%^0wF-v3vrIgu1*Y5M{YbU`JBl3!=?o7HswnFHhwFjv z6CjZ_@ri$s%3M7)Rp9rajv;p^f0%SBL(X;XIN;UdAIFISN!erk_}!t$kLPvWCqTmG z`hSCpC+XZQlvS($Uao&P8({tTouSu%CtyfXae_!`fQefc7(W%qy}+(!e-Bm$=@CVg zYPqcnei-m-_N)1DhV$E-l%2{SgF+>HdDnUmcb)>B`y`ZMSL^eCH`|9jwkWFpQ}AgJ z(5G%c#rEeEk#pVtr+`-*zcYN%@GZ8(@xvuW*{k)VTHR=p=ELe!92kD%V@SF^&Pi>E f0TCkHOqry literal 0 HcmV?d00001 diff --git a/build/test/out/test_factorial.out b/build/test/out/test_factorial.out new file mode 100755 index 0000000000000000000000000000000000000000..b7a6cece0d29927c09c14346b915a024efea1091 GIT binary patch literal 64784 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 literal 0 HcmV?d00001 diff --git a/build/test/preprocess/files/test_factorial.c b/build/test/preprocess/files/test_factorial.c new file mode 100644 index 0000000..debbcbf --- /dev/null +++ b/build/test/preprocess/files/test_factorial.c @@ -0,0 +1,47 @@ +#include "src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_factorial_4(void){ + + + + double result; + + double a = 4; + + + + + + result = factorial(a); + + + + + + UnityAssertEqualNumber((UNITY_INT)((24)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/preprocess/files/test_pow.c b/build/test/preprocess/files/test_pow.c new file mode 100644 index 0000000..fe4db9b --- /dev/null +++ b/build/test/preprocess/files/test_pow.c @@ -0,0 +1,79 @@ +#include "build/temp/../../src/main/c/Calculator/calculator.h" +#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_pow_N_N(void){ + + + + double result; + + double b = 3; + + double a = 3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_pow_Z_N(void){ + + + + double result; + + double b = 3; + + double a = -3; + + + + + + result = pow(a, b); + + + + + + UnityAssertEqualNumber((UNITY_INT)((-27)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(36), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/preprocess/includes/test_factorial.c b/build/test/preprocess/includes/test_factorial.c new file mode 100644 index 0000000..f2efae7 --- /dev/null +++ b/build/test/preprocess/includes/test_factorial.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- src/main/c/Calculator/calculator.h diff --git a/build/test/preprocess/includes/test_pow.c b/build/test/preprocess/includes/test_pow.c new file mode 100644 index 0000000..26256f2 --- /dev/null +++ b/build/test/preprocess/includes/test_pow.c @@ -0,0 +1,3 @@ +--- +- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" +- build/temp/../../src/main/c/Calculator/calculator.h diff --git a/build/test/results/test_factorial.pass b/build/test/results/test_factorial.pass new file mode 100644 index 0000000..ede2338 --- /dev/null +++ b/build/test/results/test_factorial.pass @@ -0,0 +1,18 @@ +--- +:source: + :path: test/Calculator + :file: test_factorial.c +:successes: +- :test: test_factorial_4 + :line: 13 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 1 + :passed: 1 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0060175769904162735 diff --git a/build/test/results/test_pow.pass b/build/test/results/test_pow.pass new file mode 100644 index 0000000..d103a0d --- /dev/null +++ b/build/test/results/test_pow.pass @@ -0,0 +1,22 @@ +--- +:source: + :path: test/Calculator + :file: test_pow.c +:successes: +- :test: test_pow_N_N + :line: 13 + :message: '' + :unity_test_time: 0 +- :test: test_pow_Z_N + :line: 26 + :message: '' + :unity_test_time: 0 +:failures: [] +:ignores: [] +:counts: + :total: 2 + :passed: 2 + :failed: 0 + :ignored: 0 +:stdout: [] +:time: 0.0062921050121076405 diff --git a/build/test/results/test_template.pass b/build/test/results/test_template.pass index 493caaa..28bc252 100644 --- a/build/test/results/test_template.pass +++ b/build/test/results/test_template.pass @@ -19,4 +19,4 @@ :failed: 0 :ignored: 0 :stdout: [] -:time: 0.004427945998031646 +:time: 0.002953332004835829 diff --git a/build/test/runners/test_factorial_runner.c b/build/test/runners/test_factorial_runner.c new file mode 100644 index 0000000..3e02547 --- /dev/null +++ b/build/test/runners/test_factorial_runner.c @@ -0,0 +1,81 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_factorial_4(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_factorial.c"); + run_test(test_factorial_4, "test_factorial_4", 13); + + return UnityEnd(); +} diff --git a/build/test/runners/test_pow_runner.c b/build/test/runners/test_pow_runner.c new file mode 100644 index 0000000..83a9119 --- /dev/null +++ b/build/test/runners/test_pow_runner.c @@ -0,0 +1,83 @@ +/* AUTOGENERATED FILE. DO NOT EDIT. */ + +/*=======Automagically Detected Files To Include=====*/ +#include "unity.h" + +int GlobalExpectCount; +int GlobalVerifyOrder; +char* GlobalOrderError; + +/*=======External Functions This Runner Calls=====*/ +extern void setUp(void); +extern void tearDown(void); +extern void test_pow_N_N(void); +extern void test_pow_Z_N(void); + + +/*=======Mock Management=====*/ +static void CMock_Init(void) +{ + GlobalExpectCount = 0; + GlobalVerifyOrder = 0; + GlobalOrderError = NULL; +} +static void CMock_Verify(void) +{ +} +static void CMock_Destroy(void) +{ +} + +/*=======Test Reset Options=====*/ +void resetTest(void); +void resetTest(void) +{ + tearDown(); + CMock_Verify(); + CMock_Destroy(); + CMock_Init(); + setUp(); +} +void verifyTest(void); +void verifyTest(void) +{ + CMock_Verify(); +} + +/*=======Test Runner Used To Run Each Test=====*/ +static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) +{ + Unity.CurrentTestName = name; + Unity.CurrentTestLineNumber = line_num; +#ifdef UNITY_USE_COMMAND_LINE_ARGS + if (!UnityTestMatches()) + return; +#endif + Unity.NumberOfTests++; + UNITY_CLR_DETAILS(); + UNITY_EXEC_TIME_START(); + CMock_Init(); + if (TEST_PROTECT()) + { + setUp(); + func(); + } + if (TEST_PROTECT()) + { + tearDown(); + CMock_Verify(); + } + CMock_Destroy(); + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} + +/*=======MAIN=====*/ +int main(void) +{ + UnityBegin("test_pow.c"); + run_test(test_pow_N_N, "test_pow_N_N", 13); + run_test(test_pow_Z_N, "test_pow_Z_N", 26); + + return UnityEnd(); +} diff --git a/test/Calculator/test_factorial.c b/test/Calculator/test_factorial.c new file mode 100644 index 0000000..28814dc --- /dev/null +++ b/test/Calculator/test_factorial.c @@ -0,0 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include "calculator.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} +void tearDown(void){ +} + + +void test_factorial_4(void){ + /* arrange */ + double result; + double a = 4; + + /* act */ + result = factorial(a); + + /* assert */ + TEST_ASSERT_EQUAL_INT(24, result);//1 * 2 * 3 * 4 = 24 +} + +#endif diff --git a/test/Calculator/test_add.c b/test/Calculator/test_pow.c similarity index 100% rename from test/Calculator/test_add.c rename to test/Calculator/test_pow.c