aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 15:08:09 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 15:08:09 +0000
commit5a471db6d2518eaed974f5b9dade1bd3a4df719e (patch)
tree1e7512f0aab666fb0e2cd82f5143883d79c335ca
parentbc9cf8d94f1baa00c35a0a4d3131e4ca52deaa7c (diff)
Implement ternary conditionals in C# backend
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java10
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java10
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java7
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);