From eff6ead0d0089fae070c6dbb7c937353632322c1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 31 Oct 2015 13:42:14 +0000 Subject: Support int inequality --- .../java/org/zwobble/couscous/tests/BackendEvalTests.java | 11 +++++++++++ .../java/org/zwobble/couscous/tests/JavaToPythonTests.java | 2 ++ .../couscous/tests/backends/python/PythonSerializerTests.java | 6 ++++++ .../couscous/tests/frontends/java/JavaReaderTests.java | 4 ++++ 4 files changed, 23 insertions(+) (limited to 'src/test/java') diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index 89a06af..63ac1a9 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -22,6 +22,7 @@ import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; +import static org.zwobble.couscous.ast.MethodCallNode.not; import static org.zwobble.couscous.ast.ReturnNode.returns; import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional; @@ -39,6 +40,16 @@ public abstract class BackendEvalTests { assertEquals(value(42), evalExpression(literal(42))); } + @Test + public void canEvaluateOperationsOnBooleans() { + assertEquals( + value(true), + evalExpression(not(literal(false)))); + assertEquals( + value(false), + evalExpression(not(literal(true)))); + } + @Test public void canEvaluateOperationsOnIntegers() { assertEquals( diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java index 2568e55..29a5e2a 100644 --- a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java +++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java @@ -26,6 +26,8 @@ public class JavaToPythonTests { public void canUseOperatorsOnPrimitives() { assertEquals(value(3), evalExpression("1 + 2")); assertEquals(value(false), evalExpression("1 > 2")); + assertEquals(value(true), evalExpression("1 == 1")); + assertEquals(value(false), evalExpression("1 != 1")); } private PrimitiveValue evalExpression(String expressionSource) { diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java index 24b2e9a..f8956e5 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java @@ -18,6 +18,7 @@ import static org.zwobble.couscous.backends.python.ast.PythonImportAliasNode.pyt import static org.zwobble.couscous.backends.python.ast.PythonImportNode.pythonImport; import static org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode.pythonIntegerLiteral; import static org.zwobble.couscous.backends.python.ast.PythonModuleNode.pythonModule; +import static org.zwobble.couscous.backends.python.ast.PythonNotNode.pythonNot; import static org.zwobble.couscous.backends.python.ast.PythonPassNode.PASS; import static org.zwobble.couscous.backends.python.ast.PythonReturnNode.pythonReturn; import static org.zwobble.couscous.backends.python.ast.PythonStringLiteralNode.pythonStringLiteral; @@ -68,6 +69,11 @@ public class PythonSerializerTests { assertEquals("(x)[y:z]", serialize(pythonGetSlice(pythonVariableReference("x"), asList(pythonVariableReference("y"), pythonVariableReference("z"))))); } + @Test + public void notOperationIsSerializedUsingParenthesisedSubExpression() { + assertEquals("not (x)", serialize(pythonNot(pythonVariableReference("x")))); + } + @Test public void returnKeywordIsUsedForReturns() { String output = serialize(pythonReturn(pythonIntegerLiteral(42))); 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 9c75e90..c4e3791 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 @@ -31,6 +31,7 @@ import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FieldDeclarationNode.field; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; +import static org.zwobble.couscous.ast.MethodCallNode.not; import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional; import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference; @@ -164,6 +165,9 @@ public class JavaReaderTests { assertEquals( methodCall(literal(1), "equals", asList(literal(2)), BooleanValue.REF), readExpression("1 == 2")); + assertEquals( + not(methodCall(literal(1), "equals", asList(literal(2)), BooleanValue.REF)), + readExpression("1 != 2")); assertEquals( methodCall(literal(1), "greaterThan", asList(literal(2)), BooleanValue.REF), readExpression("1 > 2")); -- cgit v1.2.3