From 15477d8b3686c5eda407e48a547f2e68707d07df Mon Sep 17 00:00:00 2001 From: Denis Chenu Date: Mon, 4 May 2020 11:42:23 +0200 Subject: [PATCH] Fixed issue #16175: statCountIf returns nothing for first participant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dev: $result = $result ? $result : false; can never return 0 Dev: php function can return null, false, 0 "" … Dev: Add test for "0" to be returned --- .../helpers/expressions/em_core_helper.php | 5 ++--- .../survey_archive_statCountFunctionsTest.lsa | Bin 5562 -> 5631 bytes .../FixedFunctionExpressionPluginTest.php | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/application/helpers/expressions/em_core_helper.php b/application/helpers/expressions/em_core_helper.php index a0d34090460..30f85cb375f 100644 --- a/application/helpers/expressions/em_core_helper.php +++ b/application/helpers/expressions/em_core_helper.php @@ -2120,7 +2120,7 @@ private function RDP_RunFunction($funcNameToken, $params) if (is_numeric($params[0])) { $result = $funcName(floatval($params[0])); } else { - $result = NAN; + $result = NAN; // NAN in PHP … } break; default: @@ -2136,12 +2136,11 @@ private function RDP_RunFunction($funcNameToken, $params) if (is_numeric($params[0]) && is_numeric($params[1])) { $result = $funcName(floatval($params[0]), floatval($params[1])); } else { - $result = false; + $result = false; // Not same than other } break; default: $result = call_user_func($funcName,$params[0], $params[1]); - $result = $result ? $result : false; break; } } diff --git a/tests/data/surveys/survey_archive_statCountFunctionsTest.lsa b/tests/data/surveys/survey_archive_statCountFunctionsTest.lsa index c80f7240a23183bc9f9c8cfc70aa400b2f60c02a..92722dc04cf3da7cb65cacc9623dc0ecf21b1556 100644 GIT binary patch literal 5631 zcmb`LRZtw>lE!CnhXBDPxVt-qK=9!1?lM>i?lQPL0fOt`8iKof2oQ9D4DNn&Yae$1 zcWd9a`=P75&R6F=d|jvNr>Y2#fCc~nPyh-l8LCv>0^#U*06=9I0PyDT)ZG*0W#wZc z#LF$j%ggTQ?tV<};J(Ix;TwoJecO8+>u{gukgVpvLqC-V)i1N@Jhl=hC!nT6<&)v` zThRvHpSFI+0Z5^JGZ*_M^dL=bPPj5?Zle2s=Ij)^aip`~PS*D6cxvmVH$HMFD1tWM zuk&(#GN-QK^y&EuY$g|K9+sjaB>*(Fk8JGMc){n?d6 z5;$b5u0r2)TjFYe-g_YL`4N748tg5mf2r*sNN5podkOyYB+1gf5GWxm8f7H=djZrM zj)I02Hb;@6W#GQe5IJmqV(;`bRlnYAHev#Xzb|qPv z$$zihhs$B?wV}To9GwNH;F+nT^=HN(Pb(!#I%h7LLZ)=P@~R_Ri>LP|XNXFul81_) z!VPi|fH$+j_}i><@_o7{8;wtTo~^iXSl=r;QV9l^)E9LnCc3%g8-Mwl{Ej_8abuM> z!GGPDNxU;8Ctj6?hq#l#U-72H5Ues&HLNC#8!&uLIrDwE~ z2a{F|BIM1G-5|1aj?xf{%AXGaOYax#?s#z6LzJ9Pe!i2VYWb3cxay0D_;M~SD*M%s zJ+SFVucmI9*_$l_4)mN>kNn-whveaTf`JxvQ~DgRUyDH=Ey%4<3ug0E6%ZtE*R+(H zC)gBS9^&eaC@PP zvX;o{`e@=L6%1Ry7k)c3gHh<-6nj~?)rJ==bC?OXZQ~~aA+X4k?_%cfl1E7 zfm~IRz*WAJR9gItV`bCvhl9K5$~iZgwD_e0X1&!Uf|X*0?i109Z(EXC+ap>^$Ld>q zX>G#``UQdRj*FOUN2GfLymJzV-N?d1w*#Go*n7q*?)W|y*k;{!EAmKW*hVq%wig;pR_1He41KSYugs{yMW-a))Yhusk0?x$oL*~#MR1e_H zCq)%`*q%o6AvKq-_GMIL+M7jfRZJ8bJsvR!iX(GJ2y#Rr(XX{`Ki@_Ji_837jZ<&H z^V9)?%$Q#e9VaGNgC)deZLs3`%dZzZw^9TlsRo!s;~W;d=nh=5&5 zEWTxB(|a|E@UZlW2cLIt>bn85;=h#-hbRxQqOWW;@NEuy6Tn%5dWRzEetVXq7$Zm; zsm`nj6LMW~?e@vEQ~o3$FP)e@;lB4#_Dc#hi$;$g|>`Wrdc=5;cna;+VwYIoU5 z-+18i#CYmPXpC@;2YiTH1qCfXV^+fs{HHKV`gc?F+Qo`o8^2X5NSl>U(Lhg$k45~R zpZb15C=})T1Nb^mV*HW6P>q@vaNVw=M=H-64jY8*jn-C^tp{IaD|W97>bg|4!eg_r zUweIRdqA^AE_yo4q?{psSX)|YDukFKOZ(`uW2NQetn^af8P}b;nJ&X7hZ}Bz1AKU zKKp@%I%a?;K=;{8+ohjYKsEZPZ}4bZ%CoQok|IlkzY93i*cRhc<-Nqn!`Nip<+ zq&PCS<2P>})v^`;M1xtvP;T^}BFe*i%G*6}{1^_r;t`$Y{LWe}#E^HBS$|k=zxn`6 zS_kC$V-Ead7)-fN#wUsY?gx6=h@IhttY0xa`g%zAHqHW_YY|svwf0fh$7nh#>Sxf` zBm`Pm7b!skc%j67A_oOsk&*V@WoAf<+s4@d-rM5@eYN&FP@xQGqNJzMK;m=}|Kq4D z84@oAo;C2qmmKs3Y{9e{w!Vd(z5RVt-X!EC8+~3Sb+;G4JxS1iS&~K{AQ4bC&S+HP zwpZn#D^AhYh%i$>pWv!gifMuCY9|c2_oF8JbYTZ>5G!{O*T?Z``M3=Mv-X4S{=7ZK zI2I#v8$YE&$!dJiVo^_?11tb@ZCRMn?i`BK!Hdjo8rkh+a)<)JL0Ak+otayXYzcC? zeU9m=8@_7U2oV8_Bit9Ld9x-4Zsc8WFk!I>_ZIW$CZvs1iUmp&qizHD;}_TGW3o6Z z{U4giD6LVp?+{xG(pyR*RLc4A{*(~Rc1)XJkWUcHMa3Pl zI+>rS2tnJe&9LV!dB1lqlXkn(Wfvr=Ihqhx4ouF@0xlxx0!hd-8F?>6;wFH&vtyCG zFG(}GBq1j{^dI>mlrnp<6_ZJ_pnzaoYXyF1MEV(-AxoMu?O|AB+iOF=GKNJ%qU4M;`ACI$vXy@5xK0n7LnV zvprGgMyyEY!fH$#n9WORTI_U!i$c>fR*W3$Vc*p8eaDanT%$3g6^bJr`*<{~(v1$J z#J`A`1{I@3ig0*u9K((gc$ux;S}t+lJt2$ef`IjkK{DkRBYfF`H{w18O)X2KOfH5< zmq;1al3-@p4qi>|Xb;ChALEEC87rC%x-q}=!oAYpxb5R`$^tiEld1ZDe@Jklj% zv!$K&Xc?lI1+W~SQOoN6#-#iTOc!uVuu*A%T-j_iJhBox)|!wOVVx+A*Gr`r-+1fDlnxB`-bsPMuE2!H=-kMsuA6Q zqVbyHU8HX`xSMd$L`*$DBRn~J4YJ9a!vIm==l(%D=*XkGXzr`4*ZFf+J7Kl`EYg7bDlbqUH zt{7Orv5c|<^Lw2Qs_AjHHIgWH9F+8MQBm;;i?&aX69ilWJM=~Xy%no&yF7rfoQ3DRp;9~Og9)8@pyHG4wKc8uyWU)T=#z z|gLkW?xAzSdz+>DY%G5q_TfP6fm|fIuk;=T}$mlsuFe zx1VokRPKj=(|oEA-KXRCX84k2Lfo-43(=LD6zI7o1I)Co^ytWX&7M>nX#w||G~LE6 z1bmL@_qO_=JS?|ZGZJ{jWK}znj~kQt!KW59jelM-fdeW2tpTy%RPtA+B|LFtXkSPW z3wmeMj%T$T+n~j(G!!8>D)E3vUy^lM^8_nOI#+R>F-x+fjq7) zlh?bOi-)cg8^hv8b*n#T&^iuh0_;~FAk%?2-G(i@9}P{vc_mh%fQuu|^Vqa8PKdG22oZ!J<^GqZSX7iK>)3R{I4K053MNVql})q=StsXl`;Jbr1$B4`}GMz}=dE20n6- z)<-;tk;7N_Sux}z^jmZ6Ssaytl<A zjZLbpKZGw$O~C0XD2Vcdf5F`o)8{ct93`ds=LF=pUY)*v>^rsxEQn5-=RuM4qLmRw zEhw`nQ8h(u_Fd9lDE)Kr+$!Q%{mHnI|9TEK(bK2&GFr1Ti?%VH99jy+Fc&DNtOCV~ z_t?s)VEj5lqCY*8wa%TjU?0$ZnQYTJwGFn`Ag^$u$_b5(6s%p>9h3O`PnLKq4H9La z8-m8;_h!DyHOx!<$bA$=J$*q?9~G~^3NFEB^*23)SESU{?rcAzQKZy+7@7N+F5YmJ zRFc5zZ+ZCtF>(}bNHy`|>e=Qd3*%*6DN!sldBRrx2RXa6MwUGR0su1@008NKk~0&K zmAk8pv%8i1Uxo%c)-m|B#)%&Q)$#C0-n2j_rqONApi(A9490n1$feaZRFRB7)Kied z==mj@v$YRi&H3j3JKm$;FoX^JwIpSudkRd;gY4gg{3zxmtCyR3F7@hoXQ6Y2y%-xe|^Z>vz!p>$m^GDfBlhgegeNE(R7^=c^KO4E#vksm}N}fa;VX^8vVAi zDalmLwT>WJz(nnWeKw`dC!2ARIhxM3B)xFrWy;98>22d0FVjx>0(p?UW~#>HHG2T@ zp4EIGd+d^tGCC6$Q}>T3L!5|qLIu(AB6rQt52WvRu?JsN8xRoVaD8r6H`A2N>3WR( zDakMsYB{^Vx0L&&p||i9tNt*Gf~|(S_6W21k*?X!fb`7_pOZ1LN|lctR)v>~7XebJ z7-1+51ck9Vt{ z56ZL)@?^E9yr#WWgKI>ZfE0AU0GO0F<#|g4z0?i$0!Pn5&P|eISwgBhE6Q+R6&S`R zZF|;LfL*c{4Uo?KsfBx$Bk;ygirM!ySgLyoq2?K&3sdoWfmc-o!r=q{Z^Zi7EB_<@ o7jXSg`G5NCzqP`Dx$QsX|8$+IA|lei55xVirGv*B-*vzjq~Cvm=W(Y|6lQC2P;!1Z|9pqM{PUKKlXX`bycBgU#K9;h zx{SBau_$P`KO~r2WNZ^2XJS^6ynn6`r_+eMKEKe)w1O0wVtcj(*M(OkLDvQn#gMCMZoFICWsppQwJD;*K!w!O_mXFooCu(8YGgMGA@H7~rya_)F;9{^GO3B_N z+^q%|A3iPd`9s)jI?Ysk?z(WOcrIEg4@IFao4Zjn4?#88O3&Swmo)BK!CJpI?tx4K zxabbXdiGOasT1V3zP4vL%ook2e2})!l1ZAvE4wA7Bl?P%zN4bcm_EGL3f^>VZuARK zouUt zAr;j3MJNeA-c zpExBMc)~=8)2S+jT+*(8}6M4z&SWIO$MhCdF^CLzwfv21C3?RY82^PQ{X3cWCq{7 zXdaWMVvJ@|2I3-=RtCr9zN$mRw3(s!J(&W*{%8CL!OadCvykg5l>C@C-tf)8!!%7@c}&`b$6i(NlvrRJOYn$--6W<>?qMphn3OB~*O*X6e1kNJ|>q*vJN54ra>a&~bE z0qP~aLC%#6KD3^tk4mx zWdcH;_(XM8&t=h0$bu4{%*>68k4vF^D4d}%9OGU6IItUZYAVussczPl!Gd0%DLh)} zw$+KyxbgUj_|b15i22tC*(QY2<^ocZtpqKx&f^3d4}zbV-$dgy3SPzqXZ}bEE-)|Z zcan6M{^<2kUfnEQrhAD&wi|OtEMzJci+7_>Gh?J_M;a?VMuHYRD26^x#B(4Zfg7zA z3f6Lw;UMXAl+k^B7wbm*)O6pX7Dtavr%l2Q+a}@6^0YN#9}xTdjI46^1Suh z+~e}xXe3)8~9F-jt^RY8+bwDF#0|v2IgM?43S);rZK& zU(%~Zo?|&9*YgWFZk1r8G}o`}51zikY6bE{FcBQA{nK_I(d0WWvcJ+o=l0_#x<`&O z`EsA`TO_Hk{AIAC14eR=Lgd`?{g{H(TIl{F_53Xg1SU@UB_R2FHh98Wy$FI^4i$-b zpq91Spm?rC*_{S8!dRe^FaFBy`t3Lp4#a~983bA48bZsOdp_3)8y-nb@)bdXkSzw{ zX>RS2;zz)Sd@`2~m)jFG%S?-v#WpNV^OBz@ zQ`h!|$*dBx>LiyxcmF)8)I;%yQw7?Z`ghs2vS#O$H`S=!&sKtSfG-99j|}x~I|KUs z*nCDLr+tI(iARLg17YYoC`G&Lkw=XY4{^;R1+!)Qt?KO1zF}PlG|C6RTSF<7f6mZ( z0zdq|PI}ICa-E)wNOU?hKfP*v6sblK53-gcHNj>7fziPmzd#^*=Ch&Xta6r3`n~rD z_KL|qt3r0@)|n)Y!%h8p;K(+iyRioFh#~)}X&*V=VkJfVUHa2}Nm-p_j5O-kdOfI` zRK9@tB0|tB_euN{C770M>Z$lF{^`d#VSp$0*|+3Z|a`>&*3fzL0*qDdnH#UcGow3`64*$D5@*wPv%sPY9sXL>5D?=&Eu%*?~AT9K#SbDCVZuJm!XB4UjNolW=%@)Mz>1U^`eWJ<|lQv)2 zpsh){^ZBI#icO0l$Dh9GV&b^Yc>-$3`*tF{Os`0QBb z++E*2KmxnF5XAkIx@gQf+0(@o*i@;}zgbo|=sdhk*0P5i)=ImDxdD=Ydlml*Qo&E@ z5Ca^d%+Y-C2(kc`Cn1#<-cT74u@c_~o!{f)+s9mRABHwsg_!u{xlTlilKIfr27F9A z`m)kGE0DC+ygT#3WypJ@0}W9!8)KOmQs5_M$-kh;hY2x}viZpQC!kJ{DkBPmVOl?p zo!+7t0b?UHI|;Bb>{H}c*(LX<%O;8e$o1l0FiQeD>k>*+xfv?)SkF%9vZBC1@G#At#!LzrgT3T` zadrdQS|T`4nl0jWH=exQqb9tW8KFW}SVV%ck@I%ol-=A=0IA)8k$@|mu@~b!#fIc2 zt)&F0QpJX6H4$F5xzZl$IYRXtQE{KP%Koq^Txq|SpPz?LQ1+yI(#~;{M}jupK0dx2 zE+#u`Z2?gqj*PO6k>}bdo&|tDJMI}L8q%d&6j|_0Xs;Fz#J9N|oc}I&h$KOqEtnK< z6r$*vg#n4K)F~Qu9F^0kQOYB`0S3Hpgjc?DvR2^TbZUdB+9*$%5UAMOX7NHsk!6a~ z+f!@c$O`CP=+yZ>W7Sqy3T8Dt8b*{ZNFC|%4s%GX8d_y9TCt&P7L8j~!D+#Pin82z zpQF$t&#Vr#o^3pM{Z{!S=(yx53kG0lRB?0Ll7dT_% z)AwRd#R(Wk9&-JP#iURiXd^}`;AfNPv~{P?N}Z8Kn!ilUtQ(RV>^G=I0ieHK8}A|TJ68$X>K1~ z5J}9R7jz-09CpFuVJG_WZa@KBBhNaB2Srfzgs>m&>GBD74Sm|ZJ!(ws+*1q<*0~e^ zT(?8f;$bJH5N>tU*FSIC{Cth~5ie(`@?gBVGAm#x+XcMEm;`}w_2 z+&$)CkRNmm46=nbA(bIM;+i<)W{@Xg+j}D9N{3ordC3CBRTSEqN}qRb7pISiL*L() z1PVMq-onZf&2+AMOi#Z~+OzcyRb~Bi>zMZZfFO0LXu2;hpW8p* zoZczDa$pLh{roccH@1LrJF%0?q4DwSdY+l

