From 1dc438cdf473ceca096b8dee2ca0dcb2b6e63189 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sat, 5 Mar 2022 15:10:36 +0100 Subject: [PATCH] improve tests --- src/tests/bin/utils | Bin 0 -> 73448 bytes src/tests/launcher.c | 14 ++- src/tests/launcher.o | Bin 0 -> 4748 bytes src/tests/utils/array.o | Bin 0 -> 3512 bytes src/tests/utils/cstring.c | 188 +++++++++++++++++++++++++++++++++++++- src/tests/utils/cstring.o | Bin 0 -> 38984 bytes src/tests/utils/main.o | Bin 0 -> 1968 bytes 7 files changed, 197 insertions(+), 5 deletions(-) create mode 100755 src/tests/bin/utils create mode 100644 src/tests/launcher.o create mode 100644 src/tests/utils/array.o create mode 100644 src/tests/utils/cstring.o create mode 100644 src/tests/utils/main.o diff --git a/src/tests/bin/utils b/src/tests/bin/utils new file mode 100755 index 0000000000000000000000000000000000000000..0e2bec665416d58d4ed7269b5d09a46a3bd43c27 GIT binary patch literal 73448 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 literal 0 HcmV?d00001 diff --git a/src/tests/launcher.c b/src/tests/launcher.c index 2fdd21c..c1f74a5 100644 --- a/src/tests/launcher.c +++ b/src/tests/launcher.c @@ -45,9 +45,12 @@ static char ORANGE[] = { (char) 27, '[', '3', '3', 'm', '\0' }; static char STOP[] = { (char) 27, '[', '0', 'm', '\0' }; static char bs9[] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, '\0' }; +// COLORTERM : if it exists and is not empty, the system will default to +// colour mode (--color) as opposed to --no-color + // CK_ENV : Gets the print mode from the environment variable CK_VERBOSITY, // which can have the values "silent", "minimal", "normal", "verbose". If the -// variable is not found or the value is not recognized, the print mode is set +// variable is not found or the value is not recognised, the print mode is set // to CK_NORMAL. // How to start the program: @@ -163,9 +166,12 @@ int main(int argc, char **argv) { static int has_colour() { if (launcher_color == -1) { - // TODO: detect if terminal supports colour mode - // for instance, check if $COLORTERM is not empty? - launcher_color = 1; + // TODO: could we do better? + const char *cterm = getenv("COLORTERM"); + if (cterm && cterm[0]) + launcher_color = 1; + else + launcher_color = 0; } return launcher_color; diff --git a/src/tests/launcher.o b/src/tests/launcher.o new file mode 100644 index 0000000000000000000000000000000000000000..ea0fcf62be96e941c18256b011391060f1540775 GIT binary patch literal 4748 zcma)9ZEO_R6}|gmV-tf7r8Fs|nIv{_O4-^5Riq%o0%NDDgN-p1V!>*?9%I9L*X+*n zQJ@x?lGIvOt&|@jQk5!Fe^gCXAysV>HBy~A!9kTO|DZ~L&?>5&$dR4OXh}KtQs|MSg)GZTlm2ASCqRLF8b73kpQkQ>;EN@N)Ca;Mxv+_0`aj*_Y z+svs8ldfxLEbPoy6>~RAZu7sQ2W*5zZ!2g8=HSosHtkG5zzxK8qL)|0Q&-8)^mAd{ z8*?(<;{6(V+Av0SE$8;b*ty-k#UtywczG* z`af_C|1aO+f35ake^>uYxqIDpcj^vz>+aJXp7olt_*4d~^ljDQX-}AQ@FdQKd9j<3 ziR0m7Zr+nC?GhU`=Wbt^LF#G>jsg2pg7fBF{>Z}h@j`oj*qNFuo?K8V+ULx!FAHPz zj}zui?mJO_Jykif{7q&1 z1N?VO=??qF^2C1h{7LiD8$ILOXqAfFGrR@q5)tn688-MM{1^(iIeUF+XV3YZJ?wY( z3KWn;-ug`c5)s9HPHH9`tf*cv)3SukpwDKxYePGo-EEb%m%sDBV$r$qq2!jmNy*Gg zRT($E!YNquhjBa#@dcg`Uk&Oreyf<{Cf>8A}bq#@hWkmcVI14E3CZyVAY{Z_l|*s;Udn>K7K zYiEst_$kZiwXBrUpU$QFjP2XE%cf1K_>ct{j%Tx0A13|r!K9iDr85*H(#dp&dTBk~ z-O=9B)ope?i|nnhAD6b>yT55Pw(ULeq|w|IX^Au&Eln*=%`HuvMVM-iz<0YOaK0+A zt|lDjscgg=Z=RzAT%s$hE(Le3s4!m$IpNTrzX`9|DR6OgvLieOI6+EC7} ztg8&>&ew&4xig`E1m1x#s>0X}V*~2!2`3SJ0(hJM9@oEt<@MPA26Q4moqktEsIwC~ zLA-zNrPBwUrq9t~&X3+hho1+(fDQ*jy6ezlB@4@E#d4*PFiDFemduNjIR--_?vq!!b+&g3B zkCqh>%Rf6R|U?wwEiPx$nY`?w_Ixm04n%0v=!(Cq4#u8sq3rgU^g z_X75JcXUc`_9@BQ>EW2$^iIbI?ZMPB&D;*DiQ6SL8Hi`qESD+mp(U#E##D>tG&YzT zv?Ufhv-KO1W0oBoPQ>hiT@?uYNJ9Z#HyB?eB!7-I}}@uaBDv$;gV%4S_c zVGa%6mDur&EsRJ7EZIyhm9jE1Knz=#cuI+tW4t0ft^SNZKOR?6`Gdzc&_uDzO{*7%~v*EC)QhS3b(()?ZWheiIR`NtY( zfg8~{*nh*1h^#;jkUs>hM&n=&5*sys9T+yy-hshK@mq+9czb}1cL+%Pvq0KiB;w1P z{gnKNK-&KlNV}f{Y4v6q)k?W6( z{7kR^Qm=oi`9C#h)2jX=@=1i>4M62rug8GFdgP6W_(p(??-G!9FA-t)3NZXN^fJBv zj>bP|ya}ZJ-+;9LjO&Qu-$d9iuW;pcK*}EhQoex*`Bp98q2js}EP}LJ~K=aEQuM*k(BH6P;cDxs8XIvccW*I9P zv8^+MaZBo4e#_(tj#QHP*)QcR; zq;tav;eH3dk@&9m#uiNYcH_Gnk4C+}@Hhm=4ex39{SA=qxGp1)-k^*F$6fV>og^4n z;AjlFqCbH0NB<4DXoJV8#{2N4zJoO9o*XD=6_2NP3woZ6a&O**IsI`D4(fUDTyjru zE9UAxwBl)eka#lcdH2z+=k&{Q4ti)&r9nMjM>KkZm!VfaJbx##$hjBa73i^#c*Bc< zKLXfScWS{QG}l9zGk+*q6)W>s?h919u{a6mD=^0qRC+8$`tovzsnkD!@1U}My(w#; PT<lO!m)P^?LoC=`

