public void For() { // for (<initial>; <test>; <increment>) Assert.AreEqual(11, TestUtils.Evaluate("y = 1; for (x = 1; x < 5; x ++) { y = y + x } y")); Assert.AreEqual(100, TestUtils.Evaluate("for (;;) { y = 100; break; } y")); // for (var x = <initial>; <test>; <increment>) Assert.AreEqual(0, TestUtils.Evaluate("x = 0; for (var x; x < 5; x ++) { }")); Assert.AreEqual(11, TestUtils.Evaluate("y = 1; for (var x = 1; x < 5; x ++) { y = y + x } y")); Assert.AreEqual(11, TestUtils.Evaluate("for (var x = 1, y = 1; x < 5; x ++) { y = y + x } y")); Assert.AreEqual("SyntaxError", TestUtils.EvaluateExceptionType("for (var x + 1; x < 5; x ++) { }")); // Strict mode. Assert.AreEqual(45, TestUtils.Evaluate("'use strict'; var y = 0; for (var x = 0; x < 10; x ++) { y += x; } y")); TestUtils.Execute("'use strict'; var y = 0; for (var x = 0; x < 10; x ++) { y += x; }"); Assert.AreEqual(45, TestUtils.Evaluate("y")); }