aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java12
-rw-r--r--src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java2
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java10
3 files changed, 24 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
index f1af3a9..f77140b 100644
--- a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
@@ -9,11 +9,13 @@ import org.zwobble.couscous.ast.MethodNode;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.PrimitiveValues;
import org.zwobble.couscous.values.StringValue;
+
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
+import static org.zwobble.couscous.ast.IfStatementNode.ifStatement;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration;
import static org.zwobble.couscous.ast.MethodNode.staticMethod;
@@ -85,6 +87,16 @@ public abstract class BackendMethodTests {
assertEquals(value("[updated value]"), result);
}
+ @Test
+ public void whenConditionIsTrueIfStatementExecutesTrueBranch() {
+ MethodNode.Builder method = staticMethod("hello")
+ .statement(ifStatement(
+ literal(true),
+ asList(returns(literal("[true]"))),
+ asList(returns(literal("[false]")))));
+ assertEquals(value("[true]"), runMethod(method));
+ }
+
protected PrimitiveValue runMethod(MethodNode.Builder methodBuilder, PrimitiveValue... arguments) {
MethodNode method = methodBuilder.build();
String className = "com.example.Program";
diff --git a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java
index e112a86..124f34b 100644
--- a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java
@@ -23,6 +23,7 @@ import org.zwobble.couscous.ast.ExpressionStatementNode;
import org.zwobble.couscous.ast.FieldAccessNode;
import org.zwobble.couscous.ast.FieldDeclarationNode;
import org.zwobble.couscous.ast.FormalArgumentNode;
+import org.zwobble.couscous.ast.IfStatementNode;
import org.zwobble.couscous.ast.LiteralNode;
import org.zwobble.couscous.ast.LocalVariableDeclarationNode;
import org.zwobble.couscous.ast.MethodCallNode;
@@ -65,6 +66,7 @@ public class ValueObjectTests {
{FieldAccessNode.class},
{FieldDeclarationNode.class},
{FormalArgumentNode.class},
+ {IfStatementNode.class},
{LiteralNode.class},
{LocalVariableDeclarationNode.class},
{MethodCallNode.class},
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 0f21758..c3782aa 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
@@ -15,6 +15,7 @@ import static org.zwobble.couscous.backends.python.ast.PythonBooleanLiteralNode.
import static org.zwobble.couscous.backends.python.ast.PythonCallNode.pythonCall;
import static org.zwobble.couscous.backends.python.ast.PythonConditionalExpressionNode.pythonConditionalExpression;
import static org.zwobble.couscous.backends.python.ast.PythonGetSliceNode.pythonGetSlice;
+import static org.zwobble.couscous.backends.python.ast.PythonIfStatementNode.pythonIfStatement;
import static org.zwobble.couscous.backends.python.ast.PythonImportAliasNode.pythonImportAlias;
import static org.zwobble.couscous.backends.python.ast.PythonImportNode.pythonImport;
import static org.zwobble.couscous.backends.python.ast.PythonIntegerLiteralNode.pythonIntegerLiteral;
@@ -154,6 +155,15 @@ public class PythonSerializerTests {
}
@Test
+ public void ifStatementIsSerializedWithIfKeyword() {
+ String output = serialize(pythonIfStatement(
+ pythonBooleanLiteral(true),
+ asList(pythonReturn(pythonIntegerLiteral(1))),
+ asList(pythonReturn(pythonIntegerLiteral(2)))));
+ assertEquals("if True:\n return 1\nelse:\n return 2\n", output);
+ }
+
+ @Test
public void moduleIsSerializedStatements() {
PythonModuleNode classNode = pythonModule(asList(PASS));
String output = serialize(classNode);