zncPtCP)bE=mzJHZAtt9L-?(*UdMaARARZBK|0{6*6c(u-LqVHUqn@I0ivS3#&<6oWz zE8=t@#k_hKVw@4pp++9fMSBFTq4Ub+hQ@J(x%N-udCZeO9f??oe~z{a>v})QdAG^A zirlB*6q6ji;AM!dlOxGGyWqh)8b70b7# zTjaACrvBFnd@+H4PT*gF&E2B@ABp@w35-K;80UL9fuBs^?ZD<Cm(vu{UdkF&44yRU1%v%hmk zPnXlICvln3cY}QSNJ$0)-;boDB{+ePDdwBN9g751$#T45$E{TSAan+zx}-MXc;#v- zjChr*=lPXNY*wjM3!(3Lf$xUCgq~YT05_j^yg}a^_Vdm_VGPyJ7boH|rA{T%P>=#K zc}Lg19L_(DBF0<0cqN_%eD(p6weX8tMV{69=XJhQ$M?Wz9}?-)co05~!K@wB35XvQ zIYN)m<9qa&=L4NT4ZjGl`p59uRU&7IG2d4@{;l@swZ8liicdEP#}97=z_9NtXZD;JAC-VD1`4t*P+ z-A$Fy^@gKK{6S|RaErd!hl4WS?z^yy;4Y8xx1!H;#dV7AJv`4l$$J4Y!^5Lh9P%DR z!*MpgP<$4xcm~Fpqv3k1Z&U{X>?}TEA0f$k`Sqg~_1B|u3}dvHV_L*UkN;+pZ+Hj5 zqlPilZ$p4%j0}0N8j{Wta)0r8&w z!J($V5B<2_>j37Q`BgT09{SW<2p!rF2|ea$$I#-ut9RhB=8(tpp9H7nc{s&2AZGZp( literal 0 HcmV?d00001 diff --git a/src/tests/utils/cstring.c b/src/tests/utils/cstring.c index 8fd1e10..daa612c 100644 --- a/src/tests/utils/cstring.c +++ b/src/tests/utils/cstring.c @@ -407,6 +407,186 @@ START(clear) if (s->length) FAIL("empty cstring has a size of %zu", s->length); + cstring_add(s, "testy"); + cstring_clear(s); + if (s->length) + FAIL("cleared cstring has a size of %zu", s->length); + + END + +START(convert) + char *str; + + str = cstring_convert(s); + s = NULL; + + ASSERT_EQUALS_STR("Convert failed with an empty string", "", str); + + reset(); + + cstring_add(s, "testy"); + str = cstring_convert(s); + s = NULL; + ASSERT_EQUALS_STR("Convert did not return the same string", "testy", + str); + + END + +START(clone) + cstring *clone; + + clone = cstring_clone(NULL); + if (clone) + FAIL("Cloning NULL must return NULL"); + + clone = cstring_clone(s); + ASSERT_EQUALS_STR("Cannot clone the empty string", "", clone->string); + free_cstring(clone); + + cstring_add(s, "Testy viva la vida"); + clone = cstring_clone(s); + ASSERT_EQUALS_STR("Failed to clone the string", s->string, + clone->string); + free_cstring(clone); + + END + +START(rtrim) + char *expected; + + expected = "testy"; + cstring_add(s, expected); + cstring_add(s, " "); + + cstring_rtrim(s, ' '); + ASSERT_EQUALS_STR("(a) Failed to rtrim", expected, s->string); + + reset(); + + expected = " testy"; + cstring_add(s, expected); + cstring_add(s, " "); + + cstring_rtrim(s, ' '); + ASSERT_EQUALS_STR("(b) Failed to rtrim", expected, s->string); + + reset(); + + expected = " testy "; + cstring_add(s, expected); + cstring_add(s, "..."); + + cstring_rtrim(s, '.'); + ASSERT_EQUALS_STR("(c) Failed to rtrim", expected, s->string); + + reset(); + + expected = "...testy "; + cstring_add(s, expected); + cstring_add(s, "..."); + + cstring_rtrim(s, '.'); + ASSERT_EQUALS_STR("(d) Failed to rtrim", expected, s->string); + + END + +START(trim) + char *expected; + + expected = "testy"; + cstring_add(s, expected); + cstring_add(s, " "); + + cstring_trim(s, ' '); + ASSERT_EQUALS_STR("(a) Failed to trim", expected, s->string); + + reset(); + + expected = "testy"; + cstring_add(s, " "); + cstring_add(s, expected); + cstring_add(s, " "); + + cstring_trim(s, ' '); + ASSERT_EQUALS_STR("(b) Failed to trim", expected, s->string); + + reset(); + + expected = " testy "; + cstring_add(s, expected); + cstring_add(s, "..."); + + cstring_trim(s, '.'); + ASSERT_EQUALS_STR("(c) Failed to trim", expected, s->string); + + reset(); + + expected = " testy "; + cstring_add(s, "..."); + cstring_add(s, expected); + cstring_add(s, "..."); + + cstring_trim(s, '.'); + ASSERT_EQUALS_STR("(d) Failed to trim", expected, s->string); + + END + +START(toupper) + cstring_add(s, ""); + cstring_toupper(s); + ASSERT_EQUALS_STR("Failed to uppercase empty", "", s->string); + + reset(); + + cstring_add(s, "Simple Testy"); + cstring_toupper(s); + ASSERT_EQUALS_STR("Failed to uppercase", "SIMPLE TESTY", s->string); + + reset(); + + cstring_add(s, "C'est l'été"); + cstring_toupper(s); + ASSERT_EQUALS_STR("Failed to uppercase", "C'EST L'ÉTÉ", s->string); + + reset(); + + cstring_add(s, "Test en français"); + cstring_toupper(s); + ASSERT_EQUALS_STR("Failed to uppercase", "TEST EN FRANÇAIS", s->string); + + END + +START(tolower) + cstring_add(s, ""); + cstring_tolower(s); + ASSERT_EQUALS_STR("Failed to lowercase empty", "", s->string); + + reset(); + + cstring_add(s, "Simple Testy"); + cstring_tolower(s); + ASSERT_EQUALS_STR("Failed to lowercase", "simple testy", s->string); + + reset(); + + cstring_add(s, "Été ! C'est l'été !"); + cstring_tolower(s); + ASSERT_EQUALS_STR("Failed to lowercase", "été ! c'est l'été !", + s->string); + + reset(); + + cstring_add(s, "Test en français"); + cstring_tolower(s); + ASSERT_EQUALS_STR("Failed to lowercase", "test en français", s->string); + + reset(); + + cstring_add(s, "À la claire fontaine"); + cstring_tolower(s); + ASSERT_EQUALS_STR("Failed to lowercase", "à la claire fontaine", + s->string); + END START(readln) @@ -467,8 +647,14 @@ Suite *test_cstring(const char title[]) { tcase_add_test(core, ends_with); tcase_add_test(core, find); tcase_add_test(core, rfind); - tcase_add_test(core, clear); + tcase_add_test(core, convert); + tcase_add_test(core, clone); + tcase_add_test(core, rtrim); + tcase_add_test(core, trim); + tcase_add_test(core, toupper); + tcase_add_test(core, tolower); + tcase_add_test(core, readln); suite_add_tcase(suite, core); diff --git a/src/tests/utils/cstring.o b/src/tests/utils/cstring.o new file mode 100644 index 0000000000000000000000000000000000000000..6da56ba8c5f72a86f64f551b887872196a1bc9f4 GIT binary patch literal 38984 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 I_;URI7l6r=$^ZZW literal 0 HcmV?d00001 diff --git a/src/tests/utils/main.o b/src/tests/utils/main.o new file mode 100644 index 0000000000000000000000000000000000000000..b632e13739d6fac0ba3325195c0e8fcb10512729 GIT binary patch literal 1968 zcma)6&re)c6h1R=Xa|IrqF7C7J56c|D$fB;L#i=AJFr1%_>t5Y@^}nSK$ti9-kSup zq^T27GJg(eAhV3jM|YVqbspL;RdKpp?wF6Oy@}&zx$_#TktApQSk^&1pw`o;gTPn*(2LwwCjg!$Eh)?~NraPWB0T>I>~}m)vo9Su-`fdYIaWU@5nObrc>l^o#;$4s9)Kd(ysE9!6%bwm%LTB2N?3iSb;a^Sg< zCkC=uSX)8_!ro@v1TS2q1)r0!&A8IjusJlkhj}#d<2XLV_zB%R#=nT;4&xmn%dm`Z z#Bsi{-0LE@0u_%SV%ua~u0{~ajTSWwElrhtYjNB2D_`G)sCc&uT>_(cR*f_qTN`&7H? zYswD*(LWLszXmWhNHn~u*k@gekA(RTBqonK6I&Q1KbQhBHt-u@`sRE;0z@%~#+;!7 ze}Dg;BJmbt>>vM~$YVeD*8)_9XA$I`VWbtW9hS9B@8HTT0O#EZ>rglY`+2`%qwiHl He+=&xxIQxa literal 0 HcmV?d00001 -- 2.27.0