diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index b31c94b74..8c05867c6 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1471,6 +1471,67 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testOperations() { + decompileMethod("classic_air", "testOperations", "var cr:MyClass = null;\r\n" + + "var br:* = false;\r\n" + + "var r:Number = NaN;\r\n" + + "var xlr:XMLList = null;\r\n" + + "var c:MyClass = new MyClass();\r\n" + + "var d:Dictionary = new Dictionary();\r\n" + + "var n1:Number = 2;\r\n" + + "var n2:Number = 3;\r\n" + + "var b1:Boolean = true;\r\n" + + "var b2:Boolean = false;\r\n" + + "var x:XML = \r\n" + + "one\r\n" + + "\r\n" + + "two\r\n" + + "\r\n" + + "\r\n" + + "three\r\n" + + ";\r\n" + + "cr = c as MyClass;\r\n" + + "br = \"hello\" in d;\r\n" + + "r = b1 ? n1 : n2;\r\n" + + "r = n1 << n2;\r\n" + + "r = n1 >> n2;\r\n" + + "r = n1 >>> n2;\r\n" + + "r = n1 & n2;\r\n" + + "r = n1 | n2;\r\n" + + "r = n1 / n2;\r\n" + + "r = n1 % n2;\r\n" + + "br = n1 == n2;\r\n" + + "br = n1 === n2;\r\n" + + "br = n1 != n2;\r\n" + + "br = n1 !== n2;\r\n" + + "br = n1 < n2;\r\n" + + "br = n1 <= n2;\r\n" + + "br = n1 > n2;\r\n" + + "br = n1 >= n2;\r\n" + + "br = b1 && b2;\r\n" + + "br = b1 || b2;\r\n" + + "r = n1 - n2;\r\n" + + "r = n1 * n2;\r\n" + + "r = n1 + n2;\r\n" + + "r = n1 ^ n2;\r\n" + + "br = c instanceof MyClass;\r\n" + + "br = c is MyClass;\r\n" + + "xlr = x..b;\r\n" + + "r &= n1;\r\n" + + "r |= n1;\r\n" + + "r /= n1;\r\n" + + "r -= n1;\r\n" + + "r %= n1;\r\n" + + "r *= n1;\r\n" + + "r += n1;\r\n" + + "r <<= n1;\r\n" + + "r >>= n1;\r\n" + + "r >>>= n1;\r\n" + + "r ^= n1;\r\n", + false); + } + @Test public void testParamNames() { decompileMethod("classic_air", "testParamNames", "return firstp + secondp + thirdp;\r\n", diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 3283cc143..abef1bf30 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -1463,6 +1463,67 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testOperations() { + decompileMethod("classic", "testOperations", "var cr:MyClass = null;\r\n" + + "var br:Boolean = false;\r\n" + + "var r:Number = NaN;\r\n" + + "var xlr:XMLList = null;\r\n" + + "var c:MyClass = new MyClass();\r\n" + + "var d:Dictionary = new Dictionary();\r\n" + + "var n1:Number = 2;\r\n" + + "var n2:Number = 3;\r\n" + + "var b1:Boolean = true;\r\n" + + "var b2:Boolean = false;\r\n" + + "var x:XML = \r\n" + + "one\r\n" + + "\r\n" + + "two\r\n" + + "\r\n" + + "\r\n" + + "three\r\n" + + ";\r\n" + + "cr = c as MyClass;\r\n" + + "br = \"hello\" in d;\r\n" + + "r = b1 ? n1 : n2;\r\n" + + "r = n1 << n2;\r\n" + + "r = n1 >> n2;\r\n" + + "r = n1 >>> n2;\r\n" + + "r = n1 & n2;\r\n" + + "r = n1 | n2;\r\n" + + "r = n1 / n2;\r\n" + + "r = n1 % n2;\r\n" + + "br = n1 == n2;\r\n" + + "br = n1 === n2;\r\n" + + "br = n1 != n2;\r\n" + + "br = n1 !== n2;\r\n" + + "br = n1 < n2;\r\n" + + "br = n1 <= n2;\r\n" + + "br = n1 > n2;\r\n" + + "br = n1 >= n2;\r\n" + + "br = b1 && b2;\r\n" + + "br = b1 || b2;\r\n" + + "r = n1 - n2;\r\n" + + "r = n1 * n2;\r\n" + + "r = n1 + n2;\r\n" + + "r = n1 ^ n2;\r\n" + + "br = c instanceof MyClass;\r\n" + + "br = c is MyClass;\r\n" + + "xlr = x..b;\r\n" + + "r &= n1;\r\n" + + "r |= n1;\r\n" + + "r /= n1;\r\n" + + "r -= n1;\r\n" + + "r %= n1;\r\n" + + "r *= n1;\r\n" + + "r += n1;\r\n" + + "r <<= n1;\r\n" + + "r >>= n1;\r\n" + + "r >>>= n1;\r\n" + + "r ^= n1;\r\n", + false); + } + @Test public void testParamNames() { decompileMethod("classic", "testParamNames", "return firstp + secondp + thirdp;\r\n", diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 8aa5abebc..344b12d8f 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 3958f1885..05cecf0a4 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 3ad310fd9..7f07d26e3 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -90,6 +90,7 @@ package TestNames2; TestNegate; TestNumberCall; + TestOperations; TestOptionalParameters; TestParamNames; TestParamsCount; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as new file mode 100644 index 000000000..aea21cd07 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestOperations.as @@ -0,0 +1,76 @@ +package tests +{ + import flash.utils.Dictionary; + + public class TestOperations + { + public function run():* + { + var c:MyClass = new MyClass(); + var cr:MyClass; + var d:Dictionary = new Dictionary(); + var n1:Number = 2; + var n2:Number = 3; + var b1:Boolean = true; + var b2:Boolean = false; + var br:Boolean; + var r:Number; + var x:XML = + one + + two + + + three + ; + var xlr:XMLList; + + cr = c as MyClass; + br = "hello" in d; + + r = b1 ? n1 : n2; + r = n1 << n2; + r = n1 >> n2; + r = n1 >>> n2; + r = n1 & n2; + r = n1 | n2; + r = n1 / n2; + r = n1 % n2; + br = n1 == n2; + br = n1 === n2; + br = n1 != n2; + br = n1 !== n2; + br = n1 < n2; + br = n1 <= n2; + br = n1 > n2; + br = n1 >= n2; + br = b1 && b2; + br = b1 || b2; + r = n1 - n2; + r = n1 * n2; + r = n1 + n2; + r = n1 ^ n2; + br = c instanceof MyClass; + br = c is MyClass; + xlr = x..b; + + + r &= n1; + r |= n1; + r /= n1; + r -= n1; + r %= n1; + r *= n1; + r += n1; + r <<= n1; + r >>= n1; + r >>>= n1; + r ^= n1; + + + } + } +} + +class MyClass { +} \ No newline at end of file