aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-31 11:14:31 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-31 11:14:31 +0000
commit5e01b55caf49ddbed0f9abdf8ca6592303001985 (patch)
tree87fc9906f2c8bfd49565797a2de3fe519f5029d9 /src/test/java/org
parent292834a886ff6a2263ad9878500edec35efb5d60 (diff)
Add evaluation of some int operations
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java46
-rw-r--r--src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java3
2 files changed, 47 insertions, 2 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
index 20d1881..eaf97dd 100644
--- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
@@ -6,6 +6,8 @@ import org.junit.Test;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.ast.FormalArgumentNode;
+import org.zwobble.couscous.ast.MethodCallNode;
+import org.zwobble.couscous.values.BooleanValue;
import org.zwobble.couscous.values.IntegerValue;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.StringValue;
@@ -38,6 +40,50 @@ public abstract class BackendEvalTests {
}
@Test
+ public void canEvaluateOperationsOnIntegers() {
+ assertEquals(
+ value(3),
+ evalExpression(methodCall(literal(1), "add", asList(literal(2)), IntegerValue.REF)));
+ assertEquals(
+ value(-1),
+ evalExpression(methodCall(literal(1), "subtract", asList(literal(2)), IntegerValue.REF)));
+ assertEquals(
+ value(2),
+ evalExpression(methodCall(literal(1), "multiply", asList(literal(2)), IntegerValue.REF)));
+
+ assertEquals(value(0), evalExpression(divideIntegers(1, 2)));
+ assertEquals(value(1), evalExpression(divideIntegers(10, 6)));
+ // TODO:
+// assertEquals(value(-1), evalExpression(divideIntegers(-10, 6)));
+// assertEquals(value(-1), evalExpression(divideIntegers(10, -6)));
+// assertEquals(value(1), evalExpression(divideIntegers(-10, -6)));
+
+ assertEquals(value(1), evalExpression(modIntegers(1, 2)));
+ assertEquals(value(4), evalExpression(modIntegers(10, 6)));
+
+ assertEquals(
+ value(false),
+ evalExpression(methodCall(literal(1), "greaterThan", asList(literal(2)), BooleanValue.REF)));
+ assertEquals(
+ value(false),
+ evalExpression(methodCall(literal(1), "greaterThanOrEqual", asList(literal(2)), BooleanValue.REF)));
+ assertEquals(
+ value(true),
+ evalExpression(methodCall(literal(1), "lessThan", asList(literal(2)), BooleanValue.REF)));
+ assertEquals(
+ value(true),
+ evalExpression(methodCall(literal(1), "lessThanOrEqual", asList(literal(2)), BooleanValue.REF)));
+ }
+
+ private MethodCallNode divideIntegers(int left, int right) {
+ return methodCall(literal(left), "divide", asList(literal(right)), IntegerValue.REF);
+ }
+
+ private MethodCallNode modIntegers(int left, int right) {
+ return methodCall(literal(left), "mod", asList(literal(right)), IntegerValue.REF);
+ }
+
+ @Test
public void whenConditionIsTrueThenValueOfConditionalTernaryIsTrueBranch() {
PrimitiveValue result = evalExpression(ternaryConditional(literal(true), literal("T"), literal("F")));
assertEquals(value("T"), result);
diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
index b1101ec..2568e55 100644
--- a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java
@@ -3,13 +3,13 @@ package org.zwobble.couscous.tests;
import java.nio.file.Files;
import java.util.List;
-import org.junit.Ignore;
import org.junit.Test;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.TypeName;
import org.zwobble.couscous.frontends.java.JavaFrontend;
import org.zwobble.couscous.tests.backends.python.PythonMethodRunner;
import org.zwobble.couscous.values.PrimitiveValue;
+
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively;
@@ -23,7 +23,6 @@ public class JavaToPythonTests {
}
@Test
- @Ignore("WIP")
public void canUseOperatorsOnPrimitives() {
assertEquals(value(3), evalExpression("1 + 2"));
assertEquals(value(false), evalExpression("1 > 2"));