diff options
Diffstat (limited to 'src/test/java')
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); |
