From 196321f77a224909bcda8bed834a9fee4265a8df Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 14 Nov 2015 17:05:04 +0000 Subject: Support assignments with operations --- .../zwobble/couscous/tests/JavaToPythonTests.java | 1 - .../tests/frontends/java/JavaReaderTests.java | 26 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'src/test/java/org/zwobble') diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java index fa6322f..f17f42b 100644 --- a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java +++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java @@ -60,7 +60,6 @@ public class JavaToPythonTests { } @Test - @Ignore("WIP") public void whileFactorial() throws Exception { assertEquals( value(720), 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 3f06f49..6f116cc 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 @@ -353,6 +353,32 @@ public class JavaReaderTests { statement.getExpression()); } + @Test + public void canReadCompoundAssignmentOperations() { + canReadCompoundAssignmentOperation("+=", Operator.ADD); + canReadCompoundAssignmentOperation("-=", Operator.SUBTRACT); + canReadCompoundAssignmentOperation("*=", Operator.MULTIPLY); + canReadCompoundAssignmentOperation("/=", Operator.DIVIDE); + canReadCompoundAssignmentOperation("%=", Operator.MOD); + } + + private void canReadCompoundAssignmentOperation(String symbol, Operator operator) { + ClassNode classNode = readClass( + "public void go(int value) {" + + " value " + symbol + " 2;" + + "}"); + + 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), + integerOperation(operator.getMethodName(), reference(argument), literal(2))), + statement.getExpression()); + } + @Test public void canReadPrefixDecrement() { ClassNode classNode = readClass( -- cgit v1.2.3