diff --git a/tests/tests/regression_tests.rs b/tests/tests/regression_tests.rs index f4b9f7d89..9809d2937 100644 --- a/tests/tests/regression_tests.rs +++ b/tests/tests/regression_tests.rs @@ -479,6 +479,7 @@ swf_tests! { (as3_get_qualified_class_name, "avm2/get_qualified_class_name", 1), (as3_get_qualified_super_class_name, "avm2/get_qualified_super_class_name", 1), (as3_bytearray_readobject_amf3, "avm2/bytearray_readobject_amf3", 1), + (as3_bytearray_readobject_amf0, "avm2/bytearray_readobject_amf0", 1), (as3_array_constr, "avm2/array_constr", 1), (as3_array_access, "avm2/array_access", 1), (as3_array_storage, "avm2/array_storage", 1), diff --git a/tests/tests/swfs/avm2/bytearray_readobject_amf0/Test.as b/tests/tests/swfs/avm2/bytearray_readobject_amf0/Test.as new file mode 100644 index 000000000..b7f816e32 --- /dev/null +++ b/tests/tests/swfs/avm2/bytearray_readobject_amf0/Test.as @@ -0,0 +1,57 @@ +package +{ + import flash.utils.ByteArray; + public class Test + { + var TESTS = [ + [6], // UNDEFINED + [5], // NULL + [1,0], // FALSE + [1,1], // TRUE + [0,63,240,0,0,0,0,0,0], // INTEGER + [0,63,241,153,153,153,153,153,154], // NUMBER + [0,127,240,0,0,0,0,0,0], // INFINITY + [0,255,240,0,0,0,0,0,0], // NEG INFINITY + [0,255,248,0,0,0,0,0,0], // NAN + [2,0,4,116,101,115,116], // STRING + [8,0,0,0,2,0,1,48,0,63,240,0,0,0,0,0,0,0,1,49,0,64,0,0,0,0,0,0,0,0,0,9], // DENSE ARRAY + [8,0,0,0,9,0,1,48,0,63,240,0,0,0,0,0,0,0,1,49,0,64,0,0,0,0,0,0,0,0,1,56,0,64,8,0,0,0,0,0,0,0,0,9], // ARRAY WITH HOLES + [8,0,0,0,2,0,1,48,0,63,240,0,0,0,0,0,0,0,1,49,0,64,0,0,0,0,0,0,0,0,5,104,101,108,108,111,0,64,8,0,0,0,0,0,0,0,0,9], // ARRAY WITH ELEMENTS + [8,0,0,0,9,0,1,48,0,63,240,0,0,0,0,0,0,0,1,49,0,64,0,0,0,0,0,0,0,0,1,56,0,64,16,0,0,0,0,0,0,0,5,104,101,108,108,111,0,64,8,0,0,0,0,0,0,0,0,9], // ARRAY WITH HOLES AND ELEMENTS + [8,0,0,0,3,0,1,48,8,0,0,0,2,0,1,48,0,63,240,0,0,0,0,0,0,0,1,49,0,64,0,0,0,0,0,0,0,0,0,9,0,1,49,8,0,0,0,2,0,1,48,0,64,8,0,0,0,0,0,0,0,1,49,0,64,16,0,0,0,0,0,0,0,0,9,0,1,50,8,0,0,0,2,0,1,48,0,64,20,0,0,0,0,0,0,0,1,49,8,0,0,0,2,0,1,48,0,64,24,0,0,0,0,0,0,0,1,49,0,64,28,0,0,0,0,0,0,0,0,9,0,0,9,0,0,9], // MULTI DIMENSIONAL ARRAY + [3,0,4,116,101,115,116,2,0,5,104,101,108,108,111,0,0,9] // OBJECT + ]; + public function testToObject(arr) + { + var ba = new ByteArray(); + ba.objectEncoding = "AMF0"; + for (var i = 0; i < arr.length; i++) + { + ba.writeByte(arr[i]); + } + ba.position = 0; + return ba.readObject(); + } + public function Test() + { + for (var i = 0; i < TESTS.length; i++) + { + var obj = testToObject(TESTS[i]); + trace(obj); + if (obj is Object) + { + trace("showing props:"); + for (var prop in obj) + { + if (! (prop is int)) + { + trace(prop); + trace(obj[prop]) + } + } + trace("done showing props"); + } + } + } + } +} \ No newline at end of file diff --git a/tests/tests/swfs/avm2/bytearray_readobject_amf0/output.txt b/tests/tests/swfs/avm2/bytearray_readobject_amf0/output.txt new file mode 100644 index 000000000..51c17eab5 --- /dev/null +++ b/tests/tests/swfs/avm2/bytearray_readobject_amf0/output.txt @@ -0,0 +1,50 @@ +undefined +null +false +showing props: +done showing props +true +showing props: +done showing props +1 +showing props: +done showing props +1.1 +showing props: +done showing props +Infinity +showing props: +done showing props +-Infinity +showing props: +done showing props +NaN +showing props: +done showing props +test +showing props: +done showing props +1,2 +showing props: +done showing props +1,2,,,,,,,3 +showing props: +done showing props +1,2 +showing props: +hello +3 +done showing props +1,2,,,,,,,4 +showing props: +hello +3 +done showing props +1,2,3,4,5,6,7 +showing props: +done showing props +[object Object] +showing props: +test +hello +done showing props \ No newline at end of file diff --git a/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.fla b/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.fla new file mode 100644 index 000000000..1c5661fda Binary files /dev/null and b/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.fla differ diff --git a/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.swf b/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.swf new file mode 100644 index 000000000..c2c813500 Binary files /dev/null and b/tests/tests/swfs/avm2/bytearray_readobject_amf0/test.swf differ