diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2TestClasses.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ClassesTest.java similarity index 86% rename from libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2TestClasses.java rename to libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ClassesTest.java index 120eac591..329385913 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2TestClasses.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ClassesTest.java @@ -30,12 +30,17 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.fail; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.fail; /** * * @author JPEXS */ -public class ActionScript2TestClasses extends ActionScript2TestBase { +public class ActionScript2ClassesTest extends ActionScript2TestBase { + + private final String BASE_TEST_PACKAGE = "com.jpexs.flash.test.testcases"; @BeforeClass public void init() throws IOException, InterruptedException { @@ -47,8 +52,8 @@ public class ActionScript2TestClasses extends ActionScript2TestBase { swf = new SWF(new BufferedInputStream(new FileInputStream("testdata/as2/as2.swf")), false); } - private void compareSrc(String classFullName, String expectedResult) { - DoInitActionTag dia = getClassSource(classFullName); + private void compareSrc(String testClassName, String expectedClassContents) { + DoInitActionTag dia = getClassSource(BASE_TEST_PACKAGE + "." + testClassName); assertNotNull(dia); HighlightedTextWriter writer = new HighlightedTextWriter(new CodeFormatting(), false); try { @@ -57,7 +62,10 @@ public class ActionScript2TestClasses extends ActionScript2TestBase { fail(); } String actualResult = cleanPCode(writer.toString()); - expectedResult = cleanPCode(expectedResult); + String expectedResult = cleanPCode("class " + BASE_TEST_PACKAGE + "." + testClassName + "\r\n" + + "{\r\n" + + expectedClassContents + "\r\n" + + "}"); assertEquals(actualResult, expectedResult); } @@ -79,9 +87,7 @@ public class ActionScript2TestClasses extends ActionScript2TestBase { @Test public void testVarsMethods() { - compareSrc("com.jpexs.TestVarsMethods", "class com.jpexs.TestVarsMethods\r\n" - + "{\r\n" - + "var instVar = 1;\r\n" + compareSrc("TestVarsMethods", "var instVar = 1;\r\n" + "static var statVar = 2;\r\n" + "function TestVarsMethods()\r\n" + "{\r\n" @@ -95,14 +101,12 @@ public class ActionScript2TestClasses extends ActionScript2TestBase { + "{\r\n" + "trace(\"static method\");\r\n" + "}\r\n" - + "}"); + ); } @Test public void testMaintainOrder() { - compareSrc("com.jpexs.TestMaintainOrder", "class com.jpexs.TestMaintainOrder\r\n" - + "{\r\n" - + "var a = 1;\r\n" + compareSrc("TestMaintainOrder", "var a = 1;\r\n" + "static var b = 2;\r\n" + "var c = 3;\r\n" + "static var d = 4;\r\n" @@ -140,7 +144,6 @@ public class ActionScript2TestClasses extends ActionScript2TestBase { + "function _x2()\r\n" + "{\r\n" + "trace(\"after _x1\");\r\n" - + "}\r\n" - + "}"); + + "}\r\n"); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 8d5ddab89..b6d66c9c6 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -91,7 +91,7 @@ public class ActionScript2Test extends ActionScript2TestBase { @Test public void frame24_unicodeTest() { compareSrc(24, "trace(\"unicodeTest\");\r\n" - + "var k = \"\u05d4\u05d9\u05e4\u05d5\u05e4\u05d5\u05d8\u05de\u05d9, \u05d0\u05d5 \u05d0\";\r\n" + + "var k = \"היפופוטמי, או א\";\r\n" + "trace(k);\r\n" ); } @@ -309,13 +309,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "ship.moveUp(0.2);\r\n" + "enemy.moveRight(230);\r\n" + "enemy.moveLeft(100);\r\n" - + "var mt = new com.jpexs.MyTest();\r\n" - + "mt.test();\r\n" + "var c = new Cox(box1);\r\n" - + "var tg = new com.jpexs.TestSetterGetter();\r\n" - + "var tcg = new com.jpexs.TestCallSetterGetter();\r\n" - + "var tvm = new com.jpexs.TestVarsMethods();\r\n" - + "var tmo = new com.jpexs.TestMaintainOrder();\r\n" ); } @@ -672,7 +666,7 @@ public class ActionScript2Test extends ActionScript2TestBase { @Test public void frame55_pushTest() { compareSrc(55, "trace(\"pushTest\");\r\n" - + "53;" + + "53;\r\n" ); } @@ -810,6 +804,28 @@ public class ActionScript2Test extends ActionScript2TestBase { ); } + @Test + public void frame60_numbersTest() { + compareSrc(60, "trace(\"numbersTest\");\r\n" + + "var x = null;\r\n" + + "trace(\"null:\" + x);\r\n" + + "x = true;\r\n" + + "trace(\"true:\" + x);\r\n" + + "x = false;\r\n" + + "trace(\"false:\" + x);\r\n" + + "x = 1;\r\n" + + "trace(\"1:\" + x);\r\n" + + "x = 2147483647;\r\n" + + "trace(\"0x7fffffff:\" + x);\r\n" + + "x = 2147483648;\r\n" + + "trace(\"0x80000000:\" + x);\r\n" + + "x = -2147483648;\r\n" + + "trace(\"-0x80000000:\" + x);\r\n" + + "x = -2147483649;\r\n" + + "trace(\"-0x80000001:\" + x);\r\n" + ); + } + @Test public void frame61_switchDefaultTest() { compareSrc(61, "trace(\"switchDefaultTest\");\r\n" @@ -850,6 +866,7 @@ public class ActionScript2Test extends ActionScript2TestBase { ); } + @Test public void frame63_functionVariablesTest() { compareSrc(63, "function outfunc()\r\n" + "{\r\n" @@ -891,4 +908,12 @@ public class ActionScript2Test extends ActionScript2TestBase { + "trace(\"functionInnerParametersTest\");\r\n" ); } + + @Test + public void frame65_loadClassesTest() { + compareSrc(65, "trace(\"loadClassesTest\");\r\n" + + "var tst = new com.jpexs.flash.test.TestLoader();\r\n" + + "tst.includeTests();\r\n" + ); + } } diff --git a/libsrc/ffdec_lib/testdata/as2/as2.fla b/libsrc/ffdec_lib/testdata/as2/as2.fla index 0bfd24c0f..c0a1918ef 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.fla and b/libsrc/ffdec_lib/testdata/as2/as2.fla differ diff --git a/libsrc/ffdec_lib/testdata/as2/as2.swf b/libsrc/ffdec_lib/testdata/as2/as2.swf index 5e0c1dd7b..043554b4a 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.swf and b/libsrc/ffdec_lib/testdata/as2/as2.swf differ diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/MyTest.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/MyTest.as deleted file mode 100644 index 15b7784fd..000000000 --- a/libsrc/ffdec_lib/testdata/as2/com/jpexs/MyTest.as +++ /dev/null @@ -1,15 +0,0 @@ -class com.jpexs.MyTest { - private var i:Number=5; - static var k:Number=27; - - function test():Number - { - trace("hello"); - return 5; - } - static function testS():Number - { - trace("hi"); - return 88; - } -} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestCallSetterGetter.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestCallSetterGetter.as deleted file mode 100644 index 52c445c2c..000000000 --- a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestCallSetterGetter.as +++ /dev/null @@ -1,18 +0,0 @@ -class com.jpexs.TestCallSetterGetter { - public var myobj : com.jpexs.TestSetterGetter; - - public function testSetterCall(){ - this.myobj.myvar = 5; - } - public function testGetterCall() : Number { - return this.myobj.myvar; - } - - public function testStatGetterCall() : Number { - return com.jpexs.TestSetterGetter.mystatvar; - } - - public function testStatSetterCall(val:Number) { - com.jpexs.TestSetterGetter.mystatvar = 6; - } -} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/TestLoader.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/TestLoader.as new file mode 100644 index 000000000..3058fb789 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/TestLoader.as @@ -0,0 +1,12 @@ +/** + * Class for including other TestCases, it is called from frame 65 + */ +class com.jpexs.flash.test.TestLoader { + + public function includeTests() { + new com.jpexs.flash.test.testcases.TestSetterGetter(); + new com.jpexs.flash.test.testcases.TestCallSetterGetter(); + new com.jpexs.flash.test.testcases.TestVarsMethods(); + new com.jpexs.flash.test.testcases.TestMaintainOrder(); + } +} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestCallSetterGetter.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestCallSetterGetter.as new file mode 100644 index 000000000..4133f2785 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestCallSetterGetter.as @@ -0,0 +1,18 @@ +class com.jpexs.flash.test.testcases.TestCallSetterGetter { + public var myobj : com.jpexs.flash.test.testcases.TestSetterGetter; + + public function testSetterCall(){ + this.myobj.myvar = 5; + } + public function testGetterCall() : Number { + return this.myobj.myvar; + } + + public function testStatGetterCall() : Number { + return com.jpexs.flash.test.testcases.TestSetterGetter.mystatvar; + } + + public function testStatSetterCall(val:Number) { + com.jpexs.flash.test.testcases.TestSetterGetter.mystatvar = 6; + } +} \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestMaintainOrder.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestMaintainOrder.as similarity index 91% rename from libsrc/ffdec_lib/testdata/as2/com/jpexs/TestMaintainOrder.as rename to libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestMaintainOrder.as index 0f8e35b2a..10e984243 100644 --- a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestMaintainOrder.as +++ b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestMaintainOrder.as @@ -1,4 +1,4 @@ -class com.jpexs.TestMaintainOrder { +class com.jpexs.flash.test.testcases.TestMaintainOrder { public var a:Number = 1; public static var b:Number = 2; diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestSetterGetter.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestSetterGetter.as similarity index 91% rename from libsrc/ffdec_lib/testdata/as2/com/jpexs/TestSetterGetter.as rename to libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestSetterGetter.as index 53ad884a5..5dc85b1a9 100644 --- a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestSetterGetter.as +++ b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestSetterGetter.as @@ -1,4 +1,4 @@ -class com.jpexs.TestSetterGetter { +class com.jpexs.flash.test.testcases.TestSetterGetter { private var priv_myvar:Number; diff --git a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestVarsMethods.as b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestVarsMethods.as similarity index 83% rename from libsrc/ffdec_lib/testdata/as2/com/jpexs/TestVarsMethods.as rename to libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestVarsMethods.as index 9c3d6170e..0bbf5c438 100644 --- a/libsrc/ffdec_lib/testdata/as2/com/jpexs/TestVarsMethods.as +++ b/libsrc/ffdec_lib/testdata/as2/com/jpexs/flash/test/testcases/TestVarsMethods.as @@ -1,4 +1,4 @@ -class com.jpexs.TestVarsMethods { +class com.jpexs.flash.test.testcases.TestVarsMethods { public var instVar:Number = 1; public static var statVar:Number = 2;