package classes { import flash.utils.Dictionary; import classes.myInternal; import flash.errors.EOFError; import flash.events.Event; public class Test implements MyInterface2 { private var testPriv:int=5; protected var testProt:int=9; public var t3:TestClass3; public static const p:int=8; private namespace n="nazdar"; private var mc:MoreClass; public function testHello() { trace("hello"); } public function interfaceMethod(a:int):int { return a+1; } public function interface2Method(a:int,b:int):int { return a + b; } 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; a=5 * (25 % 3); a=5 % (24 * 307); a=1 / (2 / 3); a=1 / (2 * 3); a=1 * 2 * 3; a=1 * 2 / 3; 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"); } import classes.TestNs; } 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"); } trace("end"); } public function testTryShouldHaveCatchOrFinally() { try { trace("try body"); } finally { } } 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.=new Vector.(); 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 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); var c=myInternal::neco; } 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= {name} ; var k=myXML.@id; var all=myXML.@*.toXMLString(); k=myXML.book; k=myXML.book.(@isbn="12345"); var g:XML=new XML(""); } 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); } public function testWhileTry() { while (true) { try { while (true) { trace("a") } } catch (e:EOFError) { continue; } catch (e:Error) { continue; } } } public function testWhileTry2() { for (var i=0; i < 100; i++) { try { for (var j=0; j < 20; j++) { trace("a") } } catch (e:EOFError) { continue; } catch (e:Error) { continue; } trace("after_try"); } trace("end"); } public function testTryReturn():int { try { var i:int=0; var b:Boolean=true; if (i > 0) { while (testDoWhile2()) { if (b) { return 5; } } } i++; return 2; } catch (e:Error) { } finally { } return 4; } public function testOptionalParameters(p1:Event=null, p2:Number=1, p3:Number=-1, p4:Number=-1.1, p5:Number=-1.1, p6:String="a") { } public function testVector2() { var a:Vector.> = new Vector.>(); var b:Vector. = new [10, 20, 30]; } public function testFinallyOnly(){ var a = 5; try{ a = 9; trace("intry"); }finally { trace("infinally"); } } public function testCatchFinally(){ var a = 5; try{ a = 9; trace("intry"); }catch(e){ trace("incatch"); }finally { trace("infinally"); } } public function other(){ var n:TestNs = new TestNs(); } public function testRegExp() { var a1 = new RegExp("[a-z\r\n0-9\\\\]+","i"); var a2 = /[a-z\r\n0-9\\]+/i; var b1 = new RegExp("[0-9AB]+"); var b2 = /[0-9AB]+/; } public function testDefaultNotLast() { var k = 10; switch(k){ default: trace("def"); case 5: trace("def and 5"); break; case 4: trace("4"); break; } trace("after switch"); } public function testDefaultNotLastGrouped() { var k = 10; switch(k){ default: case "six": trace("def and 6"); case "five": trace("def and 6 and 5"); break; case "four": trace("4"); break; } trace("after switch"); } public function testManualConvert(){ trace("String(this).length"); trace(String(this).length); } public function testPrecedenceX(){ var a = 5; var b = 2; var c = 3; var d = a << (b >>> c); var e = a << b >>> c; } } }