diff --git a/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/Test.as b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/Test.as new file mode 100644 index 000000000..3782aee7f --- /dev/null +++ b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/Test.as @@ -0,0 +1,846 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package { +import flash.display.MovieClip; public class Test extends MovieClip {} +} + +import flash.net.IDynamicPropertyWriter; +import flash.net.IDynamicPropertyOutput; +import flash.utils.IExternalizable; +import flash.utils.IDataInput; +import flash.utils.IDataOutput; +import flash.utils.ByteArray; +import flash.utils.Dictionary; +import flash.net.*; +import flash.utils.ObjectEncoding; +import avmplus.File +import com.adobe.test.Assert; + +// var SECTION = "AMFSerialization"; +// var VERSION = "as3"; +// var TITLE = "test AMF Serialization"; + + +class CustomDynamicPropertyWriter implements IDynamicPropertyWriter { + + public function CustomDynamicPropertyWriter() { + // constructor code + } + + public function writeDynamicProperties(obj:Object, output:IDynamicPropertyOutput):void + { + for(var prop:* in obj) + { + if(prop != "notforserializing") { + output.writeDynamicProperty(prop, obj[prop]); + } + } + } + +} + +class SimpleIExternalizable implements IExternalizable { + + public var stringtest:String = "Sample"; + + public function writeExternal(output:IDataOutput):void { + output.writeObject("IExternalizable String"); + } + public function readExternal(input:IDataInput):void { + stringtest = input.readObject(); + } +} + +dynamic class UDefDynClassWithDynamicAttrs { + + public var obj_DynamicVar:Object; + public function UDefDynClassWithDynamicAttrs() { + // constructor code + obj_DynamicVar = new Object(); + } + +} + +class UserDefClassAllTypes { + + //Null + public var null_Obj; + //Boolean - True + public var bool_True_Obj:Boolean; + //Boolean - False + public var bool_False_Obj:Boolean; + //Integer - Positive + public var int_Positive_type:int; + //Unsigned Integer - Value + public var uint_Value_type:uint; + //Number - Positive Value + public var num_Positive_Obj:Number; + //Number - Min Value + public var num_Min_Obj:Number; + //String - title case + public var str_Title_Obj:String; + //Date - 18/07/2011 9:10:01:10 AM + public var dt_Fixed_Obj:Date; + //Array - Index : int Value: String + public var arr_IntStr_Obj:Array; + //Array - Index : Mixed Value: Mixed + public var arr_MixMix_Obj:Array; + //XML + public var xml_Obj:XML; + //Vector int typed + public var vct_int_Obj:Vector.; + //Vector object typed + public var obj_Test3:Object; + public var obj_Test4:Object; + public var vct_obj_Obj:Vector.; + public var dict_StrStr_Obj:Dictionary + //ByteArray - Empty + public var ba_Empty_Obj:ByteArray; + //ByteArray - String + public var ba_Str_Obj:ByteArray; + + + public function UserDefClassAllTypes() { + // constructor code + } + + public function Init():void { + //Null + null_Obj = null; + //Boolean - True + bool_True_Obj = true; + //Boolean - False + bool_False_Obj = false; + //Integer - Positive + int_Positive_type = 100; + //Unsigned Integer - Value + uint_Value_type = 2000; + //Number - Positive Value + num_Positive_Obj = new Number(100); + //Number - Min Value + num_Min_Obj = new Number(Number.MIN_VALUE); + //String - title case + str_Title_Obj = new String("A Quick Brown Fox Jumps Over A Lazy Dog"); + //Date - 18/07/2011 9:10:01:10 AM + dt_Fixed_Obj = new Date(2011,07,18,9,10,01,10); + //Array - Index : int Value: String + arr_IntStr_Obj = new Array("TEST1", "TEST2", "TEST3", "TEST4"); + //Array - Index : Mixed Value: Mixed + arr_MixMix_Obj = new Array(); + arr_MixMix_Obj["TEST1"] = 1; + arr_MixMix_Obj[2] = "Search Engine 2"; + arr_MixMix_Obj[3] = "Search Engine 3"; + arr_MixMix_Obj["TEST2"] = 4; + //XML + xml_Obj = XANDERxan007
#5, Salarpuria Infinity, Bannerghatta Road, Bangalore
; + //Vector int typed + vct_int_Obj = new [-1,100, 200, -200, 0, int.MIN_VALUE, int.MAX_VALUE]; + //Vector object typed + obj_Test3 = new Object(); + obj_Test3.value = "VALUE 1"; + obj_Test4 = new Object(); + obj_Test4.value = "VALUE 2"; + vct_obj_Obj = new [obj_Test3, obj_Test4] + //Vector object + dict_StrStr_Obj= new Dictionary(); + dict_StrStr_Obj["key1"] = "value1"; + dict_StrStr_Obj["key2"] = "value2"; + //ByteArray - String + ba_Str_Obj = new ByteArray(); + ba_Str_Obj.writeObject("BYTE ARRAY TEST"); + } + +} + +dynamic class UserDefinedDynamicClass { + + public var strPubString:String; + private var strPrivString:String; + protected var strProtString:String; + public const strPubConstString:String = new String("User Defined Dynamic Class Public Constant Variable"); + + + public function UserDefinedDynamicClass() { + strPubString = new String("User Defined Dynamic Class Public Variable"); + strPrivString = new String("User Defined Dynamic Class Private Variable"); + strProtString = new String("User Defined Dynamic Class Protected Variable"); + } + + public function getPrivString() + { + return strPrivString; + } + + public function getProtString() + { + return strProtString; + } + + public function setPrivString(str:String) + { + strPrivString = str; + } + + public function setProtString(str:String) + { + strProtString = str; + } +} + + +final class UserDefinedFinalClass { + + public var strPubString:String; + private var strPrivString:String; + protected var strProtString:String; + public const strPubConstString:String = new String("User Defined Final Class Public Constant Variable"); + + public function UserDefinedFinalClass() { + // constructor code + strPubString = new String("User Defined Final Class Public Variable"); + strPrivString = new String("User Defined Final Class Private Variable"); + strProtString = new String("User Defined Final Class Protected Variable"); + } + + public function getPrivString() + { + return strPrivString; + } + + public function getProtString() + { + return strProtString; + } + + public function setPrivString(str:String) + { + strPrivString = str; + } + + public function setProtString(str:String) + { + strProtString = str; + } + +} + +//Register User Defined Classes +flash.net.registerClassAlias("UserDefClassAllTypes", UserDefClassAllTypes); +flash.net.registerClassAlias("UserDefinedFinalClass", UserDefinedFinalClass); +flash.net.registerClassAlias("UserDefinedDynamicClass", UserDefinedDynamicClass); +flash.net.registerClassAlias("UDefDynClassWithDynamicAttrs", UDefDynClassWithDynamicAttrs); +flash.net.registerClassAlias("SimpleIExternalizable", SimpleIExternalizable); + +var userdef_Obj:UserDefClassAllTypes = new UserDefClassAllTypes(); +userdef_Obj.Init(); + +//Null +var null_Obj = null; +buildBAnCallAddTC("null test " , null_Obj); + +//Boolean - True +var bool_True_Obj:Boolean = true; +buildBAnCallAddTC("bool true " , bool_True_Obj); + +//Boolean - False +var bool_False_Obj:Boolean = false; +buildBAnCallAddTC("bool false " , bool_False_Obj); + +//Integer - Positive +var int_Positive_type:int = 1234567890; +buildBAnCallAddTC("int positive" , int_Positive_type); +//Integer - Negative +var int_Negative_type:int = -1234567890; +buildBAnCallAddTC("int negative" , int_Negative_type); +//Unsigned Integer - Value +var uint_Value_type:uint = 21234567890; +buildBAnCallAddTC("uint value" , uint_Value_type); + +//Number - Positive Value +var num_Positive_Obj:Number = new Number(1234567890); +buildBAnCallAddTC("Num Positive" , num_Positive_Obj); +//Number - Negative Value +var num_Negative_Obj:Number = new Number(-1234567890); +buildBAnCallAddTC("Num Negative" , num_Negative_Obj); + +//String - title case +var str_Title_Obj:String = new String("A Quick Brown Fox Jumps Over A Lazy Dog"); +buildBAnCallAddTC("String Mixed case characters" , str_Title_Obj); + +//Date - 18/07/2011 9:10:01:10 AM +var dt_Obj:Date = new Date(2011,07,18,9,10,01,10); +testDate("Date FIXED" , dt_Obj); + +//Array - Index : Mixed Value: Mixed (WithObject) +var arr_MixMixObj_Obj:Array = new Array(); +arr_MixMixObj_Obj["TRIANGLE"] = 1; +arr_MixMixObj_Obj[0] = "Shape 2"; +arr_MixMixObj_Obj[1] = "Shape 3"; +arr_MixMixObj_Obj["HEXAGON"] = 4; +arr_MixMixObj_Obj[2] = userdef_Obj; +arr_MixMixObj_Obj[2.222] = 5.555; +arr_MixMixObj_Obj[3.14] = "pi"; +testArrayTypes("Array Index:Mixed Value:Mixed" , arr_MixMixObj_Obj); + +//XML With Comment and CDATA +var xml_CmntCDATA_Obj:XML = SQUARE!!!!! +testXMLTypes("XML with Comments and CDATA", xml_CmntCDATA_Obj); + +//Vector int typed +var vct_int_Obj:Vector. = new [-1,100, 200, -200, 0, int.MIN_VALUE, int.MAX_VALUE]; +testVectorTypesInt("Typed Vector type: Int", vct_int_Obj); + +//Vector uint typed +var vct_uint_Obj:Vector. = new [100, 200, 0, uint.MIN_VALUE, uint.MAX_VALUE]; +testVectorTypesUInt("Typed Vector type: Uint", vct_uint_Obj); + +//Vector double typed +var vct_double_Obj:Vector. = new [-1, 100, 200, -200, 0, Number.MAX_VALUE, Number.MIN_VALUE, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY]; +testVectorTypesNumber("Typed Vector type: Double", vct_double_Obj); + +//Vector object typed +var obj_Test3:Object = new Object(); +obj_Test3.value = "VALUE 1"; +var obj_Test4:Object = new Object(); +obj_Test4.value = "VALUE 2"; +var vct_obj_Obj:Vector. = new [obj_Test3, obj_Test4, "Test Value", 11]; +testVectorTypesObject("Typed Vector type: Object", vct_obj_Obj); + +//Dictionary Key: String - Value: String +var dict_StrStr_Obj:Dictionary = new Dictionary(); +dict_StrStr_Obj["key1"] = "value1"; +dict_StrStr_Obj["key2"] = "value2"; +dict_StrStr_Obj[3] = "value3"; +dict_StrStr_Obj[4] = "value4"; +testDictionaryTypes("Dictionary Value: String", dict_StrStr_Obj); + +//ByteArray - String +var ba_Str_Obj:ByteArray = new ByteArray(); +ba_Str_Obj.writeObject("BYTE ARRAY TEST"); +testByteArrayTypes(" Byte Array : String ", ba_Str_Obj); + +//User Defined Final Class +var udfc_Obj:UserDefinedFinalClass = new UserDefinedFinalClass(); +udfc_Obj.setPrivString("My private string"); +udfc_Obj.setProtString("My protected string"); +//Testing User Defined Final Class - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(udfc_Obj); +ba_TestObject.position = 0; +var udfc_Read_Obj:UserDefinedFinalClass = ba_TestObject.readObject(); +Assert.expectEq("User Defined Final Class - Const ", udfc_Obj.strPubConstString, udfc_Read_Obj.strPubConstString); +Assert.expectEq("User Defined Final Class - Public String ", udfc_Obj.strPubString, udfc_Read_Obj.strPubString); +Assert.expectEq("User Defined Final Class - Private String", "User Defined Final Class Private Variable", udfc_Read_Obj.getPrivString()); +Assert.expectEq("User Defined Final Class - Protected String", "User Defined Final Class Protected Variable", udfc_Read_Obj.getProtString()); +//Testing User Defined Final Class - Ends + +//User Defined Dynamic Class +var uddc_Obj:UserDefinedDynamicClass = new UserDefinedDynamicClass(); +uddc_Obj.setPrivString("My private string"); +uddc_Obj.setProtString("My protected string"); +//Testing User Defined Dynamic Class - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(uddc_Obj); +ba_TestObject.position = 0; +var uddc_Read_Obj:UserDefinedDynamicClass = ba_TestObject.readObject(); +Assert.expectEq("User Defined Dynamic Class - Const ", uddc_Obj.strPubConstString, uddc_Read_Obj.strPubConstString); +Assert.expectEq("User Defined Dynamic Class - Public String ", uddc_Obj.strPubString, uddc_Read_Obj.strPubString); +Assert.expectEq("User Defined Dynamic Class - Private String ", "User Defined Dynamic Class Private Variable", uddc_Read_Obj.getPrivString()); +Assert.expectEq("User Defined Dynamic Class - Protected String ", "User Defined Dynamic Class Protected Variable", uddc_Read_Obj.getProtString()); +//Testing User Defined Dynamic Class - Ends + +//User Defined Dynamic Class with Dynamic Member +uddc_Obj.testvalue = "TEST VALUE"; +//Testing User Defined Dynamic Class With Dynamic Member- Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(uddc_Obj); +ba_TestObject.position = 0; +uddc_Read_Obj = ba_TestObject.readObject(); +Assert.expectEq("User Defined Dynamic Class With Dynamic Member - Dynamic Member", uddc_Obj.testvalue, uddc_Read_Obj.testvalue); + +//User Defined Dynamic Class with Dynamic Members having Dynamic Members +var uddcwd_Obj:UDefDynClassWithDynamicAttrs = new UDefDynClassWithDynamicAttrs(); +uddcwd_Obj.obj_DynamicVar.testvalue = "TEST VALUE"; +//Testing User Defined Dynamic Class with Dynamic Members having Dynamic Members - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(uddcwd_Obj); +ba_TestObject.position = 0; +var uddcwd_Read_Obj:UDefDynClassWithDynamicAttrs = ba_TestObject.readObject(); +Assert.expectEq("User Defined Dynamic Class with Dynamic Members having Dynamic Members", uddcwd_Obj.obj_DynamicVar.testvalue, uddcwd_Read_Obj.obj_DynamicVar.testvalue); +//Testing User Defined Dynamic Class with Dynamic Members having Dynamic Members - Ends + +//Objects with Circular Reference +var obj_drcheck_Obj:Object = new Object(); +var obj_drcheck1_Obj:Object = new Object(); +obj_drcheck_Obj.refobject = obj_drcheck1_Obj; +obj_drcheck_Obj.othervalue = 5; +obj_drcheck1_Obj.refobject = obj_drcheck_Obj; +obj_drcheck1_Obj.othervalue = "TEST VALUE"; +//Testing Objects with Circular Reference - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(obj_drcheck_Obj); +ba_TestObject.writeObject(obj_drcheck1_Obj); +ba_TestObject.position = 0; +var obj_drcheck_Read_Obj:Object = ba_TestObject.readObject(); +var obj_drcheck1_Read_Obj:Object = ba_TestObject.readObject(); +Assert.expectEq("Object with Circular Reference A to B", obj_drcheck_Obj.refobject.othervalue, obj_drcheck_Read_Obj.refobject.othervalue); +Assert.expectEq("Object with Circular Reference B to A", obj_drcheck1_Obj.refobject.othervalue, obj_drcheck1_Read_Obj.refobject.othervalue); +//Testing Objects with Circular Reference - Ends + +//Object with dynamic properties +var obj_dyn_Obj:Object = new Object(); +var obj_level2_Obj:Object = new Object(); +obj_level2_Obj.testvalue = " TEST VALUE"; +obj_dyn_Obj.testvalue1="TEST VALUE 1"; +obj_dyn_Obj.testvalue2="TEST VALUE 2"; +obj_dyn_Obj.testvalue3= obj_level2_Obj; +obj_dyn_Obj.testvalue4="TEST VALUE 3"; +//Testing Objects with Dynamic Properties- Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(obj_dyn_Obj); +ba_TestObject.position = 0; +var obj_Read_dyn_Obj:Object = ba_TestObject.readObject(); +Assert.expectEq("Object with Dynamic Properties: Prop 1", obj_dyn_Obj.testvalue1, obj_Read_dyn_Obj.testvalue1); +Assert.expectEq("Object with Dynamic Properties : Prop 2", obj_dyn_Obj.testvalue2, obj_Read_dyn_Obj.testvalue2); +Assert.expectEq("Object with Dynamic Properties : Prop 3", obj_dyn_Obj.testvalue4, obj_Read_dyn_Obj.testvalue4); +Assert.expectEq("Object with Dynamic Properties : Prop 3 (1)", obj_dyn_Obj.testvalue3.testvalue, obj_Read_dyn_Obj.testvalue3.testvalue); +//Testing Objects with Dynamic Properties- Ends + +//Undefined Value +var obj_Undefined = undefined; +//Testing Undefined - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(obj_Undefined); +ba_TestObject.position = 0; +Assert.expectEq("Undefined", obj_Undefined, ba_TestObject.readObject()); +//Testing Undefined - Ends + +//Custom Dynamic Property Writer +ObjectEncoding.dynamicPropertyWriter = new CustomDynamicPropertyWriter(); +var obj_dyn_Custom_Obj:Object = new Object(); +obj_dyn_Custom_Obj.notforserializing = "Don't Serialize"; +obj_dyn_Custom_Obj.testvalue = "TEST VALUE"; +//Testing Custom Dynamic Property Writer - Starts +var ba_TestObject3:ByteArray = new ByteArray(); +ba_TestObject3.writeObject(obj_dyn_Custom_Obj); +ba_TestObject3.position = 0; +var obj_Read_dyn_Custom_Obj:Object= ba_TestObject3.readObject(); +Assert.expectEq("Custom Encoding: Prop notforserialzing", undefined, obj_Read_dyn_Custom_Obj.notforserializing); +Assert.expectEq("Custom Encoding: Prop testvalue", obj_dyn_Custom_Obj.testvalue, obj_Read_dyn_Custom_Obj.testvalue); +ObjectEncoding.dynamicPropertyWriter=null; +//Testing Custom Dynamic Property Writer - Ends + +//IExternalizable +var obj_sie:SimpleIExternalizable = new SimpleIExternalizable(); +//Testing IExternalizable - Starts +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(obj_sie); +ba_TestObject.position = 0; +var obj_sie1:SimpleIExternalizable = ba_TestObject.readObject(); +Assert.expectEq("IExternalizable", "IExternalizable String", obj_sie1.stringtest); +//Testing IExternalizable - Ends + +//Testing String Reference Tables +var arr_Rednt_Obj:Array = new Array("Adobe", "Adobe", "Test Adobe", "Test Adobe"); +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(arr_Rednt_Obj); +ba_TestObject.position = 0; +compareArrays("Array: Redundant Values" , arr_Rednt_Obj, ba_TestObject.readObject()); +var vct_Rednt:Vector. = new ["Adobe", "Adobe", "Test Adobe", "Test Adobe"]; +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(vct_Rednt); +ba_TestObject.position = 0; +compareVectorsObject("Vector: Redundant Values" , vct_Rednt, ba_TestObject.readObject()); +var dict_Rednt:Dictionary = new Dictionary(); +dict_Rednt["key1"] = "Adobe"; +dict_Rednt["key2"] = "Adobe"; +dict_Rednt["key3"] = "Adobe"; +dict_Rednt["Adobe"] = "key2"; +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(dict_Rednt); +ba_TestObject.position = 0; +compareDictionary("Dictionary: Redundant Values" , dict_Rednt, ba_TestObject.readObject()); +var obj_Rednt:Object = new Dictionary(); +obj_Rednt.testvalue = "TEST VALUE"; +obj_Rednt.testvalue1 = "TEST VALUE"; +obj_Rednt.testvalue2 = "TEST VALUE"; +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(obj_Rednt); +ba_TestObject.position = 0; +compareObjects("Objects: Redundant Values" , obj_Rednt, ba_TestObject.readObject()); +//Checking User Defined Object +ba_TestObject = new ByteArray(); +ba_TestObject.writeObject(userdef_Obj); +ba_TestObject.position = 0; +compareUserDefTypes("User Defined Class", userdef_Obj, ba_TestObject.readObject()); + + +function buildBAnCallAddTC(strTitle:String, input:*) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + Assert.expectEq(strTitle, input, ba_test_Obj.readObject()); +} + +function testNaN(strTitle:String, input:Number) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + + Assert.expectEq(strTitle, isNaN(input), isNaN(ba_test_Obj.readObject())); +} + +function testDate(strTitle:String, input:Date) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareDates(strTitle, input, ba_test_Obj.readObject()); +} + +function compareDates(strTitle:String, input:Date, actual:Date) +{ + Assert.expectEq(strTitle, input.getTime(), actual.getTime()); +} + +function testArrayTypes(strTitle:String, input:Array) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + var actual:Array = ba_test_Obj.readObject(); + compareArrays(strTitle, input, actual); +} + +function compareArrays(strTitle:String, input:Array, actual:Array) +{ + var propInput:Array = new Array(); + for (var p:* in input) { + propInput.push(p); + } + propInput = propInput.sort(); + + + var propActual:Array = new Array(); + for (var p1:* in input) { + propActual.push(p1); + } + propActual = propActual.sort(); + + + for each (var prop:* in propInput) + { + if(input[prop] is UserDefClassAllTypes && actual[prop] is UserDefClassAllTypes) + { + compareUserDefTypes(strTitle, input[prop], actual[prop]); + } + else + { + Assert.expectEq(strTitle + " value check EXP vs ACT: " + prop, input[prop], actual[prop]); + } + } + for each (var prop1:* in propActual) + { + if(input[prop1] is UserDefClassAllTypes && actual[prop1] is UserDefClassAllTypes) + { + compareUserDefTypes(strTitle, input[prop1], actual[prop1]); + } + else + { + Assert.expectEq(strTitle + " value check ACT vs EXP: " + prop1, actual[prop1], input[prop1]); + } + } +} + +function testXMLTypes(strTitle:String, input:XML) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareXMLS(strTitle, input, ba_test_Obj.readObject()); +} + +function compareXMLS(strTitle:String, input:XML, actual:XML) +{ + Assert.expectEq(strTitle, input.toString(), actual.toString()); +} + +function compareObjects(strTitle:String, input:Object, actual:Object) +{ + var propInput:Array = new Array(); + var propActual:Array = new Array(); + for (var p:* in input) + { + propInput.push(p); + } + + propInput = propInput.sort(); + + for (var p1:* in actual) + { + propActual.push(p1); + } + + propActual = propActual.sort(); + + for each (var prop:* in propInput) + { + Assert.expectEq(strTitle, input[prop], actual[prop]); + } + for each (var prop1:* in propActual) + { + Assert.expectEq(strTitle, actual[prop1], input[prop1]); + } + +} + +function testVectorTypesInt(strTitle:String, input:Vector.) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareVectorsInt(strTitle, input, ba_test_Obj.readObject()); +} + +function compareVectorsInt(strTitle:String, input:Vector., actual:Vector.) +{ + var inputlen:int = input.length; + var actuallen:int = actual.length; + + Assert.expectEq(strTitle + " Vector Len ", inputlen, actuallen); + if(inputlen == actuallen) + { + for (var i:int; i < inputlen; i++) + { + Assert.expectEq(strTitle, input[i], actual[i]); + } + } +} + +function testVectorTypesUInt(strTitle:String, input:Vector.) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareVectorsUInt(strTitle, input, ba_test_Obj.readObject()); +} + +function compareVectorsUInt(strTitle:String, input:Vector., actual:Vector.) +{ + var inputlen:int = input.length; + var actuallen:int = actual.length; + + Assert.expectEq(strTitle + " Vector Len ", inputlen, actuallen); + if(inputlen == actuallen) + { + for (var i:int; i < inputlen; i++) + { + Assert.expectEq(strTitle, input[i], actual[i]); + + } + } +} + +function testVectorTypesNumber(strTitle:String, input:Vector.) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareVectorsNumber(strTitle, input, ba_test_Obj.readObject()); +} + +function compareVectorsNumber(strTitle:String, input:Vector., actual:Vector.) +{ + var inputlen:int = input.length; + var actuallen:int = actual.length; + + Assert.expectEq(strTitle + " Vector Len ", inputlen, actuallen); + if(inputlen == actuallen) + { + for (var i:int; i < inputlen; i++) + { + Assert.expectEq(strTitle, input[i], actual[i]); + } + } +} + +function testVectorTypesObject(strTitle:String, input:Vector.) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareVectorsObject(strTitle, input, ba_test_Obj.readObject()); +} + +function compareVectorsObject(strTitle:String, input:Vector., actual:Vector.) +{ + var inputlen:int = input.length; + var actuallen:int = actual.length; + + Assert.expectEq(strTitle + " Vector Len ", inputlen, actuallen); + if(inputlen == actuallen) + { + for (var i:int; i < inputlen; i++) + { + if (input[i] is String && actual[i] is String) + { + Assert.expectEq(strTitle, input[i], actual[i]); + } + else if (input[i] is int && actual[i] is int) + { + Assert.expectEq(strTitle, input[i], actual[i]); + } + else + { + compareObjects(strTitle, input[i], actual[i]); + } + + } + } +} + +function testVectorTypesUDef(strTitle:String, input:Vector.) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareVectorsUDef(strTitle, input, ba_test_Obj.readObject()); +} + +function compareVectorsUDef(strTitle:String, input:Vector., actual:Vector.) +{ + var inputlen:int = input.length; + var actuallen:int = actual.length; + Assert.expectEq(strTitle + " Vector Len ", inputlen, actuallen); + if(inputlen == actuallen) + { + for (var i:int; i < inputlen; i++) + { + compareUserDefTypes(strTitle, input[i], actual[i]); + } + } +} + + +function testByteArrayTypes(strTitle:String, input:ByteArray) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareByteArray(strTitle, input, ba_test_Obj.readObject()); +} + +function compareByteArray(strTitle:String, input:ByteArray, actual:ByteArray) +{ + input.position = 0; + actual.position = 0; + Assert.expectEq(strTitle, input.readObject(), actual.readObject()); +} + +function testDictionaryTypes(strTitle:String, input:Dictionary) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareDictionary(strTitle, input, ba_test_Obj.readObject()); +} + +function compareDictionary(strTitle:String, input:Dictionary, actual:Dictionary) +{ + + var propInput:Array = new Array(); + for (var p:* in input) + { + propInput.push(p); + } + + propInput = propInput.sort(); + + for each (var prop:* in propInput) + { + if ( input[prop] is UserDefClassAllTypes) + { + compareUserDefTypes(strTitle + " User Defined ", input[prop], actual[prop]); + } + else if (input [prop] is Array) + { + compareArrays(strTitle + " Array ", input[prop], actual[prop]); + } + else if (input[prop] is Vector.) + { + compareVectorsNumber(strTitle + " Vector ", input[prop], actual[prop]); + } + else if (input[prop] is XML) + { + compareXMLS(strTitle + " XML ", input[prop], actual[prop]); + } + else if (input[prop] is Date) + { + compareDates(strTitle + " Dates ", input[prop], actual[prop]); + } + else if (input[prop] is Boolean) + { + Assert.expectEq(strTitle + " Boolean ", input[prop], actual[prop]); + } + else if (input[prop] is String) + { + Assert.expectEq(strTitle + " String ", input[prop], actual[prop]); + } + else if (input[prop] is int) + { + Assert.expectEq(strTitle + " int ", input[prop], actual[prop]); + } + else if (input[prop] is uint) + { + Assert.expectEq(strTitle + " uint ", input[prop], actual[prop]); + } + else if (input[prop] is Number) + { + Assert.expectEq(strTitle + " Number ", input[prop], actual[prop]); + } + else if (input[prop] is ByteArray) + { + compareByteArray(strTitle + " Byte Array ", input[prop], actual[prop]); + } + else + { + Assert.expectEq(strTitle + " Object ", input[prop], actual[prop]); + } + } +} + + +function testUserDefTypes(strTitle:String, input:UserDefClassAllTypes) +{ + var ba_test_Obj:ByteArray = new ByteArray(); + ba_test_Obj.writeObject(input); + ba_test_Obj.position = 0; + compareUserDefTypes(strTitle, input, ba_test_Obj.readObject()); +} + +function compareUserDefTypes(strTitle:String, input:UserDefClassAllTypes, actual:UserDefClassAllTypes) +{ + Assert.expectEq(strTitle + " User Defined null ", input.null_Obj, actual.null_Obj); + Assert.expectEq(strTitle + " User Defined boolean True ", input.bool_True_Obj, actual.bool_True_Obj); + Assert.expectEq(strTitle + " User Defined boolean False " , input.bool_False_Obj, actual.bool_False_Obj); + Assert.expectEq(strTitle + " User Defined int" , input.int_Positive_type, actual.int_Positive_type); + Assert.expectEq(strTitle + " User Defined uint" , input.uint_Value_type, actual.uint_Value_type); + Assert.expectEq(strTitle + " User Defined Number min" , input.num_Min_Obj, actual.num_Min_Obj); + Assert.expectEq(strTitle + " User Defined Number Positive" , input.num_Positive_Obj, actual.num_Positive_Obj); + Assert.expectEq(strTitle + " User Defined Number Positive" , input.num_Positive_Obj, actual.num_Positive_Obj); + Assert.expectEq(strTitle + " User Defined String " , input.str_Title_Obj, actual.str_Title_Obj); + compareDates(strTitle + " User Defined Date " , input.dt_Fixed_Obj, actual.dt_Fixed_Obj); + compareArrays(strTitle + " User Defined Array Index:Int Value:String", input.arr_IntStr_Obj, actual.arr_IntStr_Obj); + compareArrays(strTitle + " User Defined Array Index:Mixed Value:Mixed", input.arr_MixMix_Obj, actual.arr_MixMix_Obj); + compareObjects(strTitle + " User Defined Object " , input.obj_Test3, actual.obj_Test3); + compareObjects(strTitle + " User Defined Object " , input.obj_Test4, actual.obj_Test4); + compareVectorsInt(strTitle + " User Defined Vector ", input.vct_int_Obj, actual.vct_int_Obj); + compareDictionary(strTitle + " User Defined Dictionary", input.dict_StrStr_Obj, actual.dict_StrStr_Obj); + compareByteArray(strTitle + " User Defined ByteArray (String)", input.ba_Str_Obj, actual.ba_Str_Obj); +} + + diff --git a/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/config.xml b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/config.xml new file mode 100644 index 000000000..18d27f9ba --- /dev/null +++ b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/config.xml @@ -0,0 +1,13 @@ + + + + . + ../../../lib + + false + false + false + false + + test.swf + \ No newline at end of file diff --git a/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/output.txt b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/output.txt new file mode 100644 index 000000000..5b347de22 --- /dev/null +++ b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/output.txt @@ -0,0 +1,225 @@ +null test PASSED! +bool true PASSED! +bool false PASSED! +int positive PASSED! +int negative PASSED! +uint value PASSED! +Num Positive PASSED! +Num Negative PASSED! +String Mixed case characters PASSED! +Date FIXED PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: 0 PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined null PASSED! +Array Index:Mixed Value:Mixed User Defined boolean True PASSED! +Array Index:Mixed Value:Mixed User Defined boolean False PASSED! +Array Index:Mixed Value:Mixed User Defined int PASSED! +Array Index:Mixed Value:Mixed User Defined uint PASSED! +Array Index:Mixed Value:Mixed User Defined Number min PASSED! +Array Index:Mixed Value:Mixed User Defined Number Positive PASSED! +Array Index:Mixed Value:Mixed User Defined Number Positive PASSED! +Array Index:Mixed Value:Mixed User Defined String PASSED! +Array Index:Mixed Value:Mixed User Defined Date PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 0 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 0 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST2 PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Vector Vector Len PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Dictionary String PASSED! +Array Index:Mixed Value:Mixed User Defined Dictionary String PASSED! +Array Index:Mixed Value:Mixed User Defined ByteArray (String) PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: 2.222 PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: 3.14 PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: HEXAGON PASSED! +Array Index:Mixed Value:Mixed value check EXP vs ACT: TRIANGLE PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: 0 PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined null PASSED! +Array Index:Mixed Value:Mixed User Defined boolean True PASSED! +Array Index:Mixed Value:Mixed User Defined boolean False PASSED! +Array Index:Mixed Value:Mixed User Defined int PASSED! +Array Index:Mixed Value:Mixed User Defined uint PASSED! +Array Index:Mixed Value:Mixed User Defined Number min PASSED! +Array Index:Mixed Value:Mixed User Defined Number Positive PASSED! +Array Index:Mixed Value:Mixed User Defined Number Positive PASSED! +Array Index:Mixed Value:Mixed User Defined String PASSED! +Array Index:Mixed Value:Mixed User Defined Date PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 0 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check EXP vs ACT: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 0 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Int Value:String value check ACT vs EXP: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 2 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 3 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST1 PASSED! +Array Index:Mixed Value:Mixed User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST2 PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Object PASSED! +Array Index:Mixed Value:Mixed User Defined Vector Vector Len PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Vector PASSED! +Array Index:Mixed Value:Mixed User Defined Dictionary String PASSED! +Array Index:Mixed Value:Mixed User Defined Dictionary String PASSED! +Array Index:Mixed Value:Mixed User Defined ByteArray (String) PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: 2.222 PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: 3.14 PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: HEXAGON PASSED! +Array Index:Mixed Value:Mixed value check ACT vs EXP: TRIANGLE PASSED! +XML with Comments and CDATA PASSED! +Typed Vector type: Int Vector Len PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Int PASSED! +Typed Vector type: Uint Vector Len PASSED! +Typed Vector type: Uint PASSED! +Typed Vector type: Uint PASSED! +Typed Vector type: Uint PASSED! +Typed Vector type: Uint PASSED! +Typed Vector type: Uint PASSED! +Typed Vector type: Double Vector Len PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Double PASSED! +Typed Vector type: Object Vector Len PASSED! +Typed Vector type: Object PASSED! +Typed Vector type: Object PASSED! +Typed Vector type: Object PASSED! +Typed Vector type: Object PASSED! +Typed Vector type: Object PASSED! +Typed Vector type: Object PASSED! +Dictionary Value: String String PASSED! +Dictionary Value: String String PASSED! +Dictionary Value: String String PASSED! +Dictionary Value: String String PASSED! + Byte Array : String PASSED! +User Defined Final Class - Const PASSED! +User Defined Final Class - Public String PASSED! +User Defined Final Class - Private String PASSED! +User Defined Final Class - Protected String PASSED! +User Defined Dynamic Class - Const PASSED! +User Defined Dynamic Class - Public String PASSED! +User Defined Dynamic Class - Private String PASSED! +User Defined Dynamic Class - Protected String PASSED! +User Defined Dynamic Class With Dynamic Member - Dynamic Member PASSED! +User Defined Dynamic Class with Dynamic Members having Dynamic Members PASSED! +Object with Circular Reference A to B PASSED! +Object with Circular Reference B to A PASSED! +Object with Dynamic Properties: Prop 1 PASSED! +Object with Dynamic Properties : Prop 2 PASSED! +Object with Dynamic Properties : Prop 3 PASSED! +Object with Dynamic Properties : Prop 3 (1) PASSED! +Undefined PASSED! +Custom Encoding: Prop notforserialzing PASSED! +Custom Encoding: Prop testvalue PASSED! +IExternalizable PASSED! +Array: Redundant Values value check EXP vs ACT: 0 PASSED! +Array: Redundant Values value check EXP vs ACT: 1 PASSED! +Array: Redundant Values value check EXP vs ACT: 2 PASSED! +Array: Redundant Values value check EXP vs ACT: 3 PASSED! +Array: Redundant Values value check ACT vs EXP: 0 PASSED! +Array: Redundant Values value check ACT vs EXP: 1 PASSED! +Array: Redundant Values value check ACT vs EXP: 2 PASSED! +Array: Redundant Values value check ACT vs EXP: 3 PASSED! +Vector: Redundant Values Vector Len PASSED! +Vector: Redundant Values PASSED! +Vector: Redundant Values PASSED! +Vector: Redundant Values PASSED! +Vector: Redundant Values PASSED! +Dictionary: Redundant Values String PASSED! +Dictionary: Redundant Values String PASSED! +Dictionary: Redundant Values String PASSED! +Dictionary: Redundant Values String PASSED! +Objects: Redundant Values PASSED! +Objects: Redundant Values PASSED! +Objects: Redundant Values PASSED! +Objects: Redundant Values PASSED! +Objects: Redundant Values PASSED! +Objects: Redundant Values PASSED! +User Defined Class User Defined null PASSED! +User Defined Class User Defined boolean True PASSED! +User Defined Class User Defined boolean False PASSED! +User Defined Class User Defined int PASSED! +User Defined Class User Defined uint PASSED! +User Defined Class User Defined Number min PASSED! +User Defined Class User Defined Number Positive PASSED! +User Defined Class User Defined Number Positive PASSED! +User Defined Class User Defined String PASSED! +User Defined Class User Defined Date PASSED! +User Defined Class User Defined Array Index:Int Value:String value check EXP vs ACT: 0 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check EXP vs ACT: 1 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check EXP vs ACT: 2 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check EXP vs ACT: 3 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check ACT vs EXP: 0 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check ACT vs EXP: 1 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check ACT vs EXP: 2 PASSED! +User Defined Class User Defined Array Index:Int Value:String value check ACT vs EXP: 3 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 2 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: 3 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST1 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check EXP vs ACT: TEST2 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 2 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: 3 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST1 PASSED! +User Defined Class User Defined Array Index:Mixed Value:Mixed value check ACT vs EXP: TEST2 PASSED! +User Defined Class User Defined Object PASSED! +User Defined Class User Defined Object PASSED! +User Defined Class User Defined Object PASSED! +User Defined Class User Defined Object PASSED! +User Defined Class User Defined Vector Vector Len PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Vector PASSED! +User Defined Class User Defined Dictionary String PASSED! +User Defined Class User Defined Dictionary String PASSED! +User Defined Class User Defined ByteArray (String) PASSED! diff --git a/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.swf b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.swf new file mode 100644 index 000000000..3b584f024 Binary files /dev/null and b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.swf differ diff --git a/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.toml b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.toml new file mode 100644 index 000000000..29f3cef79 --- /dev/null +++ b/tests/tests/swfs/from_avmplus/as3/AMF/AMFSerializer/test.toml @@ -0,0 +1,2 @@ +num_ticks = 1 +known_failure = true