diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-31 11:14:31 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-31 11:14:31 +0000 |
| commit | 5e01b55caf49ddbed0f9abdf8ca6592303001985 (patch) | |
| tree | 87fc9906f2c8bfd49565797a2de3fe519f5029d9 /src/test | |
| parent | 292834a886ff6a2263ad9878500edec35efb5d60 (diff) | |
Add evaluation of some int operations
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java | 46 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java | 3 |
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")); |
