aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-17 16:40:32 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-17 16:40:32 +0100
commit886358792f8b2bee4fb2a2e16b8f34162be50cfe (patch)
tree7b04edce31bc5019b65650c7c9c6597bbe51452d /src/test
parenteb006bb4f48d8e5a438bcff3047d275f4a18cf60 (diff)
Java: read expression statements
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java23
1 files changed, 20 insertions, 3 deletions
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 bee10b9..c9867be 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
@@ -5,7 +5,9 @@ import java.nio.file.Files;
import org.junit.Test;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.ExpressionNode;
+import org.zwobble.couscous.ast.ExpressionStatementNode;
import org.zwobble.couscous.ast.ReturnNode;
+import org.zwobble.couscous.ast.StatementNode;
import org.zwobble.couscous.ast.TernaryConditionalNode;
import org.zwobble.couscous.ast.ThisReferenceNode;
import org.zwobble.couscous.ast.TypeName;
@@ -159,6 +161,17 @@ public class JavaReaderTests {
literal("blah")),
returnNode.getValue());
}
+
+ @Test
+ public void canReadExpressionStatements() {
+ assertEquals(
+ new ExpressionStatementNode(
+ staticMethodCall(
+ TypeName.of("java.lang.Integer"),
+ "parseInt",
+ asList(literal("42")))),
+ readStatement("Integer.parseInt(\"42\");"));
+ }
private ExpressionNode readExpressionInInstanceMethod(String expressionSource) {
val javaClass =
@@ -172,14 +185,18 @@ public class JavaReaderTests {
}
private ExpressionNode readExpression(String expressionSource) {
+ val returnStatement = (ReturnNode) readStatement("return " + expressionSource + ";");
+ return returnStatement.getValue();
+ }
+
+ private StatementNode readStatement(String statementSource) {
val javaClass =
"public static Object main() {" +
- " return " + expressionSource + ";" +
+ statementSource +
"}";
val classNode = readClass(javaClass);
- val returnStatement = (ReturnNode) classNode.getMethods().get(0).getBody().get(0);
- return returnStatement.getValue();
+ return classNode.getMethods().get(0).getBody().get(0);
}
@SneakyThrows