From 1d0c2b78b2a5d9acf998fe0caca7266e8857def6 Mon Sep 17 00:00:00 2001 From: EmperorBale Date: Mon, 12 Apr 2021 01:45:27 -0700 Subject: [PATCH] tests: Add test for AsTypeLate --- core/tests/swfs/avm2/astypelate/Test.as | 100 +++++++++++++++++++++ core/tests/swfs/avm2/astypelate/output.txt | 24 +++++ core/tests/swfs/avm2/astypelate/test.fla | Bin 0 -> 4956 bytes core/tests/swfs/avm2/astypelate/test.swf | Bin 0 -> 1854 bytes 4 files changed, 124 insertions(+) create mode 100644 core/tests/swfs/avm2/astypelate/Test.as create mode 100644 core/tests/swfs/avm2/astypelate/output.txt create mode 100644 core/tests/swfs/avm2/astypelate/test.fla create mode 100644 core/tests/swfs/avm2/astypelate/test.swf diff --git a/core/tests/swfs/avm2/astypelate/Test.as b/core/tests/swfs/avm2/astypelate/Test.as new file mode 100644 index 000000000..caf7c25c2 --- /dev/null +++ b/core/tests/swfs/avm2/astypelate/Test.as @@ -0,0 +1,100 @@ +package { + public class Test { + } +} + +interface ITest2 { + function method(); + function method2(); +} + +class Test2 implements ITest2 { + function Test2() { + } + + public function method() { + trace("Instance method"); + } + + public function method2() { + trace("Instance method 2"); + } +} + +interface ITest3 extends ITest2 { + function method3() +} + +class Test3 extends Test2 implements ITest3 { + function Test3() { + } + + public override function method() { + trace("Child instance method pre-super"); + super.method(); + trace("Child instance method post-super"); + } + + public function method3() { + trace("Child instance method3 pre-super"); + super.method(); + trace("Child instance method3 post-super"); + } +} + +class Test4 extends Test3 { + function Test4() { + } + + public override function method2() { + trace("Grandchild instance method2 pre-super"); + super.method2(); + trace("Grandchild instance method2 post-super"); + } + + public override function method3() { + trace("Grandchild instance method3 pre-super"); + super.method3(); + trace("Grandchild instance method3 post-super"); + } +} + +var x = new Test3(); + +trace("//x as Object"); +trace(x as Object); + +trace("//x as Test2"); +trace(x as Test2); + +trace("//x as ITest2"); +trace(x as ITest2); + +trace("//x as Test3"); +trace(x as Test3); + +trace("//x as ITest3"); +trace(x as ITest3); + +trace("//x as Test4"); +trace(x as Test4); + +var y = new Test4(); + +trace("//y as Object"); +trace(y as Object); + +trace("//y as Test2"); +trace(y as Test2); + +trace("//y as ITest2"); +trace(y as ITest2); + +trace("//y as Test3"); +trace(y as Test3); + +trace("//y as ITest3"); +trace(y as ITest3); + +trace("//y as Test4"); +trace(y as Test4); \ No newline at end of file diff --git a/core/tests/swfs/avm2/astypelate/output.txt b/core/tests/swfs/avm2/astypelate/output.txt new file mode 100644 index 000000000..8d665b868 --- /dev/null +++ b/core/tests/swfs/avm2/astypelate/output.txt @@ -0,0 +1,24 @@ +//x as Object +[object Test3] +//x as Test2 +[object Test3] +//x as ITest2 +[object Test3] +//x as Test3 +[object Test3] +//x as ITest3 +[object Test3] +//x as Test4 +null +//y as Object +[object Test4] +//y as Test2 +[object Test4] +//y as ITest2 +[object Test4] +//y as Test3 +[object Test4] +//y as ITest3 +[object Test4] +//y as Test4 +[object Test4] diff --git a/core/tests/swfs/avm2/astypelate/test.fla b/core/tests/swfs/avm2/astypelate/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..c6c90b19512823142738a5cab50dc72883ad2a67 GIT binary patch literal 4956 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 literal 0 HcmV?d00001