From 0b66468f2f372adc295f03cb55634536b5448272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Gotor?= Date: Mon, 2 Oct 2023 18:04:01 +0200 Subject: [PATCH] ci(span): add unit test (#4595) --- docs/widgets/span.rst | 2 +- src/widgets/span/lv_span.c | 9 +- src/widgets/span/lv_span.h | 12 +- tests/ref_imgs/span_01.png | Bin 0 -> 4961 bytes tests/ref_imgs/span_02.png | Bin 0 -> 7496 bytes tests/ref_imgs/span_03.png | Bin 0 -> 7489 bytes tests/ref_imgs/span_04.png | Bin 0 -> 4694 bytes tests/ref_imgs/span_05.png | Bin 0 -> 7489 bytes tests/src/test_cases/test_span.c | 279 +++++++++++++++++++++++++++++++ 9 files changed, 293 insertions(+), 9 deletions(-) create mode 100644 tests/ref_imgs/span_01.png create mode 100644 tests/ref_imgs/span_02.png create mode 100644 tests/ref_imgs/span_03.png create mode 100644 tests/ref_imgs/span_04.png create mode 100644 tests/ref_imgs/span_05.png create mode 100644 tests/src/test_cases/test_span.c diff --git a/docs/widgets/span.rst b/docs/widgets/span.rst index 75e333b30..7ac40ca27 100644 --- a/docs/widgets/span.rst +++ b/docs/widgets/span.rst @@ -99,7 +99,7 @@ too. lines ----- -Use :cpp:expr:`lv_spangroup_set_lines(spangroup, 10)` to set the maximum number +Use :cpp:expr:`lv_spangroup_set_max_lines(spangroup, 10)` to set the maximum number of lines to be displayed in LV_SPAN_MODE_BREAK mode, negative values indicate no limit. diff --git a/src/widgets/span/lv_span.c b/src/widgets/span/lv_span.c index c6603ab55..69b663a85 100644 --- a/src/widgets/span/lv_span.c +++ b/src/widgets/span/lv_span.c @@ -210,7 +210,7 @@ void lv_spangroup_set_overflow(lv_obj_t * obj, lv_span_overflow_t overflow) LV_ASSERT_OBJ(obj, MY_CLASS); lv_spangroup_t * spans = (lv_spangroup_t *)obj; if(spans->overflow == overflow) return; - + if(overflow >= _LV_SPAN_OVERFLOW_LAST) return; spans->overflow = overflow; lv_obj_invalidate(obj); } @@ -230,11 +230,14 @@ void lv_spangroup_set_mode(lv_obj_t * obj, lv_span_mode_t mode) { LV_ASSERT_OBJ(obj, MY_CLASS); lv_spangroup_t * spans = (lv_spangroup_t *)obj; + + if(mode >= _LV_SPAN_MODE_LAST) return; + spans->mode = mode; lv_spangroup_refr_mode(obj); } -void lv_spangroup_set_lines(lv_obj_t * obj, int32_t lines) +void lv_spangroup_set_max_lines(lv_obj_t * obj, int32_t lines) { LV_ASSERT_OBJ(obj, MY_CLASS); lv_spangroup_t * spans = (lv_spangroup_t *)obj; @@ -322,7 +325,7 @@ lv_span_mode_t lv_spangroup_get_mode(lv_obj_t * obj) return spans->mode; } -int32_t lv_spangroup_get_lines(lv_obj_t * obj) +int32_t lv_spangroup_get_max_lines(lv_obj_t * obj) { LV_ASSERT_OBJ(obj, MY_CLASS); lv_spangroup_t * spans = (lv_spangroup_t *)obj; diff --git a/src/widgets/span/lv_span.h b/src/widgets/span/lv_span.h index f7f6557b4..2a6d50f36 100644 --- a/src/widgets/span/lv_span.h +++ b/src/widgets/span/lv_span.h @@ -30,6 +30,7 @@ extern "C" { enum _lv_span_overflow_t { LV_SPAN_OVERFLOW_CLIP, LV_SPAN_OVERFLOW_ELLIPSIS, + _LV_SPAN_OVERFLOW_LAST, /**< Fence member*/ }; #ifdef DOXYGEN @@ -42,6 +43,7 @@ enum _lv_span_mode_t { LV_SPAN_MODE_FIXED, /**< fixed the obj size*/ LV_SPAN_MODE_EXPAND, /**< Expand the object size to the text size*/ LV_SPAN_MODE_BREAK, /**< Keep width, break the too long lines and expand height*/ + _LV_SPAN_MODE_LAST /**< Fence member*/ }; #ifdef DOXYGEN @@ -149,11 +151,11 @@ void lv_spangroup_set_indent(lv_obj_t * obj, lv_coord_t indent); void lv_spangroup_set_mode(lv_obj_t * obj, lv_span_mode_t mode); /** - * Set lines of the spangroup. + * Set maximum lines of the spangroup. * @param obj pointer to a spangroup object. * @param lines max lines that can be displayed in LV_SPAN_MODE_BREAK mode. < 0 means no limit. */ -void lv_spangroup_set_lines(lv_obj_t * obj, int32_t lines); +void lv_spangroup_set_max_lines(lv_obj_t * obj, int32_t lines); /*===================== * Getter functions @@ -208,11 +210,11 @@ lv_coord_t lv_spangroup_get_indent(lv_obj_t * obj); lv_span_mode_t lv_spangroup_get_mode(lv_obj_t * obj); /** - * get lines of the spangroup. + * get maximum lines of the spangroup. * @param obj pointer to a spangroup object. - * @return the lines value. + * @return the max lines value. */ -int32_t lv_spangroup_get_lines(lv_obj_t * obj); +int32_t lv_spangroup_get_max_lines(lv_obj_t * obj); /** * get max line height of all span in the spangroup. diff --git a/tests/ref_imgs/span_01.png b/tests/ref_imgs/span_01.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ffc8e6d037232f7f9bff4c44714904e3c4095d GIT binary patch literal 4961 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 GUicU6anPgy literal 0 HcmV?d00001 diff --git a/tests/ref_imgs/span_02.png b/tests/ref_imgs/span_02.png new file mode 100644 index 0000000000000000000000000000000000000000..ffcf4b09ff7c6a714b9467972ddccdf31b49be14 GIT binary patch literal 7496 zcmeHM`(M&&zW-KRmYFt9siUTIak4Q|D^phuXPs^|rHy0eEm22J&4kP=qPAn^wvO52 zq?4v>W6BsJsX0Ull#H1XF-A&8KxE_v@sf&o0nW!}cK6JlbM_xN;}5=k!55zA`8=QZ z?c@2we*4xKTNxt=vIet%cL0JcdmllTyjZyuUU?i_{XK$gG{fxvQ()#5wbUmmOdPG9 zsB|5yyq_}s)7t&4FEWOA8^7nd?ckq(TrG$%TXksTR7~>ngP~!o&%ZSP^b3z2t`yVl zg4sX4e1du1TfjcHed4^!ML#<4{Om{eVHc|UeYkDH<1RnVmxwDk9s|SG{?$Ht)d;dy zNU@t+fgrgjMvWVSsA+ioczU+HrDQk`IpcGhT$?cWc;mppKnD4;aGc{49zC=^~xoP{$b8- zoo`d{!+}XviRvQ)JEAr8kmzPl;#TvbX^kL+*%cE&7mHkJK~y6nBfc_a(yKxc_XETA zkh{^t-lNHGl@=Bj7*cq6__YK=TG|Fv4=*oj5S6cdbL41d5iF1?MzgYKQa!hp^Q-&@ z=H>`4mLqDlwE7zB_U%N5WPX1B(t(fp%|of7o7cOUd3btSnXG8(8yOtjOcoXv!#1W{92%6fn%r{8qPVCO32N%b=vUb%)Cym zRwpyU=wg<1G|BCRt5p77-*Y?{PZiPF^T}xzhaR?H9e)9Wn z->W|-xn;9uN@Z+QuuVy4h8@2TEIp4_4c4TY}ck*PbL_LFFTyxLL zhVJ+$NpAaUx;r{L;$0s!qozc4Dat6Qcy&- zz6NRXKnin=Gv9c4b1F;f(&lPulEQq>&Yt;^!4N)r1mC53)m3VbF)r|>h!PkQXaMiV z+RXd#09Z50YRbN>(K$fq$&S0nFl|MPNWZD019hQ!v2x`c|l zDB7JDFJFG&msFP!N(&O>*aWo`a;BsgyP)FgRoU~+Da?fugSNyljWtZO!S}-{r z(~kn+qrs@geUwe57?#wOY9wn?9n<>)ylMWW_Cx6`T`spf{z`RqZ(=L-!Nr}hpg$RX z%f_U!G53 zSM!x|EqxnVFLm-Ii0r)3yr?778|~?NU97^8l5n_z$yvB)sG;DsLZOJ+zKV6P|5Q`( zK~XCFqKGCZCj;ugwZ~Wn4A0D~?p_afa*HkLi^^kS(y-1gp*<6EuUT)COU`S`bCjO0?&%#CF0G7~w^d$EKlf$tg=6l<}Uc8*f zp2UoixsQ*oK(uGjYf4X*cEzw0JgYW2Z_+<@1%~OL$aJxEwJOGc>JjT%WgfAg^lIz5 zh6A+$fE1Gzs;%&RYbdPYmClwL-bG%pXN&R-GkFHM`+1!nt5;(6QzHKoJ0HD9f}5F{ zF^rDsoops3KDv7O*zva<3XR3}BfX;Qhv~Ts6P$3^}=x*`9(+ih(N<$1H^&~vi` zWCzR}JHvz>cV0Ti0eU!^qZCp67ngExt5e|guW=lmMq*eH8Wx5qa&nr} z>4|8eGG%5=&YduQd{n&@(Z=g+f)V7W=&ip06GEzGa1k_v@A%e*2O{}Y1z)-SkVsJQ zj-01MkR(D*q;hiB`oz*)Ja?gtz?Qvs{1oo^?&oC>n2HPTp*frF6kC@d4LKEydl?3r zh@gkk>JpwMxzQUNd-pXAJb^tuc0D%c`KuUgCqDPq9odmu+I200PFV!2nW<^-zzRX! z>6R;dYrd$ctL%KDn!a&OSe(ES&`no=L3j4BG-*bCE^=*HI6ePu5VbWJB^!i`$1}*3 zm7V<)Np4CIt3KCKkrgWTJi-4Xm~!KUtWz*OAD9)pi=c5IHMb7 zxL5p8nF0?<)ED;FSWo5y$c+nt+|M=Ci4tl9`lQk-;eg^k#h(n7vZkEH^(D1R-boK@ z4LxSCdA5b$EUt!zUCo}zzR^ghm)g&QYGu}3TvRa!=LLmXo|b2)$M^r_dvzRme~}Qx zVzGmR12%V7sSdfnw`M{+(f_I=^GJQ5<06JV4tmHe*Janc#7w6fK0(fG&NXd-0|+83 z{3w+??-L;Fck_+FIRKF;q8jWm50oh$wd1}is@dy*KfL*@L!Yy=b5TdMDrFvHRE$X$z!UVgqnuwLpS}%+NOa7Tmz6)*X<>dw6iy=YLfyKcxN%k=$ zY8nmf4}1$pKc{MGX#vS|yku3pmn-LTIE{ghA!SupuGrYw$u05lD(v4otvWWOEcSzv zwBvK_mwm|yREEmhOOR0g5&H^-Y z<`x_nHse%ow~KHyl=eXR2Jg`}5t&J{hgKJYe!h8yA=wxBUIjsrs1MYV>Oe);d=!v> z_x*Cdl$9~2NsXutxGac+B2#;=2ct&E#tOGxw{E}KGk1zQ9@*P+To|#_=cx*sGvZbf zGaQXZ%ND422yAqv;F&tzseFEvH3qUfZcBW#FgqDUy(Ao9v)@JDH!j+>4B5Tu27-Jz z|7vz}z;4bKMC{9NB9|b$(~m|kRK-BRJ*$cwRkbGq;8#}>3T1R8H&+79Fnnd#5KZeA4B zT-~Xh-E=WH%Y=#_Lunn+O)}0Ox42(EI6O_LsOw3be(~bPz3l~pxE)WzfJ~OfskXRR z3T`}m(b2J|qE5Bb7<>mh-z74i2aTx3cbZcXvm+d?$$8w{M@S<2&H3*OOTk(I@6bqM=kAZft5QH9MQt9S;}L z71JDy0xAa2ef4nW(1wWNf7(XyKk=@{KIOjx^wd`xJQ_6OabhdU9wWLLL6_g!Ums|E zLxRT8SY0B^(CceWif#k=o@nS zafrjBA3^*0aJR`V>L!7;H5v`y2^-tnm=XAN?rjF<6ro{@gRT8zPw-@l{>FG((jP$|J=k)OtZ(D^R z_-vHB``=p|ZrXZLKA=9yjML2L8S#qJ6)-sO zA!jlky!D(RBk%ocH80;;iu~o^uf2V;@$V3+oTnzj@Ia&eNY~_JbjH~u8IG48@CwaZP^y{vkg_xuKy(SRU`75IlXB`* z_t?z9WR_Do^tPEDx=m*#?21{p?$y0*uwUR3elz437Hj@GgTR@(0eGzsbgSI-aR0fF zmqQ5X?<_e=J;Dr^$>nmH%(N5O0t7}lVCR!dBof=yCF8@xjz4wcJw{SJyNc45v82gd zInLDzo@fnKkB^VnzI&4HnUs++GbEy@cqy2 zeaONYji!C@i(d@b`5#>Jp!J-bok3#o9uJ!#_~16(k8aWy=4lHR_*=7{u^M4 zL6*T*qxb-?_9(@-@HY|7&7w!$Pn>Lw7zXm1o0}UMK@qz_C0?Hfi#iSUfY&%5>%VnBW1?XMow4sUj?6aXb;Wr5Y{>_7EgY~{gCs;@w;-$d`lsYiLgF~fo{ z;SEK>t3Aiqe+#G&M421q-zD%NJ=200XKTv@vz}ADWp5VSgLvA;;PNd#_+0YxF6Yg%fXerKqR~mKrxLIPB(Lx6-0$54fSye8qRu-p}Y+ zhj^iuouH@AyFPv^YB-(WEEc`T5}nLB`|_U2i;XN`@n;S~vX9~C83Y-xd{Y_fXoS4@ z>itD^dKbL!FX=JDE|?Z{LT5q5DUMd_>%`$sTUS4qb`wv#vz1%chSbr=${A|xMo(60|Vk@LIUZ+5W-TB#XlqoVN zd2QLtkUXG4SlRYVx|m1ua<7|p<9aqMv~XTTy4-I@9THiu);9RVhyunr#ksKvk};q4 zSG>2aFs`M)zh8k5Mww?oBDLP~6o6hNv&XEHsR86RWh=csJit=|a6N2-94`TYB*oCi zz`_v2egQB|x!k&VZ*Uzx=ku1soV=5?hrwto(k2MZ~b;ya_UY;^tLKL-Y{^+ zkt-0Xiffngz}#N=Pv*Aq(W1Fs_kWn%(lC`jj1#7ty}={_B{l^I7pz78qAUgBd-<81 z*ZETO_l?M%FzuopVU+u$!NKY0$G`!Wh81nWhKIwnNtwcQ@UK4m4!tYpaWX?F6!P%h zp-)*^b16&{(dj7ZAh`Okk`lIG_9jdXzIoFeK`-2S71)Uuw56PHX6wCjrX@=--cuQM zGu(;0@P-c_-zB$KH4V7ROi|rqs^ZH570MIsRcJEeMk+k*u0$dba1>7ervi1 ze}hbDCu?EkTYTG8dkULT{N{`M+|N2R^_GMcYyoD3^GS@#57dUzG=tqWDwQgQ>0K${ zK$;gU12YQIetA%RU_?a@jFuo}Mp=z^*X#qM36rYow$DkgAj|i)9QUvGhG`qjfIO?x zS;y)FAG?C^MD0#=v3!-n%$^yQ{y??IfHFdo`{N&hj3CLufxh`dy7pWH;9eWNc|E)f zRy7&xGPvkeox^_wmtkjz(;tasN00?^>U6Jie$I?E1BOGHW)XT5a|FQ&{xvv4XXzJa z3pqwGYFPi#KMCQt4|3@rn a@_6R{H$%T3JPZFJMKF8(b~pM)e*IrK0+SE` literal 0 HcmV?d00001 diff --git a/tests/ref_imgs/span_03.png b/tests/ref_imgs/span_03.png new file mode 100644 index 0000000000000000000000000000000000000000..09ce4a2fd0d6474633c49fb7d5de47de7d2d1d86 GIT binary patch literal 7489 zcmeI1`(Kk+w#HvYK@mk;qzV{ni&8NKh9cJhGhU#v0*=yfM^FJlgvd1^T&#+mmZ4Ov zP(Z?16h=b`7`a9W$RI}%Qkn@NhFe645Rw2Pgb+3((Kuk}3N zwfOp^kJnax6MY0hwqid&dI~{wK17gpsd_ePclJGc(3|jacnGaN_1SU7PE$N0R({uRk;jDhWmMa3B2s$Dyr%9;lo8@0!N% zrh{!Pa1YL>#{3X`se5OA$GunncMcW%7DfiUOq7(X+n;_X@d#^O5!|7WvgUI=R`;$$ zJ|t^p=f)7EgVooiLt#(Pip6emQp=@Vt-F!&Xla6Eth{QvoX=vhq#pGF=%U_9!zW*7 zF)Jc@=k1go6CO+Y<|&^cNWmhx!^PQovxh-$7lu{gk&Vit`dKL|hNKGf?4xK9JTT%3qs+hL0F+M*SZ7eb$ zh;KU5c0Z=oJ-o3skulQV-28dro7b;D@@7*g6nw|@G(39-Z7gklsspbWpCA3~Y6=tG z`;arE(P-pyIo@fQ$7^xJrlq8C#Hnd%X%`!U$il#)+sE(Ab+#EA=5`5^UEDAjv~ga< z#OUZ~oCAMs%%-?Eut+>Rd*{xbxcK8w^}kRy3Y zC9&CW$bFZAgQFvL2s{3B`(01EgcZ&8lujzA_`+?noq$ZL0CC zyqu8{LgO-*U+2X(yt-gN>UzP*?k$DZ9&{K(pl3o=K*Le6h1d1&UB%zDz#8Xu)1z4sR!0Yi z))9$iGlZl-eob$X#|vbPxVySCnwy(lckJYKJqlaiBVraFr5syGWLX+l%Ae0+=)tBOD-egH*;_c##0kTy^$>;qa!1i zn)r_2#yFHg*!W^&{hWk$WtE?mJiX2KiM`pjEjdqbS^7eBeSLjlDcKB%Vu3w=|7VRR ztBFtL#0oCUP5lXT5FyOZHs~b-WP5Qpc^&f6`vC}Yb2A#b^4}Ybk>8(RzXkd55%WsN zL#`;Mv?|7AaJzxEwe>4;YH5``JyY&bqmZmemN#gm*{eO-t3!%86em{h&s^bTYZckr zg<|F^H(SlMz``G;rlxA<&9#?FBo&?Iu38b%vK5Rmwah~+Q!^mg`Ce^$qQ%8z3`$50 zvo3CGYU=vJwX83SiVHsTH8CN<23wfLG}mM*7od7-a1;iEQC3za_`#?8v~_V__v_wb zn}Tn@#qqf|iJ6&uJnxnEMYV*4<@-QE#W$Jac0P&bUSsY@I=qO>MiDfwsevvPCwlYd z-oOPjGqdY8ywTAt^@@C^uKVoGNZ!&?YM}**M1mTSN(($IgQ$&k`uoNmo1aZwE{gQ6 zaBs_2mO>^AiOu0Z#W_H?=eL+w9_$gz;)a^P(!Ww_=Ik!*p5bBrzX zqAU8M=qIDnBez9Qp+bZ5hQDq zd7EFq8|~pr{pyB<&B*e_)SgYaYWB1|U7f`YqgBVeif^LT)($FeI5)ty?7jUNKEA#p z`O4Y)P0ZQ~P3`X1=jVTpb70$3xgtnpO47AdMq8LqbaZq~X{|Xs&Y>&F&9O>3=;2ah z+txaccX}zqc(d#7vBalc%KJ0inOdd+GM<&@y8|wGIypT#+1@1o#pD8HP5QZwP6FogWe}Dg&(te?g7dIH&0OcLEh7clho}8kf{I%H#3!m7Qy%e2R+O zas(Gx#EESXi^aS+<8L$6D=8FC>*eFi-^+1~JrQYHJPzw_+X5zA8i*j$g&{?F=$SK? z*aa{wjpyD>s9xIWiZ~%##UIlwJ^T9psc8~eR( zDBD|Qs&+S|!*E;@T?YsSv6D#R3oRz*2@Yj$*_zd*h>`fTbLT3-&Vr~m%+-a(#mDSv zfCiAYT?Vx@+B<6L>FM$E@^aL@)8F3@cSV@Nuw)q45!A?b@?V4c7IO}=qUg77-Qw%{ zTiy1ooPXV&ClZNb8(hkLKo$9N9k?~TlfgzDg(G?Cj$H9-b*(eW_iPBtgh$`G3druW zYXWTH9WuF{D4T*PVhaHrAo=2(f+?Jz?Zxu+h@-JiX5hG%zT{zYKZO&^o?cvDCbWdW zxkg4tY&}y{K9A7BZt*)&FVkgHeT*qR6;$n*VKLMUY+sbUb12TCnjO=`|I|o-EJK#x zu^uX(x!h&0!Jj)_&4x4^9R;zpH74mI|8-(bPf~k~_5ub(Y*;hoT)n~keMKIz|AbTt z2-t9z>yf(lfQ9mJy3e+RXgbQ?DpY|*ROW|^=SH$~3V>#>c%}P>Q%8l)X4_<#Gi~vU zZ5Q`y?~N|Z{ffG7r>~bK-0qz`Ti?8rlJa}z7;Vk=Q(elH8SSsy-48mJoB&sSXZ;BY z(q|8I#Hp@-3ofk^=|oWuHu1%E%j4bM$4aXx`?dgfyb~h=cP9$J1~3Zpjv7^DAdZSt zC=`&DK%H=hVr(lwEMO0VVOrF;`Jz#+Ii5gpGTR1HClCl?FHNq?gH9fN^gsz^F;D0b_|HsxtJ!} zob|7$%Ocf{mZ3d9qbR+QD|)J*KFEiMVSgsHddP_-3vWFK>IA?C0*r0Yz4ix4#^_AtWU;_-Gh;;Z?3rgZ z+Zlt&fMlJXo-X$%ynF|Sm8eAR_J*KKF6Ah5b2vz1%M%8JAK#Q<2LACc`Ro0_ZwAVO z5cBu4fFP3p_X2u4G2>V}H@YbI-pQ^B+lWWkv{k+kVVrOu5-zW!&ir$rv8mQ$K*@>u7(#K%HZ&A zF;D+=KES1JObUzwFa_EHf$!_z}uI1v%Qn*yV-z%DHPEJhZBJDEvFWtp{Lw-EBt?9>j1TmNRvchw)^{|oS_Y+z7g8#Go zv+Z>#If3f|{v9@XkD;xz_oi@W2pH71Tq^FO`g?RQxMPB7rV@-Ru?1tc%|Cemt>=j? zarP#P*_9#Rbx44c{aL`>C@`;Tc1vrki<47x=38I^0w%s8Xfn}x&CkG6?w^WTlQ_p! zP%My2iA0j0G)4*lJu-KJ1N-ha&;^Wd2>O&Io0ym|&9+_sitLfyPN%b{lflu*!o3qu zD?=5t>k+~a9^O0lV-qi5zKq9jAHBQ%#ndw+L590IAWfpJ8NJkt^zxz!?x_=Wti1AS zqj$bmGkQQPIDMUx(3HNpJAZcvDRmu!>8Q}zf?W9|>&6$82(sGzj|TCVn)T8HJ`GeK z7}LQlEEcp)ovr_zot(L`%NOr~bew4^*j974o^Woy-Fzf>>=fwFLDYI=6|b36=dNlc zMETzeCM^kHz>{=W&pJ3XSdT&_Pj~ZX1Gl!{7?1T4!^{Ky@vg=SGI>xW?>@UDE7U_B z`dRX==l6JVRWU&{u3~8kC)ADbCUa>2!nv zs7Bn5IiU)`bp{3oF4$WY_XYBEj zIoPw-*4CL+23)_r2{enAO@q6^og&(vaz5Rc;BRYCEhJ`<+7sa8Wagf^viRnWMaE(* z7fLKZ7;SG-UIBBT+(`<(YTCJ_e*~#t|AToea zsDiHbt`qaiONB25l`t#m;{3fa-9$Qg`*?l8iTF>ChJIp%6Ul(zsZ^>mBi{KiGTs?) zeLLx6cTMRC>ah;8ygjYv7=g5BlFeqX^_mL{3rnNWf|Qq+AHF*Wa|YYjhe}SsCaNkY$F&q9u|?wq3IsyF6an2ej~=}S5vHbs zh#Ctln4Z)9MO>mt`S8zvRymeDFyh|HM8b>MP&zNfx){=fNX{+k^sKxIoEmv1W4>Fw zyf%zrRCESe7ef-jqS!(ZRbJfEs#3o;z?Z{Wq5V+C}k@1_7Z8f%A6+p9-iGfsHg74@) zY+`!)%2Zz&Otki4fqs@03dTr06$dRjG#xu02=LGzkuk)?%GyGU2mc460#XaOryjs% zkHWM`brrBcs!$0Y!3^i^+Y4&idKlcTjVu^BhXrK`?K=X1-v!smo$HbDuE5#d$cMjF z{+`pycM3xYe$WWRV2pA)T5JJGPr7?tTkdSS@J*U6VKft{|+;i^wen0Q? zJnuR8tB(*D_Ut;a3xc3MAAWHD5(I5~2ZFZD?$`>>JkNO82tjYY{o(odKEc(gW$#_` zkZj@4Ax@-6D6yL(sg{+#SKSRwVxA#-D9+@3NtV=8hFhjYamoRE;9 zGHz7XhK7cI)-836opoc(F<;j=OC~3eQCMttSn;Y(SAasHh(uy~y5iNV+zqqy{&$tm zb!7`>hD4{Y6lWgY8t2(zEmb5E=`Qo+hsb@3BWQx?hFDkC_r!SeSHbYDz9A=@$h^|6>+5QaJJu5tQ(HfUWK~ z7%Yf#Z#`p*!cZE#ezvS@#9}e6L3E?r&)1jEVgx)64nI)-IKea-ZJpg~a)RBU`OU*H zNO)JJldGwC#x2ca*=j0)-K1FZL;ASfh>(zDG%^6BA7imtN({Rmv1GMcXJ@~q)00|* zYR9Hl+qvRzpt+TBvuujsRvz)Z!Rh<{Dh00lt|2TWrvQ&ve|48m$I<1FmgFY zH`0&v_jF0?!wItk_up5qtzlpXsej$C#tGU)V^fhY)GzWl5p;V_0 zq(Af=QLEKRf1G~tV&W4(ySH~rWyD~y-CbQ36%|A7IdO5N{okfCs8akv5B2q`(Xp{5 z_};AhdJeG~Z{-4Q{)p;K3Lrho#g{A&Kj){u%&2(kL|evUrsLyIUx{pPZq_&a z=-PI@e+%4(<@nim0F#Lg=aG52xiKZanpG_hrVqN&nS_>eWs{SpH7VMoJgRvduS>`= zha1TxYr5`No6R=A1jLeyMvGO(F^=e3P5;*yV;z~V3eRv-8CC>1+Ddpn#Pt;!R!&@> z&u*sU*Ir2|Y|kg{?I$^`_-5mZjP2AA3a7-b3}3ImM{AF7K3yxA%kKd)^>nEfERK$j z>X*heD=RsjQ?799M=Q*lAh^CY9<>ow$H!oFdc)ojeQ`jVe*hUqvRnHf#XcURG(RXg z$GUd%t=&Ve&R?!Go%EAAZjA4x>d_SK#xzaf^8m(02GQvoi?!&g>3^Dy_oJE$)Jy%5 zt`(%rTLH1Pc5{D1j+X1=IF*M+kL516Uxfv6;^G9a87eQBtdU`}-MaHgfyJN{jU4Vw zQY-l6g-WBe8%?gL01c#?e=v!8_Bh1o!Ren#c722HGh5<-#l5s*{aJn6Os!GYk5;e;JMe>Mpiz7=Zzi{=h$p$;qg| z13)n;Mb)83(z8na+AQK?#0M^}t{0kw24WN_D8dnN36Oszt*+ZYT+TN{Y5 zrFHH6{Phses@hCCy|<@l8N)slal6{RxJFtKwl*|0#3vu}VumxnbRTwI1Q}S1=1L?I zW#Jj{$|hkp8qG+#nb=pU#Z9X*G&mNGMmNAo5lnjriX5(9T+Ad8ECXe(3(_BSPX?JM z9VbR6!Q=ptK;4pON~O|plG)y_eK~j!^nJ3i#yekM3qpVZ)GCfK2^eAPa*{*0Fq}2^P$19HIb0v-;y1eELZf|oM}S|W zj~FaA1WiAm4IiGGO5&ty)-99^zP`QyT5{{e7m<1uaP9+c9wx*Sk+xU^d`Fd2z0yP& zHjzYffQ;ATQvUH|JZDeY0LTP&w|tbb+Fs+>LyY9-vFr)wF#YYpyvji*>quL18ZHew z-ay=rngL1fRQeuk-!0fdGGAdPBms-@G9eX3_C+;G#2sXB(rW|ekX|b<>epfbP$|M zo^Cc9j%`cj;5)m!yV-1MPUkO*o93Pq39b8m9^3?x3C8v>u(x(cH3{br9j{)Sjqzpq z4fj1BkHyx-M5u=z0FBMdKdSEP>YB*uOy!l>lp@+GeSkdI*Zd~!_7#4fSpj4!lW|zA z<7LaIyo+^r{QAItr{ydX*jg9)9O#~t`bTMoU{oYq#^rKB#UO7T)+IO?A9Hh8LmjGh z3pn$K9l%^28yzjNYJo7}@o{m@<1Q{Py|NojiO)J^v}G>KHM2tr&@;qo9QV{Eeu~?#-w6oZ6oiht+ zh>4j8ni~)TFKXaWc_Q3yQlwLE75uSXikD^wg5gF(2PW!{Ak4iL(xg@l9*-|9e4#S_ zZp52MQVWjUb2aVMIBT5WS&p?cml(s8?yjeY{tX7oBW*+YHt6n7ALx#M+TN|uUDg-d zp*N2H1VR6OZ9jCj`sr3^$G%S?=;~Hy=$#nkmOpR(eDkJF1pb={HWA#}M6ihf43Et$ g*hKLERbX@djH@}hhXStz|BIjxBN6A@&LO|}9~vEM9smFU literal 0 HcmV?d00001 diff --git a/tests/ref_imgs/span_05.png b/tests/ref_imgs/span_05.png new file mode 100644 index 0000000000000000000000000000000000000000..09ce4a2fd0d6474633c49fb7d5de47de7d2d1d86 GIT binary patch literal 7489 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, test_text); +} + +void test_span_set_text_with_bad_parameter_no_action_performed(void) +{ + const char * test_text = "Test Text"; + lv_span_t * span = lv_spangroup_new_span(spangroup); + + lv_span_set_text(span, test_text); + lv_span_set_text(span, NULL); + + TEST_ASSERT_EQUAL_STRING(span->txt, test_text); +} + +void test_span_set_text_with_previous_test_overwrites(void) +{ + const char * old_test_text = "Old Test Text"; + const char * new_test_text = "New Test Text and it is longer"; + lv_span_t * span = lv_spangroup_new_span(spangroup); + + lv_span_set_text(span, old_test_text); + lv_span_set_text(span, new_test_text); + + TEST_ASSERT_EQUAL_STRING(span->txt, new_test_text); +} + +void test_span_set_text_static(void) +{ + const char * test_text = "Test Text"; + lv_span_t * span = lv_spangroup_new_span(spangroup); + + lv_span_set_text_static(span, test_text); + + TEST_ASSERT_EQUAL_STRING(span->txt, test_text); +} + +void test_span_set_text_static_with_bad_parameter_no_action_performed(void) +{ + const char * test_text = "Test Text"; + lv_span_t * span = lv_spangroup_new_span(spangroup); + + lv_span_set_text_static(span, test_text); + lv_span_set_text_static(span, NULL); + + TEST_ASSERT_EQUAL_STRING(span->txt, test_text); +} + +void test_span_set_text_static_with_previous_text_overwrites(void) +{ + const char * old_test_text = "Old Test Text"; + const char * new_test_text = "New Test Text and it is longer"; + lv_span_t * span = lv_spangroup_new_span(spangroup); + lv_span_set_text_static(span, old_test_text); + lv_span_set_text_static(span, new_test_text); + + TEST_ASSERT_EQUAL_STRING(span->txt, new_test_text); +} + +void test_spangroup_set_align(void) +{ + const lv_text_align_t align = LV_TEXT_ALIGN_CENTER; + lv_spangroup_set_align(spangroup, align); + + TEST_ASSERT_EQUAL(align, lv_spangroup_get_align(spangroup)); +} + +void test_spangroup_set_overflow(void) +{ + const lv_span_overflow_t overflow = LV_SPAN_OVERFLOW_ELLIPSIS; + lv_spangroup_set_overflow(spangroup, overflow); + + TEST_ASSERT_EQUAL(overflow, lv_spangroup_get_overflow(spangroup)); +} + +void test_spangroup_set_overflow_invalid_parameters_overflow_not_changed(void) +{ + lv_spangroup_set_overflow(spangroup, LV_SPAN_OVERFLOW_ELLIPSIS); + lv_spangroup_set_overflow(spangroup, _LV_SPAN_OVERFLOW_LAST); + + TEST_ASSERT_EQUAL(LV_SPAN_OVERFLOW_ELLIPSIS, lv_spangroup_get_overflow(spangroup)); +} + +void test_spangroup_set_indent(void) +{ + const lv_coord_t indent = 100; + + lv_spangroup_set_indent(spangroup, indent); + + TEST_ASSERT_EQUAL(indent, lv_spangroup_get_indent(spangroup)); +} + +void test_spangroup_set_mode(void) +{ + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_EXPAND); + TEST_ASSERT_EQUAL(LV_SPAN_MODE_EXPAND, lv_spangroup_get_mode(spangroup)); + + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_BREAK); + TEST_ASSERT_EQUAL(LV_SPAN_MODE_BREAK, lv_spangroup_get_mode(spangroup)); + + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_FIXED); + TEST_ASSERT_EQUAL(LV_SPAN_MODE_FIXED, lv_spangroup_get_mode(spangroup)); +} + +void test_spangroup_set_mode_invalid_parameter_mode_not_changed(void) +{ + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_EXPAND); + lv_spangroup_set_mode(spangroup, _LV_SPAN_MODE_LAST); + TEST_ASSERT_EQUAL(LV_SPAN_MODE_EXPAND, lv_spangroup_get_mode(spangroup)); +} + +void test_spangroup_set_max_lines(void) +{ + const int32_t lines = 100; + + lv_spangroup_set_max_lines(spangroup, lines); + + TEST_ASSERT_EQUAL_INT32(lines, lv_spangroup_get_max_lines(spangroup)); +} + +void test_spangroup_get_max_lines_for_new_span_group(void) +{ + int32_t lines; + + lines = lv_spangroup_get_max_lines(spangroup); + + TEST_ASSERT_EQUAL_INT32(-1, lines); + + lines = 3; + lv_spangroup_set_max_lines(spangroup, lines); + lines = lv_spangroup_get_max_lines(spangroup); + + TEST_ASSERT_EQUAL_INT32(3, lines); +} + +void test_spangroup_get_max_line_h(void) +{ + lv_coord_t max_line; + + max_line = lv_spangroup_get_max_line_h(spangroup); + + TEST_ASSERT_EQUAL(0, (uint32_t)max_line); + + (void)lv_spangroup_new_span(spangroup); + max_line = lv_spangroup_get_max_line_h(spangroup); + + // TODO: find out why this magic numberdd + TEST_ASSERT_EQUAL(16, (uint32_t)max_line); +} + +void test_spangroup_draw(void) +{ + active_screen = lv_scr_act(); + spangroup = lv_spangroup_create(active_screen); + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_BREAK); + lv_obj_set_width(spangroup, 100); + lv_span_t * span_1 = lv_spangroup_new_span(spangroup); + lv_span_t * span_2 = lv_spangroup_new_span(spangroup); + lv_span_set_text(span_1, "This text is over 100 pixels width"); + lv_span_set_text(span_2, "This text is also over 100 pixels width"); + lv_style_set_text_decor(&span_2->style, LV_TEXT_DECOR_STRIKETHROUGH); + + TEST_ASSERT_EQUAL_SCREENSHOT("span_02.png"); + + lv_spangroup_set_align(spangroup, LV_TEXT_ALIGN_CENTER); + + TEST_ASSERT_EQUAL_SCREENSHOT("span_03.png"); + + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_EXPAND); + + TEST_ASSERT_EQUAL_SCREENSHOT("span_04.png"); + + lv_spangroup_set_mode(spangroup, LV_SPAN_MODE_FIXED); + + TEST_ASSERT_EQUAL_SCREENSHOT("span_05.png"); +} + +void test_spangroup_get_child(void) +{ + const int32_t span_1_idx = 0; + const int32_t span_2_idx = 1; + lv_span_t * span_1 = lv_spangroup_new_span(spangroup); + lv_span_t * span_2 = lv_spangroup_new_span(spangroup); + + TEST_ASSERT_EQUAL_PTR(span_2, lv_spangroup_get_child(spangroup, span_2_idx)); + TEST_ASSERT_EQUAL_PTR(span_1, lv_spangroup_get_child(spangroup, span_1_idx)); +} + +void test_spangroup_get_child_cnt(void) +{ + (void)lv_spangroup_new_span(spangroup); + (void)lv_spangroup_new_span(spangroup); + + const uint32_t cnt = lv_spangroup_get_child_cnt(spangroup); + + TEST_ASSERT_EQUAL(2, cnt); +} + +void test_spangroup_get_expand_width(void) +{ + const uint32_t experimental_size = 232; + const uint32_t constrained_size = 232; + active_screen = lv_scr_act(); + + spangroup = lv_spangroup_create(active_screen); + lv_span_t * span = lv_spangroup_new_span(spangroup); + lv_span_set_text(span, "This text is over 100 pixels width"); + + TEST_ASSERT_EQUAL_INT(experimental_size, + lv_spangroup_get_expand_width(spangroup, UINT32_MAX)); + + TEST_ASSERT_EQUAL_INT(constrained_size, + lv_spangroup_get_expand_width(spangroup, experimental_size)); +} + +#endif