From ce1f94f4fe3d57bc4fc20f6a28297412a4e603f6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 14 Nov 2015 14:49:34 +0000 Subject: Support prefix expressions rather than postfix expressions --- .../tests/frontends/java/JavaReaderTests.java | 48 +++++++++++++++++----- 1 file changed, 37 insertions(+), 11 deletions(-) (limited to 'src/test/java/org/zwobble/couscous/tests/frontends') 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 7782fdc..af62c61 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 @@ -6,17 +6,7 @@ import java.util.Collections; import java.util.List; import org.junit.Test; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.ConstructorNode; -import org.zwobble.couscous.ast.ExpressionNode; -import org.zwobble.couscous.ast.FormalArgumentNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.ReturnNode; -import org.zwobble.couscous.ast.StatementNode; -import org.zwobble.couscous.ast.StaticMethodCallNode; -import org.zwobble.couscous.ast.ThisReferenceNode; -import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.ast.*; import org.zwobble.couscous.frontends.java.JavaReader; import org.zwobble.couscous.values.BooleanValue; import org.zwobble.couscous.values.IntegerValue; @@ -345,6 +335,42 @@ public class JavaReaderTests { ReturnNode returnNode = (ReturnNode)method.getBody().get(0); assertEquals(reference(argument), returnNode.getValue()); } + + @Test + public void canReadPrefixIncrement() { + ClassNode classNode = readClass( + "public void go(int value) {" + + " ++value;" + + "}"); + + MethodNode method = classNode.getMethods().get(0); + FormalArgumentNode argument = method.getArguments().get(0); + ExpressionStatementNode statement = (ExpressionStatementNode) + classNode.getMethods().get(0).getBody().get(0); + assertEquals( + assign( + reference(argument), + methodCall(reference(argument), "add", asList(literal(1)), IntegerValue.REF)), + statement.getExpression()); + } + + @Test + public void canReadPrefixDecrement() { + ClassNode classNode = readClass( + "public void go(int value) {" + + " --value;" + + "}"); + + MethodNode method = classNode.getMethods().get(0); + FormalArgumentNode argument = method.getArguments().get(0); + ExpressionStatementNode statement = (ExpressionStatementNode) + classNode.getMethods().get(0).getBody().get(0); + assertEquals( + assign( + reference(argument), + methodCall(reference(argument), "subtract", asList(literal(1)), IntegerValue.REF)), + statement.getExpression()); + } @Test public void canReadExpressionStatements() { -- cgit v1.2.3