B>`qYg>3LC#2t9cV0@-Y(&QW(k7G zE=i+7#5POGgq1YW(fIBa+%^|HH{}+o6n5y}1R~WW6>o)VQu-Xk%y_cth2MOzzXmqM zXiNkEuUIGJTo7>2;;+>$h!LzFB2i6IE-v48DRs$5m~%K9be+hqFBspWsai?!#L7-t zO%~=Z2(4`!rC-pd7ZA+B6TM5jsf5q)3muA%CPq}u{-d&yuyncFA|5@&?Xstu?OvzS>+5wY_2W&yQc&ZZU~K1CUiC56J#st4$wdWM}KfZ&nE z*KV$cSZ~|&N_0lch!`WP&M_^1rbOJHOoN|3!LJpQ+rIWrb3h_@8xK4b+AxaxpOAYgx`#6PAC{HWT!&i?6c($X1V|J*~_u%pzm#k5Qi1dd*mm z04)|}Rsm5vqP$X+E+A_igJ?%*r2@~pkJ68?@t4_ zdrw%g+$qvQ%13W&kC2NDTfN?{_BNraXVT^4uBR0t7^LdvbaC)aP7?j;4keqV#AV;g zS7i}+`*iyRgFe9ybVy5e(R+H>7Aav2Ct+P2)X3w5EH$&Or~(2c3l<)qG$@Bgb$L^v zdHA4%qz_Xx9x)HwxodMdat4C1li|e++l=KhaoEB(?rn-8_GIrouyF5I9ie|XN_AOh&^<$D4L!90}WM$YQ|KqDZ-WyTd#J8&p zF@Vz&Evr9fNSeF~%ZHT#{k!MHFbv$Umn$9^B3uyScL?r1uGFxN`kD3{-C;VY-d`U7 zuD3xARf#MrR%iwRQazBtNWyeZh9ua7F(o#3V14{`dq-qZ(7>OPF+-9~-mPAjyb7FkbF#Z@9}EZcN!}O!g%yAJ+^6!9A5Qzbfz(6EBoo@#>5b;TR&qkNw_G0ZG3$NC zE@nbsGdad11B>d>S$Y+TJa;~Z^WzB-(UF_Kd-?Bnu%w+3m7HKO|+6i2P|L2HIK4mIwbnhkjQLr~*cR%(GPW|7AR(W*$ z{X2L7U=a%dApcLIW#(?};p*b-VeRn`+j2k8*mB9?!2PxLtY_ut^0J40royJvYR8_# z<1|$Y*5UoREo%o?B++r#TZcgFEv2uJQxZf%i}>8*({f=+u1@?V#r^_3eIuYe{d^X8 zA0R|&tC0)-{cI+80k(dl70}S&GX)8;!ruYGw~H2^%PyiIzMkUq{kD124Lr;3w5r8q zJ&%U6I7wl&E#;-=LI&aZd24GDWii$0_e%6NVTGtnww6loI1VA3a~?|TI`#gPqX*8IX_PU>e{!fQ)4bP{gerfgNi(D zB|dDtXRcOMRJF)|sjUr(DVFH&@DuK$FxhnN>gKJq{-)Z(+ZghrEG?^1{^azU<*v5H zW*d=}x8*Zd*te6Wm}X~_YgZwfcjfE{1u+Jsy)MCS`?j85Y1pbKa#*duskdA_c4}i0 zrk{e=T#fLZst!#8jaDPrdgNr37F0JkCl1fCf<1P)>+qdlssCcHzoPr#lM8Qil}PzY zAX(HDh;C6#XLcNAU$c(RNZyAJ!2{g4s1+C*omd<8SO`J}Cizb! zTYr&meCM;LelNac1DJ#XI;ZSJj!AX|EM;WaBwZo)(VJRC=dQiy*jECi9C?yArgEL4 z6{JB!+Mi+hiP!9k1yRbO1emk(xbc*c+U)B?kBqccYE7vq>dJ8N1c3jWj{ak({}KO- nmHwyvKdt!R+PQy_>%YnW-I(giNXY+MhW{s{|EUy&|LXn=h4i00 diff --git a/tests/functional/acceptance/15246-fixed-em-function/FixedFunctionExpressionPluginTest.php b/tests/functional/acceptance/15246-fixed-em-function/FixedFunctionExpressionPluginTest.php index 0f5c97810f4..1ffa8eaeb22 100644 --- a/tests/functional/acceptance/15246-fixed-em-function/FixedFunctionExpressionPluginTest.php +++ b/tests/functional/acceptance/15246-fixed-em-function/FixedFunctionExpressionPluginTest.php @@ -50,6 +50,8 @@ public function testPluginsStats() $this->assertEquals($textToCompare, "3", 'statCount(self.sgqa) usage broken : «' . $textToCompare ."» vs «3»"); $textToCompare = self::$webDriver->findElement(WebDriverBy::id('statCountQ01'))->getText(); $this->assertEquals($textToCompare, "3", 'statCount(Q01.sgqa) usage broken : «' . $textToCompare ."» vs «3»"); + $textToCompare = self::$webDriver->findElement(WebDriverBy::id('statCountIfQ00'))->getText(); + $this->assertEquals($textToCompare, "0", 'statCountIfQ00(self.sgqa,"NOT") usage broken : «' . $textToCompare ."» vs «0»"); /** Relevance (and update) check **/ $this->assertFalse( self::$webDriver->findElement(WebDriverBy::id('question'.$questions['Q01']->qid))->isDisplayed(),