package org.dynjs.runtime; import static org.fest.assertions.Assertions.*; import org.junit.Test; public class ForExprStatementTest extends AbstractDynJSTestSupport { @Test public void testBasicLoop() { eval("var y=0;", "var i;", "for ( i = 0 ; i < 10; ++i ) {", " y = i;", "}"); Object i = getContext().resolve("i").getValue(getContext()); assertThat(i).isEqualTo(10L); Object y = getContext().resolve("y").getValue(getContext()); assertThat(y).isEqualTo(9L); } @Test public void testWithoutInitializer() { eval("var y=0;", "var i=0;", "for ( ; i < 10; ++i ) {", " y = i;", "}"); Object i = getContext().resolve("i").getValue(getContext()); assertThat(i).isEqualTo(10L); Object y = getContext().resolve("y").getValue(getContext()); assertThat(y).isEqualTo(9L); } @Test public void testLoopWithContinue() { eval("var y=0;", "var i;", "for ( i = 0; i < 10; ++i ) {", " if (i == 3) {", " continue;", " }", " y++;", "}"); Object i = getContext().resolve("i").getValue(getContext()); assertThat(i).isEqualTo(10L); Object y = getContext().resolve("y").getValue(getContext()); assertThat(y).isEqualTo(9L); } }