aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-14 14:49:34 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-14 14:49:34 +0000
commitce1f94f4fe3d57bc4fc20f6a28297412a4e603f6 (patch)
treefba759ca82ccaf38376f93613edc029b5cb1de6b /src/test/java
parent8a7cb643ac9b0e895123c176803af15b75f90cf1 (diff)
Support prefix expressions rather than postfix expressions
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java13
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java48
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() {