From 7253c091a2769fc027ccd9051d02859a6d9496e8 Mon Sep 17 00:00:00 2001 From: David Wendt Date: Wed, 4 Mar 2020 14:25:44 -0500 Subject: [PATCH] Add tests for control flow instructions that use booleans or strict equality. Other comparisons will have to wait until we have ECMA-compliant abstract comparison and coercion. --- core/tests/regression_tests.rs | 2 + .../tests/swfs/avm2/control_flow_bool/Test.as | 30 ++++++++++ .../swfs/avm2/control_flow_bool/output.txt | 4 ++ .../swfs/avm2/control_flow_bool/test.fla | Bin 0 -> 3985 bytes .../swfs/avm2/control_flow_bool/test.swf | Bin 0 -> 717 bytes .../swfs/avm2/control_flow_stricteq/Test.as | 54 ++++++++++++++++++ .../avm2/control_flow_stricteq/output.txt | 8 +++ .../swfs/avm2/control_flow_stricteq/test.fla | Bin 0 -> 3985 bytes .../swfs/avm2/control_flow_stricteq/test.swf | Bin 0 -> 827 bytes 9 files changed, 98 insertions(+) create mode 100644 core/tests/swfs/avm2/control_flow_bool/Test.as create mode 100644 core/tests/swfs/avm2/control_flow_bool/output.txt create mode 100644 core/tests/swfs/avm2/control_flow_bool/test.fla create mode 100644 core/tests/swfs/avm2/control_flow_bool/test.swf create mode 100644 core/tests/swfs/avm2/control_flow_stricteq/Test.as create mode 100644 core/tests/swfs/avm2/control_flow_stricteq/output.txt create mode 100644 core/tests/swfs/avm2/control_flow_stricteq/test.fla create mode 100644 core/tests/swfs/avm2/control_flow_stricteq/test.swf diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index d73d7341d..eff7b84da 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -236,6 +236,8 @@ swf_tests! { (as3_virtual_properties, "avm2/virtual_properties", 1), (as3_es4_oop_prototypes, "avm2/es4_oop_prototypes", 1), (as3_es4_method_binding, "avm2/es4_method_binding", 1), + (as3_control_flow_bool, "avm2/control_flow_bool", 1), + (as3_control_flow_stricteq, "avm2/control_flow_stricteq", 1), } // TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough. diff --git a/core/tests/swfs/avm2/control_flow_bool/Test.as b/core/tests/swfs/avm2/control_flow_bool/Test.as new file mode 100644 index 000000000..aeeb49045 --- /dev/null +++ b/core/tests/swfs/avm2/control_flow_bool/Test.as @@ -0,0 +1,30 @@ +package { + public class Test {} +} + +var t = true; +var f = false; + +if (t) { + trace("if (true)"); +} else { + trace("TEST FAIL: if (true)"); +} + +if (!f) { + trace("if (!false)"); +} else { + trace("TEST FAIL: if (!false)"); +} + +if (!t) { + trace("TEST FAIL: if (!true)"); +} else { + trace("if (!true)"); +} + +if (f) { + trace("TEST FAIL: if (false)"); +} else { + trace("if (false)"); +} \ No newline at end of file diff --git a/core/tests/swfs/avm2/control_flow_bool/output.txt b/core/tests/swfs/avm2/control_flow_bool/output.txt new file mode 100644 index 000000000..c1e3ebcab --- /dev/null +++ b/core/tests/swfs/avm2/control_flow_bool/output.txt @@ -0,0 +1,4 @@ +if (true) +if (!false) +if (!true) +if (false) diff --git a/core/tests/swfs/avm2/control_flow_bool/test.fla b/core/tests/swfs/avm2/control_flow_bool/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..e8422682499736c841d221c3be55563405f47944 GIT binary patch literal 3985 zcmbtXc{r5&7oWzGeQE4Qc7`mClqomag)G@8Tb5yD#yYmK#)LtL?6O4JvJ6p{vhN|% zRU}J8=vuRfe&f2;t>@nR&+oj?dEWQ?eb487&-*^-JkRH&uT4hI0sv3}0KUb>`aJaZ zWYhov;Lu5101UztBjxLW(l^jEgG;Iyp4I;;oD}ih4#Tf#DjO&nz@`5^>M*g6nvs&E zrmp&bgfWxC+`Md2PM$~%0_}#fArT2hO zM!1kFMx&}t##}NKnF8bP2EQ3f*=%;GP1Oe8;Ywj!)48<`npHH8-6t-aAjEFGaF3O_5`RhznC38{ z-+fxRES~{w2o@HOf=P-BJt!j@t2PP3;+{f`?3wkP(&~qNuCQVHgxp4&GS=ak2sXa= zOH4UBWa40DrgFC$KyfigGWpsZyX3O7N)dH1d9J?pm*&S_@aDjZRc%lS2QO{j1g=tHtwyeyg}vkIb9gj6hp zq8Sz1LK8-m8?_p`rSFhY>{Zc2mgOC*iKjh~xg6%q++Y9cb5n-@2uvE;-3*2XVFNG$ zsxRvfR;ND9_w}U-Ha-j$Y_v)e#9Ay;iF|GJSu689F3QgfR?{&s&uP{0h`4j3sXxzO zzE^MWo%iN}e5MngT4RRJJ+^yIDaWjx)8R=r6vXZH<>}~Sybi2KDMPL`7Cl|jJA6^XPQ(V3AcGNfsN_emN=#5~NC}C6wWlUSkNO1Bwp`s#(6%QY86SQ2` zK*iMIjgcEhdvpZbMpgoi{|R%;wq$hN@RJn+pUD?1rm74x{Vj~z$0W8kt$~x=_oB|a zuVSs3@~S%15vij#wi-c|8w-7PU*dc>*^kBz_}2`RX5qWBlAgYg8ybPJvA4n49FE5~ z$k8kXKC;$2I1T_5f&l;!38H^AdWHxL#>vIe^AOMucXgeHfr5jxfw`~pV3b^wHcL; zxlAD#W6-?0;tXe1=F4@v*YZWCr^K#J#l7aw%JXU|NkaB<= zrGRZYGUlp1p2`X@u_Ml$K4YjvE5qJ0of}flX+@=~P(5oTKw1O{N=8NiA=juCf78;X zd(zK(aF<{?lF1nn?#-hhJIFa2-kdh6tmXzjfBbFui#wjV0`W`AuP)j$nQFXHipr6< zWiS|xVz#eogZ1xdK2Q6!2w53_R#7m?j#}=_O=EKR7wM7lSIJBhSl^_(St#kQ%D-D9 z1n|%UpJxsSyj><<}S9i>^Ao zZa$vQyBl_`>J@UNe{930bPWAuAfnX<#*t|{1C`LbSh%zoFnK$DqiPiHJY0B|`y_Jh zQ{N~AhbTg(;?%AA$;5(2QHr8|oir?V=js-b&8vy_s_ zlH{&v$Z*j#GslR%Zkc{roC*{RkAf-W+nOqhxf@4=_L;==O^fz__hIcR>T1HS@z;Bx zv(FWsm8$gk8j?UmylRxMRa$VJ)H)IlzSiCM0>2yWTj;psi1y+hD!b7b(VV2QJ zcj0ymX{x^D{SZNlg7D=P8j-@%#C^LJn@!<}&oa@1o2m{r$@I(`RopZOeJ!a9)9}<2 zklRm(3gs5gWGV!t_4Da`v?n-R9Mk6i@V#ET_I&M;hw(E zNbVw_fd~7*eJ0lQ9+YO&ke%QK;0mzqa!di{UPn(bH(}KJ<$Clk`b9&RN8%N}!DhYc zt%OZ((VTwHk!rPYZ!Tzpdme-Aa@fYXyg6#gmGHY@YWTLP}zr0c(c&xIT7s`e*@tWiF2`S;HPO7D=@)kU3k3h3AE~tDzj>CZiV< zWe^qd;1hE`Ijon(?6;Mhy4{b9wOu*?N`}H&_d%+RvFnm~$GVk!)58Fsi}X-%Z<8}# z;g1jz`up}g9~wJBNkEDM`E$0blzX&!RH9~Q!8RV!R*!h1+5{NWtt{K&1d(j}>^lB9 zI>HEdLeyuDir<)Pt6eYqM9lZ$rf~N;s-UylT*tY?Cyg-!O-nKJ`;hGoIb_*F!+{Iy z{itArOSdS91zOw3y2EKdEcA^U=P#??NV=Z@A+J!isiteAf4Q2PihYo5iY#KD!b&UdD z?!qiV99p00xYW3wMeVRzdylWZ99=7&a6PDa*!Wqcx(p|At>sv`2_*Yd$YNY}&FA8e z3wk@R6}!5w@oQ|+4s2xj8V3sRsmu6xc!y0)PiH7>aKGnaQ}`1Wj68&r3u{akQ{Am+=3^G~sPD!ZKz zZ|GlI4T6!y24=rL*9j@U@?vZIt8;p9HZZ8G`-AoE>KXrp18vD#8un zVlQQ9V~0dIlD3J*fdEPX8-N8s@n>4n7T|d)iH-cEIqDOp!Z}HA4*gJbpq)s(#?K95 zx9pb#&^#DXYKmq+1Eef6-ar z&i*&{`2*ZW_P3IM=Au8J|0^5)kz$LK;vcx_f7Ni)+4|6=#K=`qy*nOR$rTf^6(7}>53;QS$_J%)&BsahCnd@ literal 0 HcmV?d00001 diff --git a/core/tests/swfs/avm2/control_flow_bool/test.swf b/core/tests/swfs/avm2/control_flow_bool/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..e691fb87b5250ce0d931e9a668910735d33fbb5e GIT binary patch literal 717 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 literal 0 HcmV?d00001 diff --git a/core/tests/swfs/avm2/control_flow_stricteq/test.swf b/core/tests/swfs/avm2/control_flow_stricteq/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..421426e41a0efbde9fd2de65786e04c1951de7bb GIT binary patch literal 827 zcmV-B1H}A8S5qr%1^@tfoSl^GPTMdP$8G20ruWiP3an5@xpc5LfEcImL&nUx0$pD;T8HG`x2gj9XDhYD4MjWiT(foe2%S?lYU3iAwsdA2xTzZ zNCXf<6>@WP^KJ;C@%Z_0ej$JIDc>%wy!ujURaeyQiuIv%vbntUd9{eH21BqOqrC=e zvD^YeSE=6;H{gn+A|K|Fvd?U%#2-@*JPwVfUf$8o*1mblnr4fY{itc|6w2Cp2JQ&Rgwp||FQ29aoSfJty>V4z{c_Y6CxJ7SHFi{9h1Ti2X2}_s*0TCi#n8^HZf%1op z1rZK_FpNS+eGkDHi&C(ocB<$)?yi7C2+&`oqk<;&fJRh}9H8tm1})WUk zZa|YYc_f06tJFjD1G^y{S3rb7Btf`Q;IzwQV5NMX05QmUN~5>&gJ7k7J_KTj^AX@) z{3uu%pJzb~bDrb-4|6^N)`-t1L5y-f&G+x}8L*!DyZ|E0`8?mh%U^;u=JOJWan2X{ z{$0KVR?g?kASOUSt>ASkL9dWd*I+0HReSCVb-ayH!4<)l1hCWH`qsnOc^BtV$B=fz z#3evwsI@ZJQ5oW8j;LBx)ncj^SG9zyiSRqXS?@X)uIJngguG6U+`j+5Uj=#t