Files
jpexs-decompiler/trunk/testdata/as3/classes/Test.as
Jindra Petøík b85b396b2a AS3: Tests
2013-02-28 22:16:22 +01:00

797 lines
16 KiB
ActionScript

package classes
{
import flash.utils.Dictionary;
import classes.myInternal;
public class Test
{
private var testPriv:int = 5;
protected var testProt:int = 9;
public var t3:TestClass3;
public static const p:int = 8;
public function testHello()
{
trace("hello");
}
public function testIncDec()
{
var a = 5;
var b = 0;
trace("++var");
b = ++a;
trace("var++");
b = a++;
trace("--var");
b = --a;
trace("var--");
b = a--;
var c = [1, 2, 3, 4, 5];
trace("++arr");
b = ++c[2];
trace("arr++");
b = c[2]++;
trace("--arr");
b = --c[2];
trace("arr--");
b = c[2]--;
var d = new TestClass1();
trace("++property");
trace(++d.attrib);
trace("property++");
trace(d.attrib++);
trace("--property");
trace(--d.attrib);
trace("property--");
trace(d.attrib--);
trace("arr[e++]");
var chars:Array = new Array(36);
var index:uint = 0;
chars[index++] = 5;
trace("arr[++e]");
chars[++index] = 5;
return;
}
public function testDoWhile()
{
var a = 8;
do
{
trace("a=" + a);
a++;
} while (a < 20);
return;
}
public function testInnerTry()
{
try
{
try
{
trace("try body 1");
}
catch (e:DefinitionError)
{
trace("catched DefinitionError");
}
trace("after try 1");
}
catch (e:Error)
{
trace("catched Error");
}
finally
{
trace("finally block");
}
}
public function testWhileContinue()
{
var a = 5;
while (true)
{
if (a == 9)
{
if (a == 8)
{
continue;
}
if (a == 9)
{
break;
}
trace("hello 1");
}
trace("hello2");
}
return;
}
public function testPrecedence()
{
var a = 0;
a = (5 + 6) * 7;
a = 5 * (2 + 3);
a = 5 + 6 * 7;
a = 5 * 2 + 2;
trace("a=" + a);
return;
}
public function testStrings()
{
trace("hello");
trace("quotes:\"hello!\"");
trace("backslash: \\ ");
trace("single quotes: \'hello!\'");
trace("new line \r\n hello!");
}
public function testContinueLevels()
{
var a = 5;
loop123: switch (a)
{
case 57 * a:
trace("fiftyseven multiply a");
var b = 0;
while (b < 50)
{
if (b == 10)
{
break;
}
if (b == 15)
{
break loop123;
}
b = b + 1;
}
break;
case 13:
trace("thirteen");
case 14:
trace("fourteen");
break;
case 89:
trace("eightynine");
break;
default:
trace("default clause");
}
loop182: for (var c = 0; c < 8; c = c + 1)
{
loop165: for (var d = 0; d < 25; d++)
{
for (var e = 0; e < 50; e++)
{
if (e == 9)
{
break loop165;
}
if (e == 20)
{
continue loop182;
}
if (e == 8)
{
break;
}
break loop182;
}
}
trace("hello");
}
}
public function testSwitchDefault()
{
var a = 5;
switch (a)
{
case 57 * a:
trace("fiftyseven multiply a");
break;
case 13:
trace("thirteen");
case 14:
trace("fourteen");
break;
case 89:
trace("eightynine");
break;
default:
trace("default clause");
}
}
public function testMultipleCondition()
{
var a = 5;
var b = 8;
var c = 9;
if ((a <= 4 || b <= 8) && c == 7)
{
trace("onTrue");
}
else
{
trace("onFalse");
}
}
public function testForBreak()
{
for (var a = 0; a < 10; a++)
{
if (a == 5)
{
break;
}
trace("hello:" + a);
}
}
public function testIf()
{
var a = 5;
if (a == 7)
{
trace("onTrue");
}
}
public function testIfElse()
{
var a = 5;
if (a == 7)
{
trace("onTrue");
}
else
{
trace("onFalse");
}
}
public function testFor()
{
for (var a = 0; a < 10; a++)
{
trace("a=" + a);
}
}
public function testForContinue()
{
for (var a = 0; a < 10; a = a + 1)
{
if (a == 9)
{
if (a == 5)
{
trace("part1");
continue;
}
trace("a=" + a);
if (a == 7)
{
trace("part2");
continue;
}
trace("part3");
}
else
{
trace("part4");
}
trace("part5");
}
}
public function testTry()
{
var i:int;
i = 7;
try
{
trace("try body");
}
catch (e:DefinitionError)
{
trace("catched DefinitionError");
}
catch (e:Error)
{
trace("Error message:" + e.message);
trace("Stacktrace:" + e.getStackTrace());
}
finally
{
trace("Finally part");
}
}
public function testSwitch()
{
var a = 5;
switch (a)
{
case 57 * a:
trace("fiftyseven multiply a");
break;
case 13:
trace("thirteen");
case 14:
trace("fourteen");
break;
case 89:
trace("eightynine");
break;
}
}
public function testTernarOperator()
{
var a = 5;
var b = 4;
var c = 4;
var d = 78;
var e = (a == b) ? ((c == d) ? 1 : 7) : 3;
trace("e=" + e);
}
public function testInnerIf()
{
var a = 5;
var b = 4;
if (a == 5)
{
if (b == 6)
{
trace("b==6");
}
else
{
trace("b!=6");
}
}
else
{
if (b == 7)
{
trace("b==7");
}
else
{
trace("b!=7");
}
}
trace("end");
}
public function testVector()
{
var v:Vector.<String> = new Vector.<String>();
v.push("hello");
v[0] = "hi";
v[5 * 8 - 39] = "hi2";
trace(v[0]);
}
public function testProperty()
{
var d = new TestClass1();
var k = 7 + 8;
if (k == 15)
{
d.method(d.attrib * 5);
}
}
public function testRest(firstp:int, ... restval):int
{
trace("firstRest:" + restval[0]);
return firstp;
}
public function testParamNames(firstp:int, secondp:int, thirdp:int):int
{
return firstp + secondp + thirdp;
}
public function testForEach()
{
var list:Array;
list = new Array();
list[0] = "first";
list[1] = "second";
list[2] = "third";
for each (var item in list)
{
trace("item #" + item);
}
}
public function testForEachObjectArray()
{
var list:Array;
list = new Array();
list[0] = "first";
list[1] = "second";
list[2] = "third";
var test:Array;
test = new Array();
test[0] = 0;
for each (test[0]in list)
{
trace("item #" + test[0]);
}
}
public function testForEachObjectAttribute()
{
var list:Array;
list = new Array();
list[0] = "first";
list[1] = "second";
list[2] = "third";
for each (testPriv in list)
{
trace("item #" + testPriv);
}
}
public function testParamsCount(firstp:int, secondp:int, thirdp:int):int
{
return firstp;
}
public function testInlineFunctions()
{
var first:String = "value1";
var traceParameter:Function = function(aParam:String):String
{
var second:String = "value2";
second = second + "cc";
var traceParam2:Function = function(bParam:String):String
{
trace(bParam + "," + aParam);
return first + second + aParam + bParam;
}
trace(second);
traceParam2(aParam);
return first;
};
traceParameter("hello");
}
public function testMissingDefault()
{
var jj:int = 1;
switch (jj)
{
case 1:
jj = 1;
break;
case 2:
jj = 2;
break;
default:
jj = 3;
}
}
private function traceIt(s:String)
{
trace(s);
}
private static var counter:int;
private function getCounter():int
{
counter++;
return counter;
}
public function testChainedAssignments()
{
var a:int;
var b:int;
var c:int;
var d:int;
d = c = b = a = 5;
var e:TestClass2 = TestClass2.createMe("test");
e.attrib1 = e.attrib2 = e.attrib3 = getCounter();
traceIt(e.toString());
}
private function testFinallyZeroJump(param1:String):String
{
var str:String = param1;
try
{
return str;
}
catch (e:Error)
{
trace("error is :" + e.message);
}
finally
{
trace("hi ");
if (5 == 4)
{
return str;
}
else
{
return "hu" + str;
}
}
}
public function testInnerFunctions(a:String)
{
var k:int = 5;
if (k == 6)
{
var s:int = 8;
}
function innerFunc(b:String)
{
trace(b);
}
innerFunc(a);
}
public function testDeclarations()
{
var vall:*;
var vstr:String;
var vint:int;
var vuint:uint;
var vclass:TestClass1;
var vnumber:Number;
var vobject:Object;
vall = 6;
vstr = "hello";
vuint = 7;
vint = -4;
vclass = new TestClass1();
vnumber = 0.5;
vnumber = 6;
vobject = vclass;
}
public function testForIn()
{
var dic:Dictionary;
var item:Object;
for (item in dic)
{
trace(item);
}
for each (item in dic)
{
trace(item);
}
}
myInternal function namespacedFunc()
{
trace("hello");
}
function unnamespacedFunc()
{
trace("hello2");
}
function getNamespace():Namespace
{
return null; //myInternal;
}
function getName():String
{
return "unnamespacedFunc";
}
function testNames()
{
var ns = getNamespace();
var name = getName();
//var a=ns::unnamespacedFunc();
//var b=ns::[name];
//trace(b.c);
}
function testComplexExpressions()
{
var i:int;
var j:int;
j = (i = i + (i += i++));
}
function testExpressions()
{
var i:int = 5;
var j:int = 5;
var arr:Array;
if ((i = i /= 2) == 1 || i == 2)
{
arguments.concat(i);
}
else if (i == 0)
{
i = j++;
}
else
{
arr[0]();
}
return i == 0;
}
public function testArguments(a:int):String
{
return arguments[0];
}
public function println(str:String):void
{
trace(arguments.callee == this.println);
trace(arguments.length);
trace(arguments[0]);
trace(str);
}
public function testLogicalComputing()
{
var i = 5;
var j = 7;
if (i > j)
{
j = 9;
var b:Boolean = true;
}
b = (i == 0 || i == 1) && j == 0;
}
private function getInt():int
{
return counter++;
}
public function testInc2()
{
var a = [1];
a[getInt()]++;
var d = a[getInt()]++;
var e = ++a[getInt()];
var b = 1;
b++;
var c = 1;
b = c++;
}
protected function testDecl2()
{
var i:int = 5;
i += 7;
if (i == 5)
{
if (i < 8)
{
var k:int = 6;
}
}
k = 7;
}
public function testChain2()
{
var g:Array;
var h:Boolean;
var r:int = 7;
var t:int = 0;
t = this.getInt();
var extraLine:Boolean;
if (t + 1 < g.length)
{
t++;
h = true;
}
if (t >= 0)
{
trace("ch");
}
}
public function textXML()
{
var name = "ahoj";
var myXML:XML =
<order id="604">
<book isbn="12345">
<title>{name}</title>
</book>
</order>;
var k = myXML.@id;
var all = myXML.@*.toXMLString();
k = myXML.book;
k = myXML.book.(@isbn = "12345");
var g:XML = new XML("<script>\n\t\t\t\t<![CDATA[\n\t\t\t\t\tfunction() {\n\t\t\t\n\t\t\t\t\t\tFBAS = {\n\t\t\t\n\t\t\t\t\t\t\tsetSWFObjectID: function( swfObjectID ) {\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tFBAS.swfObjectID = swfObjectID;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tinit: function( opts ) {\n\t\t\t\t\t\t\t\tFB.init( FB.JSON.parse( opts ) );\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tFB.Event.subscribe( \'auth.sessionChange\', function( response ) {\n\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( response.session );\n\t\t\t\t\t\t\t\t} );\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tsetCanvasAutoResize: function( autoSize, interval ) {\n\t\t\t\t\t\t\t\tFB.Canvas.setAutoResize( autoSize, interval );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tsetCanvasSize: function( width, height ) {\n\t\t\t\t\t\t\t\tFB.Canvas.setSize( { width: width, height: height } );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlogin: function( opts ) {\n\t\t\t\t\t\t\t\tFB.login( FBAS.handleUserLogin, FB.JSON.parse( opts ) );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\taddEventListener: function( event ) {\n\t\t\t\t\t\t\t\tFB.Event.subscribe( event, function( response ) {\n\t\t\t\t\t\t\t\t\tFBAS.getSwf().handleJsEvent( event, FB.JSON.stringify( response ) );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thandleUserLogin: function( response ) {\n\t\t\t\t\t\t\t\tif( response.session == null ) {\n\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( null );\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif( response.perms != null ) {\n\t\t\t\t\t\t\t\t\t// user is logged in and granted some permissions.\n\t\t\t\t\t\t\t\t\t// perms is a comma separated list of granted permissions\n\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( response.session, response.perms );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( response.session );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlogout: function() {\n\t\t\t\t\t\t\t\tFB.logout( FBAS.handleUserLogout );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thandleUserLogout: function( response ) {\n\t\t\t\t\t\t\t\tswf = FBAS.getSwf();\n\t\t\t\t\t\t\t\tswf.logout();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tui: function( params ) {\n\t\t\t\t\t\t\t\tobj = FB.JSON.parse( params );\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tmethod = obj.method;\n\t\t\t\t\t\t\t\tcb = function( response ) { FBAS.getSwf().uiResponse( FB.JSON.stringify( response ), method ); }\n\t\t\t\t\t\t\t\tFB.ui( obj, cb );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tgetSession: function() {\n\t\t\t\t\t\t\t\tsession = FB.getSession();\n\t\t\t\t\t\t\t\treturn FB.JSON.stringify( session );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tgetLoginStatus: function() {\n\t\t\t\t\t\t\t\tFB.getLoginStatus( function( response ) {\n\t\t\t\t\t\t\t\t\tif( response.session ) {\n\t\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( response.session );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tFBAS.updateSwfSession( null );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tgetSwf: function getSwf() {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\treturn document.getElementById( FBAS.swfObjectID );\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tupdateSwfSession: function( session, extendedPermissions ) {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tswf = FBAS.getSwf();\n\t\t\t\t\t\t\t\textendedPermissions = ( extendedPermissions == null ) ? \'\' : extendedPermissions;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif( session == null ) {\n\t\t\t\t\t\t\t\t\tswf.sessionChange( null );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tswf.sessionChange( FB.JSON.stringify( session ), FB.JSON.stringify( extendedPermissions.split( \',\' ) ) );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t]]>\n\t\t\t</script>");
}
public function testDoWhile2():int
{
var k:int = 5;
do
{
k++;
if (k == 7)
{
k = 5 * k;
}
else
{
k = 5 - k;
}
k--
} while (k < 9);
return 2;
}
public function testWhileAnd()
{
var a:int = 5;
var b:int = 10;
while ((a < 10) && (b > 1))
{
a++;
b--;
}
a = 7;
b = 9;
}
public function testNamedAnonFunctions()
{
var test=new function testFunc(param1:*, param2:int, param3:Array):Boolean
{
return (param1 as TestClass2).attrib1==5;
}
}
public function testStringConcat()
{
var k:int = 8;
traceIt("hello"+5*6);
traceIt("hello"+(k-1));
traceIt("hello"+5+6);
}
}
}