aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java11
-rw-r--r--src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java2
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java6
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java4
4 files changed, 23 insertions, 0 deletions
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;
@@ -40,6 +41,16 @@ public abstract class BackendEvalTests {
}
@Test
+ public void canEvaluateOperationsOnBooleans() {
+ assertEquals(
+ value(true),
+ evalExpression(not(literal(false))));
+ assertEquals(
+ value(false),
+ evalExpression(not(literal(true))));
+ }
+
+ @Test
public void canEvaluateOperationsOnIntegers() {
assertEquals(
value(3),
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;
@@ -69,6 +70,11 @@ public class PythonSerializerTests {
}
@Test
+ public void notOperationIsSerializedUsingParenthesisedSubExpression() {
+ assertEquals("not (x)", serialize(pythonNot(pythonVariableReference("x"))));
+ }
+
+ @Test
public void returnKeywordIsUsedForReturns() {
String output = serialize(pythonReturn(pythonIntegerLiteral(42)));
assertEquals("return 42\n", output);
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;
@@ -165,6 +166,9 @@ public class JavaReaderTests {
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"));
assertEquals(