diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:08:09 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:08:09 +0000 |
| commit | 5a471db6d2518eaed974f5b9dade1bd3a4df719e (patch) | |
| tree | 1e7512f0aab666fb0e2cd82f5143883d79c335ca /src | |
| parent | bc9cf8d94f1baa00c35a0a4d3131e4ca52deaa7c (diff) | |
Implement ternary conditionals in C# backend
Diffstat (limited to 'src')
3 files changed, 16 insertions, 11 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java index 360fea1..5a3da8e 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -87,7 +87,15 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(TernaryConditionalNode ternaryConditional) { - throw new UnsupportedOperationException(); + write(ternaryConditional.getCondition()); + writer.writeSpace(); + writer.writeSymbol("?"); + writer.writeSpace(); + write(ternaryConditional.getIfTrue()); + writer.writeSpace(); + writer.writeSymbol(":"); + writer.writeSpace(); + write(ternaryConditional.getIfFalse()); } @Override diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java index 9c51117..68870f4 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java @@ -27,16 +27,6 @@ public class CsharpCompilerEvalTests extends BackendEvalTests { @Test @Ignore - public void whenConditionIsTrueThenValueOfConditionalTernaryIsTrueBranch() { - } - - @Test - @Ignore - public void whenConditionIsFalseThenValueOfConditionalTernaryIsFalseBranch() { - } - - @Test - @Ignore public void canCallMethodWithNoArgumentsOnBuiltin() { } diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java index 582f3f0..875bcbf 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java @@ -7,6 +7,7 @@ import org.zwobble.couscous.backends.csharp.CsharpSerializer; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.ReturnNode.returns; +import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional; public class CsharpSerializerTests { @Test @@ -37,6 +38,12 @@ public class CsharpSerializerTests { } @Test + public void ternaryConditionalWritesConditionAndBranches() { + String output = serialize(ternaryConditional(literal(true), literal(1), literal(2))); + assertEquals("true ? 1 : 2", output); + } + + @Test public void returnStatementUsesReturnStatement() { String output = serialize(returns(literal(true))); assertEquals("return true;", output); |
