From 2d3ef5493b3263b328f7a052ba39cffb8c83299b Mon Sep 17 00:00:00 2001 From: David Wendt Date: Thu, 10 Jun 2021 22:59:47 -0400 Subject: [PATCH] tests: Add tests for default parameters, type checks, and implicit typecheck coercions --- tests/tests/regression_tests.rs | 3 + .../swfs/avm2/function_call_coercion/Test.as | 201 ++++++++++++++++++ .../avm2/function_call_coercion/output.txt | 108 ++++++++++ .../swfs/avm2/function_call_coercion/test.fla | Bin 0 -> 3983 bytes .../swfs/avm2/function_call_coercion/test.swf | Bin 0 -> 2364 bytes .../swfs/avm2/function_call_default/Test.as | 19 ++ .../avm2/function_call_default/output.txt | 6 + .../swfs/avm2/function_call_default/test.fla | Bin 0 -> 3985 bytes .../swfs/avm2/function_call_default/test.swf | Bin 0 -> 788 bytes .../swfs/avm2/function_call_types/Test.as | 11 + .../swfs/avm2/function_call_types/output.txt | 3 + .../swfs/avm2/function_call_types/test.fla | Bin 0 -> 3985 bytes .../swfs/avm2/function_call_types/test.swf | Bin 0 -> 710 bytes 13 files changed, 351 insertions(+) create mode 100644 tests/tests/swfs/avm2/function_call_coercion/Test.as create mode 100644 tests/tests/swfs/avm2/function_call_coercion/output.txt create mode 100644 tests/tests/swfs/avm2/function_call_coercion/test.fla create mode 100644 tests/tests/swfs/avm2/function_call_coercion/test.swf create mode 100644 tests/tests/swfs/avm2/function_call_default/Test.as create mode 100644 tests/tests/swfs/avm2/function_call_default/output.txt create mode 100644 tests/tests/swfs/avm2/function_call_default/test.fla create mode 100644 tests/tests/swfs/avm2/function_call_default/test.swf create mode 100644 tests/tests/swfs/avm2/function_call_types/Test.as create mode 100644 tests/tests/swfs/avm2/function_call_types/output.txt create mode 100644 tests/tests/swfs/avm2/function_call_types/test.fla create mode 100644 tests/tests/swfs/avm2/function_call_types/test.swf diff --git a/tests/tests/regression_tests.rs b/tests/tests/regression_tests.rs index acd11fce7..0cb97c03e 100644 --- a/tests/tests/regression_tests.rs +++ b/tests/tests/regression_tests.rs @@ -589,6 +589,9 @@ swf_tests! { (as3_simplebutton_constr_params, "avm2/simplebutton_constr_params", 1), (as3_place_object_replace, "avm2/place_object_replace", 2), (as3_place_object_replace_2, "avm2/place_object_replace_2", 3), + (as3_function_call_default, "avm2/function_call_default", 1), + (as3_function_call_types, "avm2/function_call_types", 1), + (as3_function_call_coercion, "avm2/function_call_coercion", 1), } // TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough. diff --git a/tests/tests/swfs/avm2/function_call_coercion/Test.as b/tests/tests/swfs/avm2/function_call_coercion/Test.as new file mode 100644 index 000000000..5975c6245 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_coercion/Test.as @@ -0,0 +1,201 @@ +package { + public class Test {} +} + +class CoercibleAsString { + public function toString() { + return "-99.13"; + } +} + +class CoercibleAsValue { + public function valueOf() { + return 23.16; + } +} + +function coerces_param_into_int(i: int) { + return i; +} + +function coerces_param_into_uint(i: uint) { + return i; +} + +function coerces_param_into_Number(i: Number) { + return i; +} + +function coerces_param_into_Boolean(i: Boolean) { + return i; +} + +function coerces_param_into_String(i: String) { + return i; +} + +function coerces_param_into_Object(i: Object) { + return i; +} + +trace("//coerces_param_into_int(undefined);"); +trace(coerces_param_into_int(undefined)); + +trace("//coerces_param_into_int(null);"); +trace(coerces_param_into_int(null)); + +trace("//coerces_param_into_int(true);"); +trace(coerces_param_into_int(true)); + +trace("//coerces_param_into_int(false);"); +trace(coerces_param_into_int(false)); + +trace("//coerces_param_into_int(5.12);"); +trace(coerces_param_into_int(5.12)); + +trace("//coerces_param_into_int(-6);"); +trace(coerces_param_into_int(-6)); + +trace("//coerces_param_into_int(\"12.23\");"); +trace(coerces_param_into_int("12.23")); + +trace("//coerces_param_into_int(new CoercibleAsString());"); +trace(coerces_param_into_int(new CoercibleAsString())); + +trace("//coerces_param_into_int(new CoercibleAsValue());"); +trace(coerces_param_into_int(new CoercibleAsValue())); + +trace("//coerces_param_into_uint(undefined);"); +trace(coerces_param_into_uint(undefined)); + +trace("//coerces_param_into_uint(null);"); +trace(coerces_param_into_uint(null)); + +trace("//coerces_param_into_uint(true);"); +trace(coerces_param_into_uint(true)); + +trace("//coerces_param_into_uint(false);"); +trace(coerces_param_into_uint(false)); + +trace("//coerces_param_into_uint(5.12);"); +trace(coerces_param_into_uint(5.12)); + +trace("//coerces_param_into_uint(-6);"); +trace(coerces_param_into_uint(-6)); + +trace("//coerces_param_into_uint(\"12.23\");"); +trace(coerces_param_into_uint("12.23")); + +trace("//coerces_param_into_uint(new CoercibleAsString());"); +trace(coerces_param_into_uint(new CoercibleAsString())); + +trace("//coerces_param_into_uint(new CoercibleAsValue());"); +trace(coerces_param_into_uint(new CoercibleAsValue())); + +trace("//coerces_param_into_Number(undefined);"); +trace(coerces_param_into_Number(undefined)); + +trace("//coerces_param_into_Number(null);"); +trace(coerces_param_into_Number(null)); + +trace("//coerces_param_into_Number(true);"); +trace(coerces_param_into_Number(true)); + +trace("//coerces_param_into_Number(false);"); +trace(coerces_param_into_Number(false)); + +trace("//coerces_param_into_Number(5.12);"); +trace(coerces_param_into_Number(5.12)); + +trace("//coerces_param_into_Number(-6);"); +trace(coerces_param_into_Number(-6)); + +trace("//coerces_param_into_Number(\"12.23\");"); +trace(coerces_param_into_Number("12.23")); + +trace("//coerces_param_into_Number(new CoercibleAsString());"); +trace(coerces_param_into_Number(new CoercibleAsString())); + +trace("//coerces_param_into_Number(new CoercibleAsValue());"); +trace(coerces_param_into_Number(new CoercibleAsValue())); + +trace("//coerces_param_into_Boolean(undefined);"); +trace(coerces_param_into_Boolean(undefined)); + +trace("//coerces_param_into_Boolean(null);"); +trace(coerces_param_into_Boolean(null)); + +trace("//coerces_param_into_Boolean(true);"); +trace(coerces_param_into_Boolean(true)); + +trace("//coerces_param_into_Boolean(false);"); +trace(coerces_param_into_Boolean(false)); + +trace("//coerces_param_into_Boolean(5.12);"); +trace(coerces_param_into_Boolean(5.12)); + +trace("//coerces_param_into_Boolean(-6);"); +trace(coerces_param_into_Boolean(-6)); + +trace("//coerces_param_into_Boolean(\"12.23\");"); +trace(coerces_param_into_Boolean("12.23")); + +trace("//coerces_param_into_Boolean(new CoercibleAsString());"); +trace(coerces_param_into_Boolean(new CoercibleAsString())); + +trace("//coerces_param_into_Boolean(new CoercibleAsValue());"); +trace(coerces_param_into_Boolean(new CoercibleAsValue())); + +trace("//coerces_param_into_String(undefined);"); +trace(coerces_param_into_String(undefined)); + +trace("//coerces_param_into_String(null);"); +trace(coerces_param_into_String(null)); + +trace("//coerces_param_into_String(true);"); +trace(coerces_param_into_String(true)); + +trace("//coerces_param_into_String(false);"); +trace(coerces_param_into_String(false)); + +trace("//coerces_param_into_String(5.12);"); +trace(coerces_param_into_String(5.12)); + +trace("//coerces_param_into_String(-6);"); +trace(coerces_param_into_String(-6)); + +trace("//coerces_param_into_String(\"12.23\");"); +trace(coerces_param_into_String("12.23")); + +trace("//coerces_param_into_String(new CoercibleAsString());"); +trace(coerces_param_into_String(new CoercibleAsString())); + +trace("//coerces_param_into_String(new CoercibleAsValue());"); +trace(coerces_param_into_String(new CoercibleAsValue())); + +trace("//coerces_param_into_Object(undefined);"); +trace(coerces_param_into_Object(undefined)); + +trace("//coerces_param_into_Object(null);"); +trace(coerces_param_into_Object(null)); + +trace("//coerces_param_into_Object(true);"); +trace(coerces_param_into_Object(true)); + +trace("//coerces_param_into_Object(false);"); +trace(coerces_param_into_Object(false)); + +trace("//coerces_param_into_Object(5.12);"); +trace(coerces_param_into_Object(5.12)); + +trace("//coerces_param_into_Object(-6);"); +trace(coerces_param_into_Object(-6)); + +trace("//coerces_param_into_Object(\"12.23\");"); +trace(coerces_param_into_Object("12.23")); + +trace("//coerces_param_into_Object(new CoercibleAsString());"); +trace(coerces_param_into_Object(new CoercibleAsString())); + +trace("//coerces_param_into_Object(new CoercibleAsValue());"); +trace(coerces_param_into_Object(new CoercibleAsValue())); \ No newline at end of file diff --git a/tests/tests/swfs/avm2/function_call_coercion/output.txt b/tests/tests/swfs/avm2/function_call_coercion/output.txt new file mode 100644 index 000000000..03d892a79 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_coercion/output.txt @@ -0,0 +1,108 @@ +//coerces_param_into_int(undefined); +0 +//coerces_param_into_int(null); +0 +//coerces_param_into_int(true); +1 +//coerces_param_into_int(false); +0 +//coerces_param_into_int(5.12); +5 +//coerces_param_into_int(-6); +-6 +//coerces_param_into_int("12.23"); +12 +//coerces_param_into_int(new CoercibleAsString()); +-99 +//coerces_param_into_int(new CoercibleAsValue()); +23 +//coerces_param_into_uint(undefined); +0 +//coerces_param_into_uint(null); +0 +//coerces_param_into_uint(true); +1 +//coerces_param_into_uint(false); +0 +//coerces_param_into_uint(5.12); +5 +//coerces_param_into_uint(-6); +4294967290 +//coerces_param_into_uint("12.23"); +12 +//coerces_param_into_uint(new CoercibleAsString()); +4294967197 +//coerces_param_into_uint(new CoercibleAsValue()); +23 +//coerces_param_into_Number(undefined); +NaN +//coerces_param_into_Number(null); +0 +//coerces_param_into_Number(true); +1 +//coerces_param_into_Number(false); +0 +//coerces_param_into_Number(5.12); +5.12 +//coerces_param_into_Number(-6); +-6 +//coerces_param_into_Number("12.23"); +12.23 +//coerces_param_into_Number(new CoercibleAsString()); +-99.13 +//coerces_param_into_Number(new CoercibleAsValue()); +23.16 +//coerces_param_into_Boolean(undefined); +false +//coerces_param_into_Boolean(null); +false +//coerces_param_into_Boolean(true); +true +//coerces_param_into_Boolean(false); +false +//coerces_param_into_Boolean(5.12); +true +//coerces_param_into_Boolean(-6); +true +//coerces_param_into_Boolean("12.23"); +true +//coerces_param_into_Boolean(new CoercibleAsString()); +true +//coerces_param_into_Boolean(new CoercibleAsValue()); +true +//coerces_param_into_String(undefined); +null +//coerces_param_into_String(null); +null +//coerces_param_into_String(true); +true +//coerces_param_into_String(false); +false +//coerces_param_into_String(5.12); +5.12 +//coerces_param_into_String(-6); +-6 +//coerces_param_into_String("12.23"); +12.23 +//coerces_param_into_String(new CoercibleAsString()); +-99.13 +//coerces_param_into_String(new CoercibleAsValue()); +[object CoercibleAsValue] +//coerces_param_into_Object(undefined); +null +//coerces_param_into_Object(null); +null +//coerces_param_into_Object(true); +true +//coerces_param_into_Object(false); +false +//coerces_param_into_Object(5.12); +5.12 +//coerces_param_into_Object(-6); +-6 +//coerces_param_into_Object("12.23"); +12.23 +//coerces_param_into_Object(new CoercibleAsString()); +-99.13 +//coerces_param_into_Object(new CoercibleAsValue()); +[object CoercibleAsValue] diff --git a/tests/tests/swfs/avm2/function_call_coercion/test.fla b/tests/tests/swfs/avm2/function_call_coercion/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..831019f4149a339397daed304e18823bf851f330 GIT binary patch literal 3983 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/function_call_coercion/test.swf b/tests/tests/swfs/avm2/function_call_coercion/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..e389fbe3507688a3695a253b1388b8795451bc6f GIT binary patch literal 2364 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/function_call_default/Test.as b/tests/tests/swfs/avm2/function_call_default/Test.as new file mode 100644 index 000000000..cecccf312 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_default/Test.as @@ -0,0 +1,19 @@ +package { + public class Test {} +} + +function testfunc(v1, v2, v3 = "Default string") { + trace(v1); + trace(v2); + trace(v3); +} + +function testfunc2(v1 = "Default string 0", v2 = "Default string 1", v3 = "Default string 2") { + trace(v1); + trace(v2); + trace(v3); +} + +testfunc("arg1", "arg2"); + +testfunc2("arg_again_1"); \ No newline at end of file diff --git a/tests/tests/swfs/avm2/function_call_default/output.txt b/tests/tests/swfs/avm2/function_call_default/output.txt new file mode 100644 index 000000000..9f36652b8 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_default/output.txt @@ -0,0 +1,6 @@ +arg1 +arg2 +Default string +arg_again_1 +Default string 1 +Default string 2 diff --git a/tests/tests/swfs/avm2/function_call_default/test.fla b/tests/tests/swfs/avm2/function_call_default/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..e8422682499736c841d221c3be55563405f47944 GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/function_call_default/test.swf b/tests/tests/swfs/avm2/function_call_default/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..e18d07953d70ac8316ec78ca44d226235cbac55d GIT binary patch literal 788 zcmV+v1MB=lS5qq-1pokeoSjtLZrer>ompO%E9x4_vXaz|+bC^=7&hggNMS$Ji5w?x zn;M0KHV+~sR$5wYX<8*|rGD*GKB5o(ll+2`qTdnu3*1>#cAUUPfD+u9*|TS6XAhSA z9gHqO=`Vl=!e+$+fHpfhIe9P-aHD*9wb^QZ88-LsA3aXwkH3BUL-^CL;rF9^-stGN z6?i#k6CYu>FC)3w0(e>bQ&#{zWms13cI~N5(q%7c-u-GVrO-c&`m5zl>3fG^x|pPK z5bZ5G?*py(fz|3Ib&BtjKq$_NGPe|^>xbUj6EBFK2KzD$BDr#o`mwh!TX#Odx`^tk zthw{^FS4InXN>$sMuC82xI74wQRp3sCkNv|w!>gFcWFH{Ya#dcSk~FGtSvHWa1e=e z!PvOP#$@ldx7RxDgMsYChrS=mj$$M;n>_cEjyK+4?fA0--M$xw-9e_(`uc1yBaOYj z)V+AGrOc{Lrt9rdbKTa$S+mO*n_Zg;R`dpgEfwwd<6xBD{15WQSw2%mj%Ac4rH9IG zl0shEAIi9}nTeIjTG@_LNv);9SY}B5o%QxXlu~6Go4cbpNagzf*P=QWOVoYy&C7dDC-6LrRMky|&p-sJi%u7Ae$&xNM0 zI=;{tYN)I0e+n2c&^-MXfYY#MUJXGbm&FX3V8qvS%K(lBg2})Drc)&V(Jn+bHlYaaA;CwyZH?m zS`<}WbLpd{g&mVktFE>5@s@>u{PXHD2}B3VWt*6YIlDw9Z%j28zd^V?)d}Vr!S&O< z-NNxFQ*6S-H+Bka%4pT1F2$XRBSH00bb2MHS9W?8r+3Ba>GVFsh3pw>$6rhvl=5}; S8f1T{OYbgh(8|A)P-9--ZjIXj literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/function_call_types/Test.as b/tests/tests/swfs/avm2/function_call_types/Test.as new file mode 100644 index 000000000..8862e0a70 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_types/Test.as @@ -0,0 +1,11 @@ +package { + public class Test {} +} + +function testfunc(v1: int, v2: Boolean, v3: String) { + trace(v1); + trace(v2); + trace(v3); +} + +testfunc(5, true, "yes"); \ No newline at end of file diff --git a/tests/tests/swfs/avm2/function_call_types/output.txt b/tests/tests/swfs/avm2/function_call_types/output.txt new file mode 100644 index 000000000..a8cb08c69 --- /dev/null +++ b/tests/tests/swfs/avm2/function_call_types/output.txt @@ -0,0 +1,3 @@ +5 +true +yes diff --git a/tests/tests/swfs/avm2/function_call_types/test.fla b/tests/tests/swfs/avm2/function_call_types/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..e8422682499736c841d221c3be55563405f47944 GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/function_call_types/test.swf b/tests/tests/swfs/avm2/function_call_types/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..ee72631f1fb65bd74a7651a0a4fbe81cbaedf0b9 GIT binary patch literal 710 zcmV;%0y+IdS5qro1ONbdoSjl_PZL29p4r>Gz3a7<*Yctjlxkui?G<7o@Ij!6f)YLy zBOiL9=dovx9M|UVC@-Ikzr=sSUnm;C`5!310QYFonqW-a?9R+S`^@ajWKKZd14w@X z7(-YaPywJsuCK3GM*$}LkH&Mw+?kboe^Qv+T`z1N9~jQU+jlE(&YlH!9?nN}!AB_D z+~-q8fb-!WQVfXI5BXT-Kyv+vt=8)vw|u1>1+M>bXorVU-U@T`&le+MI!C^(#aJO0 zk7H=h@vOxy%k_8ML+-ggFZ@ECz&hl`nSZc)Q5uI;wm%$jJ5p~M$zDcE0AVe^?}iP} zI@Px7O_!HEw=r^OJf)LD;&&P9Z5isi5RqH=NwY|rbEG-Hvawhx)%STNIC311S7K(^ zmEo}yR;=dXT*c|S?b(*+?M0^z9xg3)gG-EM`8M9tky&itjMnMAhp(MN2hTE8-Bz^B9YtV9VGL|d#Ub6A~Fw@ zawBjfzVN?wSF{X{X&F6}8cUDr@<1jlAtD=QNEk{CDMO86f=Nk6`X@ftuR zp(Q#YWyFM@76B&Ol1VoyJZ)0}E0TaSH$RzuSNGePgO;Oi_mMUcuS_JO&9n>-@sDYv s+HX_`jOw6K9Wts+>|M-uR!zB@ZjT9<7ef=>#@#txuqHq)$ literal 0 HcmV?d00001