Files
jpexs-decompiler/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java
Jindra Petřík 04922aaf69 Separated FFDec core library and the rest (GUI).
FFDec Library is now LGPLv3, others stay GPLv3.
Version changed to 3.0.0 for FFDec, 1.0.0 for FFDec Library.
2014-08-24 17:55:42 +02:00

808 lines
25 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2010-2014 JPEXS, All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
*/
package com.jpexs.decompiler.flash;
import com.jpexs.decompiler.flash.action.Action;
import com.jpexs.decompiler.flash.configuration.Configuration;
//import com.jpexs.decompiler.flash.gui.Main;
import com.jpexs.decompiler.flash.helpers.CodeFormatting;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.tags.DoActionTag;
import com.jpexs.decompiler.flash.tags.ShowFrameTag;
import com.jpexs.decompiler.flash.tags.Tag;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.fail;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
*
* @author JPEXS
*/
public class ActionScript2Test extends ActionStript2TestBase {
@BeforeClass
public void init() throws IOException, InterruptedException {
//Main.initLogging(false);
Configuration.autoDeobfuscate.set(false);
Configuration.decompile.set(true);
Configuration.registerNameFormat.set("_loc%d_");
swf = new SWF(new BufferedInputStream(new FileInputStream("testdata/as2/as2.swf")), false);
}
private void compareSrc(int frame, String expectedResult) {
DoActionTag doa = getFrameSource(frame);
assertNotNull(doa);
HilightedTextWriter writer = new HilightedTextWriter(new CodeFormatting(), false);
try {
Action.actionsToSource(doa, doa.getActions(), "", writer);
} catch (InterruptedException ex) {
fail();
}
String actualResult = cleanPCode(writer.toString());
expectedResult = cleanPCode(expectedResult);
assertEquals(actualResult, expectedResult);
}
private DoActionTag getFrameSource(int frame) {
int f = 0;
DoActionTag lastDoa = null;
for (Tag t : swf.tags) {
if (t instanceof DoActionTag) {
lastDoa = (DoActionTag) t;
}
if (t instanceof ShowFrameTag) {
f++;
if (f == frame) {
return lastDoa;
}
lastDoa = null;
}
}
return null;
}
@Test
public void frame23_Test() {
compareSrc(23, "stop();\r\n"
);
}
@Test
public void frame24_unicodeTest() {
compareSrc(24, "trace(\"unicodeTest\");\r\n"
+ "var k = \"××פ×פ××<EFBFBD>מי, ×<>××<>\";\r\n"
+ "trace(k);\r\n"
);
}
@Test
public void frame25_ifWithElseTest() {
compareSrc(25, "trace(\"ifWithElseTest\");\r\n"
+ "var i = 5;\r\n"
+ "if(i == 258)\r\n"
+ "{\r\n"
+ "trace(\"onTrue\");\r\n"
+ "}\r\n"
+ "else\r\n"
+ "{\r\n"
+ "trace(\"onFalse\" + i);\r\n"
+ "}\r\n"
);
}
@Test
public void frame26_forTest() {
compareSrc(26, "trace(\"forTest\");\r\n"
+ "var i = 0;\r\n"
+ "while(i < 10)\r\n"
+ "{\r\n"
+ "trace(\"hello:\" + i);\r\n"
+ "i++;\r\n"
+ "}\r\n"
);
}
@Test
public void frame27_whileTest() {
compareSrc(27, "trace(\"whileTest\");\r\n"
+ "var i = 0;\r\n"
+ "while(i < 10)\r\n"
+ "{\r\n"
+ "trace(\"hello:\" + i);\r\n"
+ "i++;\r\n"
+ "}\r\n"
);
}
@Test
public void frame28_forWithContinueTest() {
compareSrc(28, "trace(\"forWithContinueTest\");\r\n"
+ "var i = 0;\r\n"
+ "for(;i < 10;i++)\r\n"
+ "{\r\n"
+ "trace(\"hello:\" + i);\r\n"
+ "if(i == 5)\r\n"
+ "{\r\n"
+ "trace(\"i==5\");\r\n"
+ "if(i == 7)\r\n"
+ "{\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "trace(\"hawk\");\r\n"
+ "}\r\n"
+ "trace(\"end of the loop\");\r\n"
+ "}\r\n"
);
}
@Test
public void frame29_doWhileTest() {
compareSrc(29, "trace(\"doWhileTest\");\r\n"
+ "var i = 0;\r\n"
+ "do\r\n"
+ "{\r\n"
+ "trace(\"i=\" + i);\r\n"
+ "i++;\r\n"
+ "}\r\n"
+ "while(i < 10);\r\n"
+ "trace(\"end\");\r\n"
);
}
@Test
public void frame30_switchTest() {
compareSrc(30, "trace(\"switchTest\");\r\n"
+ "var i = 5;\r\n"
+ "switch(i)\r\n"
+ "{\r\n"
+ "case 0:\r\n"
+ "case 1:\r\n"
+ "trace(\"one\");\r\n"
+ "break;\r\n"
+ "case 2:\r\n"
+ "trace(\"two\");\r\n"
+ "case 3:\r\n"
+ "trace(\"three\");\r\n"
+ "break;\r\n"
+ "case 4:\r\n"
+ "trace(\"four\");\r\n"
+ "break;\r\n"
+ "default:\r\n"
+ "trace(\"default clause\");\r\n"
+ "}\r\n"
+ "trace(\"scriptend\");\r\n"
);
}
@Test
public void frame31_strictEqualsTest() {
compareSrc(31, "trace(\"strictEqualsTest\");\r\n"
+ "var i = 5;\r\n"
+ "if(i === 5)\r\n"
+ "{\r\n"
+ "trace(\"equals strict\");\r\n"
+ "}\r\n"
+ "if(!(i === 5))\r\n"
+ "{\r\n"
+ "trace(\"not equals strict\");\r\n"
+ "}\r\n"
);
}
@Test
public void frame32_switchForTest() {
compareSrc(32, "trace(\"switchForTest\");\r\n"
+ "var i = 0;\r\n"
+ "for(;i < 10;i++)\r\n"
+ "{\r\n"
+ "switch(i)\r\n"
+ "{\r\n"
+ "case 0:\r\n"
+ "trace(\"zero\");\r\n"
+ "continue;\r\n"
+ "case 5:\r\n"
+ "trace(\"five\");\r\n"
+ "break;\r\n"
+ "case 10:\r\n"
+ "trace(\"ten\");\r\n"
+ "break;\r\n"
+ "case 1:\r\n"
+ "if(i == 7)\r\n"
+ "{\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "trace(\"one\");\r\n"
+ "default:\r\n"
+ "trace(\"def\");\r\n"
+ "}\r\n"
+ "trace(\"before loop end\");\r\n"
+ "}\r\n"
);
}
@Test
public void frame33_functionTest() {
compareSrc(33, "function hello(what, second)\r\n"
+ "{\r\n"
+ "trace(\"hello \" + what + \"! \" + second);\r\n"
+ "}\r\n"
+ "trace(\"functionTest\");\r\n"
+ "hello(\"friend\",7);\r\n"
);
}
@Test
public void frame34_multipleConditionsTest() {
compareSrc(34, "trace(\"multipleConditionsTest\");\r\n"
+ "var k = 5;\r\n"
+ "if(k == 7 && k == 8)\r\n"
+ "{\r\n"
+ "trace(\"first\");\r\n"
+ "}\r\n"
+ "if(k == 9)\r\n"
+ "{\r\n"
+ "trace(\"second\");\r\n"
+ "}\r\n"
+ "trace(\"finish\");\r\n"
);
}
@Test
public void frame35_multipleConditions2Test() {
compareSrc(35, "trace(\"multipleConditions2Test\");\r\n"
+ "var k = 5;\r\n"
+ "if(k == 7 && k == 8)\r\n"
+ "{\r\n"
+ "trace(\"first\");\r\n"
+ "}\r\n"
+ "if(k == 9 || k == 6)\r\n"
+ "{\r\n"
+ "trace(\"second\");\r\n"
+ "}\r\n"
+ "trace(\"finish\");\r\n"
);
}
@Test
public void frame36_chainedAssignmentsTest() {
compareSrc(36, "trace(\"chainedAssignmentsTest\");\r\n"
+ "var a = 7;\r\n"
+ "var b = 8;\r\n"
+ "var c = 9;\r\n"
+ "var d = c = b = a = 10;\r\n"
+ "trace(d);\r\n"
);
}
@Test
public void frame37_objectsTest() {
compareSrc(37, "trace(\"objectsTest\");\r\n"
+ "var flashBox = new Box(box1);\r\n"
+ "_root.onEnterFrame = function()\r\n"
+ "{\r\n"
+ "flashBox.moveUp();\r\n"
+ "};\r\n"
+ "var ship = new Ship(200);\r\n"
+ "var enemy = new Enemy(56);\r\n"
+ "ship.moveDown(0.5);\r\n"
+ "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"
);
}
@Test
public void frame38_doWhile2Test() {
compareSrc(38, "trace(\"doWhile2Test\");\r\n"
+ "var k = 5;\r\n"
+ "do\r\n"
+ "{\r\n"
+ "k++;\r\n"
+ "if(k == 7)\r\n"
+ "{\r\n"
+ "k = 5 * k;\r\n"
+ "}\r\n"
+ "else\r\n"
+ "{\r\n"
+ "k = 5 + k;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "while(k < 9);\r\n"
);
}
@Test
public void frame39_whileAndTest() {
compareSrc(39, "trace(\"whileAndTest\");\r\n"
+ "var a = 5;\r\n"
+ "var b = 10;\r\n"
+ "while(a < 10 && b > 1)\r\n"
+ "{\r\n"
+ "a++;\r\n"
+ "b--;\r\n"
+ "}\r\n"
+ "a = 7;\r\n"
+ "b = 9;\r\n"
);
}
@Test
public void frame40_forInTest() {
compareSrc(40, "function testForIn()\r\n"
+ "{\r\n"
+ "var _loc1_ = [];\r\n"
+ "for(var _loc2_ in _loc1_)\r\n"
+ "{\r\n"
+ "if(_loc2_ > 3)\r\n"
+ "{\r\n"
+ "if(_loc2_ == 5)\r\n"
+ "{\r\n"
+ "return 7;\r\n"
+ "}\r\n"
+ "return 8;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "}\r\n"
+ "trace(\"forInTest\");\r\n"
+ "trace(testForIn());\r\n"
+ "var arr = [];\r\n"
+ "for(var a in arr)\r\n"
+ "{\r\n"
+ "trace(a);\r\n"
+ "}\r\n"
);
}
@Test
public void frame41_tryTest() {
compareSrc(41, "trace(\"tryTest\");\r\n"
+ "var k = 5;\r\n"
+ "try\r\n"
+ "{\r\n"
+ "k = Infinity;\r\n"
+ "}\r\n"
+ "catch(e)\r\n"
+ "{\r\n"
+ "trace(\"bug \" + e);\r\n"
+ "}\r\n"
+ "finally\r\n"
+ "{\r\n"
+ "trace(\"huu\");\r\n"
+ "}\r\n"
+ "trace(\"next\");\r\n"
+ "try\r\n"
+ "{\r\n"
+ "k = 6;\r\n"
+ "}\r\n"
+ "catch(e)\r\n"
+ "{\r\n"
+ "trace(\"bug2 \" + e);\r\n"
+ "}\r\n"
+ "trace(\"next2\");\r\n"
+ "var k = 5;\r\n"
+ "try\r\n"
+ "{\r\n"
+ "k = Infinity;\r\n"
+ "}\r\n"
+ "finally\r\n"
+ "{\r\n"
+ "trace(\"final\");\r\n"
+ "}\r\n"
+ "trace(\"end\");\r\n"
);
}
@Test
public void frame42_indicesTest() {
compareSrc(42, "trace(\"indicesTest\");\r\n"
+ "var k = [1,2,3];\r\n"
+ "var b = k[1];\r\n"
+ "trace(b);\r\n"
);
}
@Test
public void frame43_incDecTest() {
compareSrc(43, "function tst()\r\n"
+ "{\r\n"
+ "return 1;\r\n"
+ "}\r\n"
+ "trace(\"incDecTest\");\r\n"
+ "var i = 5;\r\n"
+ "var b = i++;\r\n"
+ "var c = --i + 5;\r\n"
+ "trace(\"a:\" + a + \" b:\" + b + \" c:\" + c);\r\n"
+ "var arr = [1,2,3];\r\n"
+ "arr[tst()]++;\r\n"
+ "var d = arr[tst()];\r\n"
+ "trace(d);\r\n"
);
}
@Test
public void frame44_chainedAssignments2Test() {
compareSrc(44, "trace(\"chainedAssignments2Test\");\r\n"
+ "var a = 5;\r\n"
+ "var b = 6;\r\n"
+ "var c = 7;\r\n"
+ "var d = c = b = a = 4;\r\n"
+ "if((d = c = b = a = 7) > 2)\r\n"
+ "{\r\n"
+ "trace(d);\r\n"
+ "}\r\n"
+ "trace(d + 1);\r\n"
+ "var i = 0;\r\n"
+ "while(i < 5)\r\n"
+ "{\r\n"
+ "if(i == 7)\r\n"
+ "{\r\n"
+ "}\r\n"
+ "i++;\r\n"
+ "}\r\n"
);
}
@Test
public void frame45_function2Test() {
compareSrc(45, "function a()\r\n"
+ "{\r\n"
+ "trace(\"hi\");\r\n"
+ "var _loc1_ = 5;\r\n"
+ "if(_loc1_ == 7)\r\n"
+ "{\r\n"
+ "return undefined;\r\n"
+ "}\r\n"
+ "_loc1_ = _loc1_ * 9;\r\n"
+ "trace(_loc1_);\r\n"
+ "}\r\n"
+ "trace(\"function2Test\");\r\n"
);
}
@Test
public void frame46_tryFunctionTest() {
compareSrc(46, "function testtry()\r\n"
+ "{\r\n"
+ "var _loc1_ = 5;\r\n"
+ "try\r\n"
+ "{\r\n"
+ "if(_loc1_ == 3)\r\n"
+ "{\r\n"
+ "return undefined;\r\n"
+ "}\r\n"
+ "if(_loc1_ == 4)\r\n"
+ "{\r\n"
+ "throw new Error();\r\n"
+ "}\r\n"
+ "else\r\n"
+ "{\r\n"
+ "_loc1_ = 7;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "catch(e)\r\n"
+ "{\r\n"
+ "trace(\"error\");\r\n"
+ "}\r\n"
+ "finally\r\n"
+ "{\r\n"
+ "trace(\"finally\");\r\n"
+ "}\r\n"
+ "}\r\n"
+ "trace(\"tryFunctionTest\");\r\n"
);
}
@Test
public void frame47_ternarTest() {
compareSrc(47, "trace(\"ternarTest\");\r\n"
+ "var a = 5;\r\n"
+ "var b = a != 4?3:2;\r\n"
+ "trace(b);\r\n"
);
}
@Test
public void frame48_forInInTest() {
compareSrc(48, "function tst()\r\n"
+ "{\r\n"
+ "var _loc2_ = [];\r\n"
+ "_loc2_[0] = [];\r\n"
+ "for(var _loc3_ in _loc2_)\r\n"
+ "{\r\n"
+ "for(var _loc1_ in _loc3_)\r\n"
+ "{\r\n"
+ "if(_loc1_ == 5)\r\n"
+ "{\r\n"
+ "return 5;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "if(_loc3_ == 8)\r\n"
+ "{\r\n"
+ "return 3;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "return 8;\r\n"
+ "}\r\n"
+ "trace(\"forInInTest\");\r\n"
+ "tst();\r\n"
);
}
@Test
public void frame49_registersFuncTest() {
compareSrc(49, "function tst(px)\r\n"
+ "{\r\n"
+ "var _loc1_ = 57;\r\n"
+ "_loc1_ = _loc1_ * 27;\r\n"
+ "}\r\n"
+ "trace(\"registersFuncTest\");\r\n"
+ "tst(5);\r\n"
+ "var s = String(5);\r\n"
);
}
@Test
public void frame50_ifFrameLoadedTest() {
compareSrc(50, "trace(\"ifFrameLoadedTest\");\r\n"
+ "ifFrameLoaded(9)\r\n"
+ "{\r\n"
+ "trace(\"loaded\");\r\n"
+ "}\r\n"
);
}
@Test
public void frame51_function3Test() {
compareSrc(51, "function tst()\r\n"
+ "{\r\n"
+ "var _loc1_ = 5;\r\n"
+ "c = _loc1_ = 8;\r\n"
+ "trace(\"hi\");\r\n"
+ "trace(_loc1_);\r\n"
+ "if((e = d = f = c = 9) > 5)\r\n"
+ "{\r\n"
+ "trace(\"dd\");\r\n"
+ "}\r\n"
+ "}\r\n"
+ "trace(\"function3Test\");\r\n"
+ "var c = 7;\r\n"
+ "var d = 7;\r\n"
+ "var e = 8;\r\n"
+ "tst();\r\n"
);
}
@Test
public void frame52_commaOperatorTest() {
compareSrc(52, "trace(\"commaOperatorTest\");\r\n"
+ "var a = 0;\r\n"
+ "var b = 0;\r\n"
+ "var c = 0;\r\n"
+ "while(true)\r\n"
+ "{\r\n"
+ "a++;\r\n"
+ "b = b + 2;\r\n"
+ "if(c < 10)\r\n"
+ "{\r\n"
+ "trace(c);\r\n"
+ "c++;\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "break;\r\n"
+ "}\r\n"
+ "trace(\"konec\");\r\n"
);
}
@Test
public void frame53_commaOperator2Test() {
compareSrc(53, "trace(\"commaOperator2Test\");\r\n"
+ "var k = 8;\r\n"
+ "do\r\n"
+ "{\r\n"
+ "if(k == 9)\r\n"
+ "{\r\n"
+ "trace(\"h\");\r\n"
+ "if(k == 9)\r\n"
+ "{\r\n"
+ "trace(\"f\");\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "trace(\"b\");\r\n"
+ "}\r\n"
+ "trace(\"gg\");\r\n"
+ "}\r\n"
+ "while(k++, k < 10);\r\n"
+ "trace(\"ss\");\r\n"
);
}
@Test
public void frame54_function4Test() {
compareSrc(54, "function tst()\r\n"
+ "{\r\n"
+ "var _loc1_ = 5;\r\n"
+ "while(_loc1_ < 10)\r\n"
+ "{\r\n"
+ "if(_loc1_ == 5)\r\n"
+ "{\r\n"
+ "if(_loc1_ == 6)\r\n"
+ "{\r\n"
+ "return true;\r\n"
+ "}\r\n"
+ "_loc1_ = _loc1_ + 1;\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "return false;\r\n"
+ "}\r\n"
+ "}\r\n"
+ "trace(\"function4Test\");\r\n"
+ "tst();\r\n"
);
}
@Test
public void frame55_pushTest() {
compareSrc(55, "trace(\"pushTest\");\r\n"
);
}
@Test
public void frame56_commaOperator3Test() {
compareSrc(56, "trace(\"commaOperator3Test\");\r\n"
+ "var k = 1;\r\n"
+ "while(true)\r\n"
+ "{\r\n"
+ "k++;\r\n"
+ "if(k < 10)\r\n"
+ "{\r\n"
+ "k = k * 5;\r\n"
+ "trace(k);\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "break;\r\n"
+ "}\r\n"
+ "trace(\"end\");\r\n"
);
}
@Test
public void frame57_commaOperator4Test() {
compareSrc(57, "trace(\"commaOperator4Test\");\r\n"
+ "var k = 0;\r\n"
+ "do\r\n"
+ "{\r\n"
+ "trace(k);\r\n"
+ "if(k == 8)\r\n"
+ "{\r\n"
+ "trace(\"a\");\r\n"
+ "if(k == 9)\r\n"
+ "{\r\n"
+ "continue;\r\n"
+ "}\r\n"
+ "trace(\"d\");\r\n"
+ "trace(\"b\");\r\n"
+ "}\r\n"
+ "k++;\r\n"
+ "}\r\n"
+ "while(k = k + 5, k < 20);\r\n"
+ "trace(\"end\");\r\n"
);
}
@Test
public void frame58_globalFunctionsTest() {
compareSrc(58, "function tst(p1)\r\n"
+ "{\r\n"
+ "trace(\"test\");\r\n"
+ "}\r\n"
+ "trace(\"globalFunctionsTest\");\r\n"
+ "var k = Array(1,2,3);\r\n"
+ "var a = 1;\r\n"
+ "var b = Boolean(a);\r\n"
+ "call(5);\r\n"
+ "var c = \"A\";\r\n"
+ "clearInterval(5);\r\n"
+ "clearTimeout(4);\r\n"
+ "var mc;\r\n"
+ "duplicateMovieClip(mc,\"copy\",16389);\r\n"
+ "a = escape(\"how\");\r\n"
+ "var f = a;\r\n"
+ "fscommand(\"alert(\\\"hi\\\");\");\r\n"
+ "a = mc._alpha;\r\n"
+ "a = getTimer();\r\n"
+ "getURL(\"http://localhost/\",\"wnd\",\"POST\");\r\n"
+ "a = getVersion();\r\n"
+ "gotoAndPlay(5);\r\n"
+ "gotoAndStop(8);\r\n"
+ "ifFrameLoaded(4)\r\n"
+ "{\r\n"
+ "trace(\"loaded\");\r\n"
+ "}\r\n"
+ "a = int(f);\r\n"
+ "a = isFinite(f);\r\n"
+ "a = isNaN(f);\r\n"
+ "a = length(f);\r\n"
+ "loadMovie(\"http://localhost/test.swf\",a,\"GET\");\r\n"
+ "loadMovieNum(\"http://localhost/test.swf\",5,\"GET\");\r\n"
+ "loadVariables(\"http://localhost/vars.txt\",a,\"GET\");\r\n"
+ "loadVariablesNum(\"http://localhost/vars.txt\",4,\"GET\");\r\n"
+ "a = mbchr(f);\r\n"
+ "a = mblength(f);\r\n"
+ "a = mbord(f);\r\n"
+ "a = mbsubstring(\"aaaa\",5,4);\r\n"
+ "MMExecute(\"destroyPC\");\r\n"
+ "nextFrame();\r\n"
+ "gotoAndStop(1);\r\n"
+ "a = Number(f);\r\n"
+ "a = Object(f);\r\n"
+ "a = ord(f);\r\n"
+ "a = parseFloat(f);\r\n"
+ "a = parseInt(f,16);\r\n"
+ "play();\r\n"
+ "prevFrame();\r\n"
+ "gotoAndStop(1);\r\n"
+ "print(mc,\"bframe\");\r\n"
+ "printAsBitmap(mc,\"bframe\");\r\n"
+ "printAsBitmapNum(5,\"bframe\");\r\n"
+ "printNum(4,\"bframe\");\r\n"
+ "a = random(10);\r\n"
+ "removeMovieClip(mc);\r\n"
+ "setInterval(tst,5,f);\r\n"
+ "mc._alpha = 25;\r\n"
+ "setTimeout(tst,5,f);\r\n"
+ "showRedrawRegions(false,0);\r\n"
+ "startDrag(mc,1,5,5,6,6);\r\n"
+ "stop();\r\n"
+ "stopAllSounds();\r\n"
+ "stopDrag();\r\n"
+ "a = String(f);\r\n"
+ "a = \"aa\";\r\n"
+ "targetPath(f);\r\n"
+ "tellTarget(mc)\r\n"
+ "{\r\n"
+ "trace(\"told\");\r\n"
+ "}\r\n"
+ "toggleHighQuality();\r\n"
+ "a = unescape(f);\r\n"
+ "unloadMovie(mc);\r\n"
+ "unloadMovieNum(4);\r\n"
+ "updateAfterEvent();\r\n"
);
}
@Test
public void frame59_unaryOpTest() {
compareSrc(59, "trace(\"unaryOpTest\");\r\n"
+ "var a = 5;\r\n"
+ "var c = ~a;\r\n"
+ "var d = ~(a + c);\r\n"
+ "var e = - c;\r\n"
);
}
}