From 26a2b6e4f72f918ae463540bb72fd4df16a879d8 Mon Sep 17 00:00:00 2001 From: Moulins Date: Tue, 12 Jan 2021 15:32:56 +0100 Subject: [PATCH] core: Add test for `Object.registerClass` return values --- core/tests/regression_tests.rs | 1 + .../avm1/register_class_return_value/Test.as | 32 ++++++++++++++++++ .../register_class_return_value/output.txt | 16 +++++++++ .../avm1/register_class_return_value/test.swf | Bin 0 -> 442 bytes 4 files changed, 49 insertions(+) create mode 100644 core/tests/swfs/avm1/register_class_return_value/Test.as create mode 100644 core/tests/swfs/avm1/register_class_return_value/output.txt create mode 100644 core/tests/swfs/avm1/register_class_return_value/test.swf diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index 51a1be1c2..3d66826aa 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -163,6 +163,7 @@ swf_tests! { (escape, "avm1/escape", 1), (unescape, "avm1/unescape", 1), (register_class, "avm1/register_class", 1), + (register_class_return_value, "avm1/register_class_return_value", 1), (register_and_init_order, "avm1/register_and_init_order", 1), (on_construct, "avm1/on_construct", 1), (set_variable_scope, "avm1/set_variable_scope", 1), diff --git a/core/tests/swfs/avm1/register_class_return_value/Test.as b/core/tests/swfs/avm1/register_class_return_value/Test.as new file mode 100644 index 000000000..3b3047645 --- /dev/null +++ b/core/tests/swfs/avm1/register_class_return_value/Test.as @@ -0,0 +1,32 @@ +// Compile with: +// mtasc -main -header 200:150:30 Test.as -swf test.swf +class Test { + static function main(current) { + // Variables to bypass MTASC's type checker. + var number = 12; + var object = {}; + var string = "bar"; + + trace("// not enough args"); + trace(Object.registerClass()); + + trace("// too many args"); + trace(Object.registerClass("foo", null, "bar")); + + trace("// register a constructor"); + trace(Object.registerClass("foo", function() {})); + + trace("// unregister a constructor"); + trace(Object.registerClass("foo", null)); + + trace("// weird symbols names"); + trace(Object.registerClass(null, null)); + trace(Object.registerClass(number, null)); + trace(Object.registerClass(object, null)); + + trace("// wrong types"); + trace(Object.registerClass("foo", number)); + trace(Object.registerClass("foo", string)); + trace(Object.registerClass("foo", object)); + } +} \ No newline at end of file diff --git a/core/tests/swfs/avm1/register_class_return_value/output.txt b/core/tests/swfs/avm1/register_class_return_value/output.txt new file mode 100644 index 000000000..9b9e38b3f --- /dev/null +++ b/core/tests/swfs/avm1/register_class_return_value/output.txt @@ -0,0 +1,16 @@ +// not enough args +false +// too many args +true +// register a constructor +true +// unregister a constructor +true +// weird symbols names +true +true +true +// wrong types +false +false +false diff --git a/core/tests/swfs/avm1/register_class_return_value/test.swf b/core/tests/swfs/avm1/register_class_return_value/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..189c855ef148d3cbe50f7ac0eb08c9c7455c13b3 GIT binary patch literal 442 zcmV;r0Y&~pS5pV=0ssJb+H_K}Zrd;rJyDb;C$57S1%v`dz)3)s<_n6{H4q?!VSHgV062`)7_nLUt!!sN}KxS2~=DdcLR#w@~O2CpYB+R*n zlM^PDWkRZTb;G!>42$3x$!)-jNBt+kLAipV99cA86Z?gK9~#E9lzm!g*h zFDYEwWV2Q%nO+wDlNGLmJd(B3cq_SAH18tEXj~hRM7Bu#h1&zNGu0{Z5+Uz1NT=~G zknYg;