From e1ef9ac76b4884d6442023c780bb275c07c2077e Mon Sep 17 00:00:00 2001 From: Harun Faizi Date: Mon, 15 Dec 2025 19:14:02 +0100 Subject: [PATCH] Implement stack + unit tests --- makefile | 13 +++++++++---- stack.o | Bin 0 -> 2876 bytes test_stack.c | 21 ++++++++++++++++++--- test_stack.exe | Bin 42192 -> 45646 bytes 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 stack.o diff --git a/makefile b/makefile index 1f15f75..84d7bb4 100644 --- a/makefile +++ b/makefile @@ -29,14 +29,19 @@ program_obj_files = stack.o bintree.o numbers.o timer.o highscore.o doble : main.o $(program_obj_files) $(CC) $(FLAGS) $^ -o doble -$(program_obj_filesobj_files): %.o: %.c - $(CC) -c $(FLAGS) $^ -o $@ +%.o: %.c + $(CC) -c $(FLAGS) $< -o $@ + # -------------------------- # Unit Tests # -------------------------- -unitTests: - echo "needs to be implemented" +test_stack: test_stack.c stack.o + $(CC) $(FLAGS) test_stack.c stack.o -o test_stack.exe + +unitTests: test_stack + ./test_stack.exe + # -------------------------- # Clean diff --git a/stack.o b/stack.o new file mode 100644 index 0000000000000000000000000000000000000000..6d7ac52f728b646dca95de0055674e6aa935f5ac GIT binary patch literal 2876 zcmcIm-ES0C6hC)nww-p{?Z+-c0h2Y>h>=cPCti)AUR<|bb62%;;^O4sp9)4(ZfCRffWXx%nL17BFv zL9i|%G+YF)f2fglTO-P#z8A(#z?`AZ1O0=;4aDup?N_4#QoNl54PYAD)+VAI7%LaJ zR=lBIQm-}_AnXP2V90}e#oM*JN|EnQw4Z`kUu1s6d+H(Tg?4WZZy?jZ`^z*hajb6ro;x5bMzg@*M*|yv%-{$gB1H!#KihAjSNtNbLn0bHW z)p7G`#*jVCWusU2kGOTj7!&E`(8c}D>-1Y5H>LaUR_@(dSy}l2lc=WN5QmOTrpE>c z)5F$IYarb>SFU*WsAGG!@8+TA{Cr{5-L+>p-RDqSP|oGgSa}*7nVJl2KbV@$xl8WU z*kQNi9ra76?R+_ya=qCdQaMx3?&RUn4cTJtjOL0LxQ=Jfq+PE}n${c?N`5)rfa=+t z@8n6#zmIO35o4yr=1H6R9GGF;mF?GT7fty>&IchoH=WH_{OnwAk+f^vSI-9Lf-FYj zllBz@G47{hXEcR2n2K(IM85xB@=L+I4e}q0Qd@96sXmC*x!maz?0?n(*JI!>2AZ?8 zbEO%Zv~dw;UMzWz8mJkQasA{&8Lm630B?Pos*P2G+Hmj|Op!MQxQ5^UyY9)AuH=46O;b0q$3d?LB8 zXKxRN)&bi@66-C*L{dO#dJMsvLtd=PGm}D3#N*tRNiFS>pFNoDR`!Bve*}}Rykp`m zv9Cu3d$Na9$!vP_Ko56rk3}?X6Hy|LoV#%>bkve#ytCfHL{hnUOS$NJm@RbQy^f72 ziNN9LIRI@%RkK|?T&v$7Omt4#526*~L82Y4z{C@($dB~Txt_Do?|S)S1zV7+-#Z9F zd8X)2TUgC1TmXs^lhO2)DExT&jZwYBa-4aCX3zj`ZwM$-{WZdtjy z(lZ?z8yiV)d*1a9ov=#2lZM_W52C)or__l=lu}_xEWJSDyeYP{8O9YP!2{*W!{mKM z`xEA6?Ld3XxeJD}?FHPA%KJ647i#t?z%QZlzK`t3YxeViebk5f2h4Zd7St3SLCeXc z==Dg#>Qe`5obb63Ux!V^H#Bw&uuB-i1}S|UN#8(Hyl*4yeuQnnL@R4AB-M8`!VX7R zCBiO780XS1qw)Qxyd00DbSR}L6G^8c>0%^Vvu+W)LYBY(A#z0B1_|-3{N$A)C`}sj z|8L3iX@bJjDmj$pa|neGA%(DZ5|vLkh1CDyuv1;|zUKd$TB-lL!Qka#U$ZKy{?CSc z^M&xRQXMI8FkSF}4X<}&c_mb1cZpTT0y z*wYm!i|f8rm2=b6zC9mle$I33psE&K&#uZr*(b~AlfQRqX^AYmfEc+so3eFR+y4^a EUw&Yyl>h($ literal 0 HcmV?d00001 diff --git a/test_stack.c b/test_stack.c index 792657f..f6f1377 100644 --- a/test_stack.c +++ b/test_stack.c @@ -5,6 +5,9 @@ #include #include "stack.h" +#define TEST(description, condition) \ + printf("%-40s: %s\n", description, (condition) ? "OK" : "FAIL") + int main(void) { StackNode *stack = NULL; @@ -17,21 +20,33 @@ int main(void) *a = 10; *b = 20; + + printf("Starte Unit Tests fuer Stack\n"); stack = push(stack, a); stack = push(stack, b); - printf("Top sollte 20 sein, es kommt %d raus\n", *(int*)top(stack)); + TEST("Top nach zwei Pushes == 20", *(int*)top(stack) == 20); // pop test stack = pop(stack); - printf("Top sollte jetzt 10 sein, es kommt %d raus\n", *(int*)top(stack)); + TEST("Top == 10 nach Pop", *(int*)top(stack) == 10); + stack = pop(stack); + TEST("Stack leer nach zwei Pops", stack == NULL); + + + + stack = push(stack, a); + stack = push(stack, b); + // clearStack test - printf("fuehre ClearStack aus...\n"); clearStack(stack); + stack = NULL; + + TEST("clearStack ausgefuehrt (kein crash)", 1); free(a); free(b); diff --git a/test_stack.exe b/test_stack.exe index 87c27a3999168463684d10f708264447672877d9..f931938031ab00be46b633bacf70337ac76cd6a3 100644 GIT binary patch delta 8534 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 delta 5869 zcmZ{o4OEm>8prSZ&J2voXM&4-4h$cHD9ACx?*R-mO-U^)%aPSVsSyx|6?cO>Hx0|IZA}%(b)k`10QSyZ`68 z&;5MwcZb-1$kukAU*o1Iy-fS8irU;=GV%{OK`Qq!!SgKX#DAjaExu)dO zVKr@>D^>{6g(n_Q5gxx}5@GpSW5>8j7W{}_JSv_tiq}Mk9Anhik1D88lMo|-SWt<_ zFPTJkJ|*VVyrLbeHjkun+Ih-E+Mpe$Xz8#vO1+Xn7q!{y!3+x46^5+L5aJ_kGMhV} z38P|NtU5h|?7C=WByH2htIi^NUzZWn0$JTvt+Ojoh@ELiMTJ0D?-vpM&EF0nWe7w84`LV{o)m$UrM7%gQuvA z(rE4AadT7C5dMQV8Xwfx{X#FQdYjq6ZE?A;?yA8#E&x$YOXjKO=$4{I=O0tud8`fL zJcm4nDGGJ&^3hb4>S#}BIVZRf;AiS&DF=mM;ypZq^Y^*qd~jwx@1QPs3FV)!(M4L3s@ zUIuE4Tg#=3p$)ZM3a&xvgL+2CL+k$l^Z~1z3iNfimC%L)c&Y0Ss{Ov2?nV?2x1!yF zIdfk5!R2y`x%QdJQBiDIdA9C|Vc{ZkcjL`Xomc_vk9I}2DY=e~j`ecey?a*hWRECzNdzmsYRrqg`nk%G-1@En9ipaX0OYK{09PTrR8~PMAek z7>1A&=dpu73+CO8U|hl^M7AS5$D-PWm|tFDSXFMd+AM~gY{M!`X<4ShvdZvW`HB@b zL&{P^WpUN2!7%jGJ!`Q&Z!?Vf|LT$|%koN#p}=Y>uAFBpUh1~cv(;Ih^s~u1>iSN4bMiQ~uamx>oPjetcuKii ze~5lL<#Bb^VLCUZP+fYM;-_Y)>krezQ%9@LpH@`h@;%%2zv2)404O)p?qp%F9rKs39*ae$pA2%e|Hg zLc$&$9HPw|;^}!ahOOufoz0u8UOnqb&HpkmkY{0WjL8xH@PCxe*#QpitRQt*bD~M$ z)*#i&1=%B{V}T=At?UwUUj8-XTidlaNe>} zsW`ZXgbvbaGAElHi8&f&_YYMnRjqkkZBBHYT(ehsWo;~H!+kzF8V~z72n)@UWeSyiH22Q8_{>wZBk$Xm{;&-8ZN^M%QZZ zSF-54I-|N+OT7)zCUZr31!_bS&QMR&W}Al`@Di@Sj^~t@jJ8>-@v#X$b)b$`6OCL1EQ0oT0vXW9>FsgUB$)wObZa1vtWj&OX4UyFR!d#`6?bwx| z{dEcH?BQJqpoTOTe^Iz6{eW^9U1~6D~#_>m>v26$Mf2`uwQ(P}zlE$-&fw(Czhw>QzCe#-!9bxV`HV zVwqA>{G5dwk<%IYz}T*Dj1TyWC%X^XE1vA>#w4{loNhFhD7PrD&Zq>CeM6cujNaH_ z)OCiVW!k(Yib6Nc3}8QR2+D2p_`%wLx+z|F3)DdNri4)TxDqX)znHiM6y6XS;GR|u z_0{rV2MonR?Fx5K23}zs^V8!%7AFq$kK-H(Qj|1628JV>e!kJDw9t-?2?3L#XixG? zX%aa%7UI*8wJE_q8$26#5Z}<6LHcm5@sSD;6SlmMya3WHku7W`k>7$CMh;jF#MGY3 zg!}px)@rolB#~)6 zV@P~&^>kw%$Z|=u9OQ^@V5C{SRx1j{6JC+oY^kg)D;FlI`5iFplSl`MJoqQ*68!&LqsA3`PK0lzy6I5SIC@Om2-3_|ehtXYP;4(jO5Ujrq0FUJt(B+aqqP z1*F{@zqz8ywhFY@yDeC=7n+TdRVN6a=ALEAnm>aq_xfSd1Hu;;y!zw(mOHaoGE?AT zuVfZUw-9J1crMhw2J(@$O77-xC6aGwYCx(b|1W{;lSpg7l`pJ)Y=w1&fBk`eV(%CE zTwh=!&DC{~?UHL3$P-d$f-y<+B~1!Qo1}RF1djdYb4K8FPbl0bcKs?_LWkUDVSZ-kLFCippKgu+7Q6+*hnuf4-4G#e zNC6E6;pEfg55YYVOU*sHo)Lb8YTF`14N^!8>Gd|Fy#nU-lEVfN1FQ!;2=NNYSV{8+ z2%Pz?y+a@^lK&o%WJz-sg#Y8ux1(?02eec|arER)qkUWuUzGfNH5-JJub*a++mdY= z$iTAlbbJlSh)n-WR~-odNb&`-8Kjx7*6{AJYPAD#@`)TE^4aqzkQT|&r~OvG5U+vc zN*XoT}8^3q<_>I5WVUZu?zmyl8v`-`#%9vo#}723`E{E>p+?% zO)JPllIH`#!Y&qjk-4I>w9Hl_oKiq1VdnH|IG`^<bUs&s-XV? Du@pyi