AS3 Operations test

This commit is contained in:
Jindra Petřík
2023-02-27 22:20:20 +01:00
parent cacff6fc03
commit c19d0d8e82
6 changed files with 199 additions and 0 deletions

View File

@@ -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 = <a>\r\n"
+ "<b>one\r\n"
+ "<c>\r\n"
+ "<b>two</b>\r\n"
+ "</c>\r\n"
+ "</b>\r\n"
+ "<b>three</b>\r\n"
+ "</a>;\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",

View File

@@ -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 = <a>\r\n"
+ "<b>one\r\n"
+ "<c>\r\n"
+ "<b>two</b>\r\n"
+ "</c>\r\n"
+ "</b>\r\n"
+ "<b>three</b>\r\n"
+ "</a>;\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",

View File

@@ -90,6 +90,7 @@ package
TestNames2;
TestNegate;
TestNumberCall;
TestOperations;
TestOptionalParameters;
TestParamNames;
TestParamsCount;

View File

@@ -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 = <a>
<b>one
<c>
<b>two</b>
</c>
</b>
<b>three</b>
</a>;
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 {
}