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. = 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 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 = {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); } } }