From f5c181b8227ccd40565bc5171d1d3fdd32e962e3 Mon Sep 17 00:00:00 2001 From: Lucas Date: Thu, 2 Apr 2026 15:52:42 +0200 Subject: [PATCH] correction --- .../Fundamentals/basics/basics.c | 10 +- .../Fundamentals/basics/test | Bin 20608 -> 20896 bytes tests/test_basics.c | 115 +++++++++++++++++- 3 files changed, 121 insertions(+), 4 deletions(-) diff --git a/Chains_across_the_Island/Fundamentals/basics/basics.c b/Chains_across_the_Island/Fundamentals/basics/basics.c index abd0ac7..3279bc8 100644 --- a/Chains_across_the_Island/Fundamentals/basics/basics.c +++ b/Chains_across_the_Island/Fundamentals/basics/basics.c @@ -2,6 +2,7 @@ #include #include #include + struct list *list_append(struct list *l, int e) { struct list *tmp = l; @@ -30,7 +31,7 @@ size_t list_count(struct list *l){ tmp = tmp->next; } - return nbr_nodes; + return nbr_nodes + 1; } @@ -161,7 +162,7 @@ void list_print(struct list *l){ } printf("\n"); } -/* + int main(void) { struct list *l = NULL; @@ -174,10 +175,13 @@ int main(void) // l = [1] -> [2] -> [3] list_insert(&l, 1, 99); // l = [1] -> [99] -> [2] -> [3], and list_insert returns 0 list_insert(&l, 9, 99); // list unchanged, returns 1 + list_print(l); + list_count(NULL); // 0 + printf("count : %li\n",list_count(l)); // 3 list_destroy(l); return 0; } -*/ + diff --git a/Chains_across_the_Island/Fundamentals/basics/test b/Chains_across_the_Island/Fundamentals/basics/test index 350dd97199f19c4f27e352cbfed0706dce767603..ed2becae6a4790aae62c8c5241b3cddb0aa9fb24 100755 GIT binary patch delta 4700 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 delta 3603 zcmZ8k4^ULc8Q*=}dAtMl4uN;?Q0@UCCMb7M6+uPrh?vKp#B(NAG-D(IGtyGEBScK2 zCzYsZtl&3eX@}8kGBsw5BYMpYwrbQ&wA9wt8Jnh^PD-GkiD zy#4Kd|G#hd?Y-5^?P)GX<6$?WhZKWOUTe`YSyDKY7D;5T~Zw-EhP_)7ypqU}~ zRazMsQ3p62^XVQqSEE6T!$-FOb!gD+&xJa7?3m-={co>)#8$ypBM#1)@fn(E{)JZ|>^0%vmDC8WA3R{1*jp;U! zXr4V7OrhTs3lvYGR|xr2lXUclEe;RTL$FOvkBo#lfk+o|!=7JBp`R4=u@rg>d{fm* z&k8Py5Z8qI;j?j5?F zi7oh8*hUwE3Ue}!P%oUx(BMv5cH&-<>3rQo!SEI|yb&biix-141HD|{JY4L(Y9DWWIW(Q?T`&W;7qi%xfFk6>P*r4ymxa(hNysvJ85!w9b4{c|c zSsfYSPt5xifzv{O@dp2GS=`y^duuRdEaJvuLN2p?&)BsX!3NGT#-GIT_)+XoXz5g; zkG^0+iIF*`lJI1%P>ve$qXmvw8F}IP?d`4GgRP__*z`m>nj|zYZRsnBGw|8`nPm+l zn)fVg5HWJ!vOYvC`@3baEZ;@+;a=N-<|`3rqU&bFR>W?^{~!(`9>n}d5OW`(KBA5( zO;9q6?8bo)GhsPavWy5ED=5rAg?=ApvlTA>3O|Cwh4>7AYFT3hJ}4-p&%=X)fKqlJ z{Dt}S1XL9UlsTWndYqhvorM8<7rux6vv2|XpTTbn1F;GWA`P9B$PCXu<%#Ljl!uuv ze1T>o=@k~#gk^2Q@g%<`$!CYjbIA8k<*(svu745v&B$kgCiOSkd`7~Sh!uI=;K|%v zB~KT5n#j{5E>0H~BWp**K+cC?v^1b}=D}Y|cNbp4UC5ezJBP&?C@u?fiNe9)a#{(a z!9YPbo_4IU?Z(=e7|7#e5Y$je8Fs;vP`-D!VB%VBWx^SFYR6zavb>ESC$aI z063>ZU&XX(2YEB=08W*G%_QRr4*GBD*kj`>iAaYIqoC43`txnUX4?6UZRER2HAgP; zcX21RKCVh$Lkeqj=q@$6@~*&LW@VsR*+h0d$^udbo}pVi+DJ?q;%4`VSqquQyg62( zR_hElOu&f+zF6x#+m4y;VVp%vxTP?+wCPKhI>fA*wr^=8TQY6Q7UH;xDr>pPyj&b& z8?*t#J%+Ccrn9n5oiC%sv}5F1>4apIqFVGuj;;Jm(#E^Cji_PU*i0O3(}uan z93g!^DXrnQLXY7`gh!rNIA}*3`cfhTMzF4uSvR$3x z$3=B8i{gbWi?o4@F?9hJZl277J1F~7smdoyRgXH^>CDP_7IxT<*np+FV+Wos(ri|j zkTyJkRJ&Sj+^{a)kZh($oxBKg&wiG)g#~cVoh-RCIHlyo<+V92JaRQLx@bLB-dCV_ z@j6wS(h~a@*D1O)Yp+x7bvn}m;CYw@eA3H5SeH+58TUx)B{z^L&}H&Ut4~X z)`GW2ix?4U*2cY9_AJy$t>kwEJ#{mlfu0&oXNS9&T@{9H#UYHo$-e9KYeF~m<-P$Q z*J$((`=-;!nT#@>bc#tXGc<$yixVmAMMU%{ZM6k@}EV-Ww7<(1TQYyGXnQG#Y@hdQb9pkhjEq zpbcn6+!+$fAc9nR%}5-C9;C|4NMa>iZHUn^plKR3H%|Tq$yMrf!?zoQZn;75{`+y` zO8O35eL4U}lgB;f=VVD!g}1W6F0#bmLr+skP5$4&g{H;Rlm9+NC=2JDvl5=Cwo&{W z>3O<_#?f-fD_6kaA4P+$ih6~Xe)mSDLAL#1Es!?mt-hv1gwq> +#include +#include +#include #include #include "../Chains_across_the_Island/Fundamentals/basics/basics.h" @@ -26,7 +29,7 @@ Test(basics_suite, test_count) { l = list_append(l, 10); l = list_append(l, 20); l = list_append(l, 30); - printf("%i\n", list_count(l)); + //printf("%i\n", list_count(l)); cr_assert_eq(list_count(l), 3, "La liste doit contenir 3 éléments."); // printf("%i\n", list_count(l)); list_destroy(l); @@ -47,3 +50,113 @@ Test(basics_suite, test_insert) { list_destroy(l); } + +//Test pour list_get +Test(basics_suite, test_get){ + struct list *l = NULL; + + l = list_append(l, 30); // l = [30] -> NULL + l = list_append(l, 20); // l = [20] -> [30] -> NULL + l = list_append(l, 10); // l = [10] -> [20] -> [30] -> NULL + + struct list *rslt = list_get(l,0); + cr_assert_eq(rslt->data, 10, "pointer to node with data=10"); + + rslt = list_get(l, 2); + cr_assert_eq(rslt->data, 30, "pointer to node with data=30"); + + rslt = list_get(l, 5); + cr_assert_null(rslt, "Poit doit etre null"); + + list_destroy(l); + list_destroy(rslt); +} + +//Test list_find +Test(basics_suite, test_find){ + + struct list *l = NULL; + + l = list_append(l, 3); + l = list_append(l, 7); + l = list_append(l, 1); + + struct list *rslt = list_find(l, 7); + cr_assert_eq(rslt->data, 7, "pointer to node with data=7"); + + rslt = list_find(l, 42); + cr_assert_null(rslt, "pointeur doit etre null"); + + list_destroy(l); + list_destroy(rslt); +} + +//Test list_delete_at +Test(basics_suite, test_delete_at){ + + + struct list *l = NULL; + + l = list_append(l, 30); + l = list_append(l, 20); + l = list_append(l, 10); + + struct list *rslt = NULL; + + rslt = list_delete_at(&l, 1); // returns pointer to node with data=20, l = [10] -> [30] + cr_assert_eq(rslt->data, 20, "La data du noeud supprimé doit etre de 20"); + + size_t count = 0; + count = list_count(l); + cr_assert_eq(count, 2, "La taille de la liste doit etre de 2"); + + rslt = list_get(l, 0); + cr_assert_eq(rslt->data, 10, "La data du noeud 1 doit etre de 10"); + + rslt = list_get(l, 1); + cr_assert_eq(rslt->data, 30, "La data du noeud 2 doit etre de 30"); + + rslt = list_get(l, 3); + cr_assert_null(rslt, "Le pointeur doit etre null"); + + list_destroy(l); + list_destroy(rslt); + +} + +//Test list_remove +Test(basics_suite, test_list_remove){ + + struct list *l = NULL; + + l = list_append(l, 7); + l = list_append(l, 3); + l = list_append(l, 7); + l = list_append(l, 1); + + + int rm = 0; + struct list *tmp = l; + + rm = list_remove(&l, 7); // returns 1, l = [1] -> [3] -> [7] + cr_assert_eq(rm, 1, "Le noeud 7 doit etre supprimé"); + + tmp = list_get(l, 0); + cr_assert_eq(tmp->data, 1, "Le noeud 1 a changé !"); + + tmp = list_get(l, 1); + cr_assert_eq(tmp->data, 3, "Le noeud 2 doit etre egal a 3"); + + tmp = list_get(l, 2); + cr_assert_eq(tmp->data, 7, "Le 3 eme noeud doit etre de 7"); + + l = tmp; + rm = list_remove(&l, 42); // returns 0, list unchanged + cr_assert_eq(rm, 0, "Doit renvoyer 0 !"); + cr_assert_eq(l, tmp, "La liste ne doit pas changer"); + + list_destroy(l); + list_destroy(tmp); +} + +