aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-21 13:40:52 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-21 13:40:52 +0000
commitfa0e5ad5e621fb6a65ecc70a357bb20c14b0e796 (patch)
treeec94c60ec657174c3598c6421772fb73d998bbc2 /src/test/java/org/zwobble
parent9f294b76b8b7e5c7eb9bc0a3dff82ba083a4d783 (diff)
Support simple for-loops
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java11
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java16
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
index f17f42b..8c6c3b1 100644
--- a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
@@ -69,6 +69,17 @@ public class JavaToPythonTests {
"factorial",
asList(value(6))));
}
+
+ @Test
+ public void forFactorial() throws Exception {
+ assertEquals(
+ value(720),
+ execTestProgram(
+ "for-factorial",
+ TypeName.of("com.example.ForFactorial"),
+ "factorial",
+ asList(value(6))));
+ }
private PrimitiveValue execTestProgram(
String directoryName,
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
index ad8bcbb..9d21ed2 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
@@ -24,6 +24,7 @@ import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess;
import static org.zwobble.couscous.ast.FieldDeclarationNode.field;
import static org.zwobble.couscous.ast.IfStatementNode.ifStatement;
import static org.zwobble.couscous.ast.LiteralNode.literal;
+import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration;
import static org.zwobble.couscous.ast.MethodCallNode.*;
import static org.zwobble.couscous.ast.ReturnNode.returns;
import static org.zwobble.couscous.ast.StaticMethodCallNode.boxBoolean;
@@ -504,6 +505,21 @@ public class JavaReaderTests {
asList(returns(literal(1)))),
readStatement("int", "while (true) { return 1; }"));
}
+
+ @Test
+ public void canReadForLoops() {
+ List<StatementNode> statements = readStatements("int", "for (int x = 0; true; ++x) { return 1; }");
+ LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0);
+ assertEquals(
+ asList(
+ localVariableDeclaration(declaration.getDeclaration(), literal(0)),
+ whileLoop(
+ literal(true),
+ asList(
+ returns(literal(1)),
+ expressionStatement(assign(declaration, integerAdd(reference(declaration), literal(1))))))),
+ statements);
+ }
@Test
public void canDeclareConstructor() {