diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-14 14:49:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-14 14:49:34 +0000 |
| commit | ce1f94f4fe3d57bc4fc20f6a28297412a4e603f6 (patch) | |
| tree | fba759ca82ccaf38376f93613edc029b5cb1de6b /src/test/java/org/zwobble/couscous | |
| parent | 8a7cb643ac9b0e895123c176803af15b75f90cf1 (diff) | |
Support prefix expressions rather than postfix expressions
Diffstat (limited to 'src/test/java/org/zwobble/couscous')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java | 13 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 48 |
2 files changed, 50 insertions, 11 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java index 271c529..fa6322f 100644 --- a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java +++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java @@ -8,6 +8,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.CouscousCompiler; import org.zwobble.couscous.ast.TypeName; @@ -57,6 +58,18 @@ public class JavaToPythonTests { "factorial", asList(value(6)))); } + + @Test + @Ignore("WIP") + public void whileFactorial() throws Exception { + assertEquals( + value(720), + execTestProgram( + "while-factorial", + TypeName.of("com.example.WhileFactorial"), + "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 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() { |
