diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-10 20:24:30 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-10 20:24:30 +0100 |
| commit | 4f9cac2f40a53e9253b56ce85d0cceeb9dfae276 (patch) | |
| tree | e88f3f5f1e895ef2cb707a38f522ed336db314a5 /src | |
| parent | 0e98e8252a823eb025c24857c9c47fb917f4c220 (diff) | |
Add C# serialisation of enums
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 8 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java | 10 |
2 files changed, 17 insertions, 1 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 3989cd4..64566b4 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -469,7 +469,13 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(EnumNode enumNode) { - throw new UnsupportedOperationException(); + writeType(enumNode, "enum", () -> { + writer.writeStatement(() -> { + writer.writeCommaSeparated( + enumNode.getValues(), + value -> writer.writeIdentifier(value)); + }); + }); } private void writeType(TypeNode node, String keyword, Action writeBody) { 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 6248aa5..991ec79 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 @@ -13,6 +13,7 @@ import static org.zwobble.couscous.ast.ArrayNode.array; import static org.zwobble.couscous.ast.AssignmentNode.assign; import static org.zwobble.couscous.ast.CastNode.cast; import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; +import static org.zwobble.couscous.ast.EnumNode.declareEnum; import static org.zwobble.couscous.ast.ExpressionStatementNode.expressionStatement; import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; @@ -490,6 +491,15 @@ public class CsharpSerializerTests { assertEquals("namespace com.example {\n internal interface Example {\n X get();\n }\n}\n", output); } + @Test + public void enumWithSimpleValues() { + Node node = declareEnum(ScalarType.of("com.example.Example"), list("ONE", "TWO")); + + String output = serialize(node); + + assertEquals("namespace com.example {\n internal enum Example {\n ONE, TWO\n }\n}\n", output); + } + private String serialize(Node node) { return CsharpSerializer.serialize(node); } |
