diff options
Diffstat (limited to 'src/test')
4 files changed, 55 insertions, 2 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index 41ce893..9914093 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -225,6 +225,24 @@ public abstract class BackendEvalTests { assertEquals(value(42), result); } + + @Test + public void staticConstructorIsExecutedOnReference() { + TypeName type = TypeName.of("com.example.Example"); + ClassNode classNode = ClassNode.builder(type) + .staticField("value", IntegerValue.REF) + .staticConstructor(list( + assignStatement( + fieldAccess(type, "value", IntegerValue.REF), + literal(42)))) + .build(); + + PrimitiveValue result = evalExpression( + list(classNode), + fieldAccess(type, "value", IntegerValue.REF)); + + assertEquals(value(42), result); + } private PrimitiveValue evalExpression(ExpressionNode expression) { return evalExpression(list(), expression); 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 6bc191c..635afca 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 @@ -149,6 +149,15 @@ public class CsharpSerializerTests { } @Test + public void staticFieldAccessSeparatesReceiverAndNameWithDot() { + String output = serialize(fieldAccess( + TypeName.of("X"), + "y", + TypeName.of("Y"))); + assertEquals("X.y", output); + } + + @Test public void returnStatementUsesReturnStatement() { String output = serialize(returns(literal(true))); assertEquals("return true;\n", output); @@ -254,6 +263,18 @@ public class CsharpSerializerTests { } @Test + public void staticConstructorHasSerializedBody() { + ClassNode classNode = ClassNode.builder("com.example.Example") + .staticConstructor(list(expressionStatement(literal(true)))) + .build(); + + String output = serialize(classNode); + + assertEquals( + "namespace com.example {\n internal class Example {\n static Example() {\n true;\n }\n }\n}\n", output); + } + + @Test public void constructorHasSerializedBody() { ConstructorNode constructor = ConstructorNode.constructor( list(formalArg(var(TestIds.ANY_ID, "x", TypeName.of("X")))), @@ -271,12 +292,13 @@ public class CsharpSerializerTests { @Test public void classWithFields() { ClassNode classNode = ClassNode.builder("com.example.Example") - .field("x", TypeName.of("X")) + .staticField("x", TypeName.of("X")) + .field("y", TypeName.of("Y")) .build(); String output = serialize(classNode); - assertEquals("namespace com.example {\n internal class Example {\n internal X x;\n }\n}\n", output); + assertEquals("namespace com.example {\n internal class Example {\n internal static X x;\n internal Y y;\n }\n}\n", output); } private String serialize(Node node) { diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java index e4ff1cb..6337bc7 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java @@ -1,5 +1,7 @@ package org.zwobble.couscous.tests.backends.python; +import org.junit.Ignore; +import org.junit.Test; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.tests.BackendEvalTests; @@ -8,6 +10,11 @@ import org.zwobble.couscous.values.PrimitiveValue; import java.util.List; public class PythonCompilerEvalTests extends BackendEvalTests { + @Ignore + @Test + public void staticConstructorIsExecutedOnReference() { + } + @Override protected PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) { return new PythonMethodRunner().evalExpression(classes, expression); diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java index afd0936..21bc88f 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java @@ -1,6 +1,7 @@ package org.zwobble.couscous.tests.interpreter; import com.google.common.collect.ImmutableMap; +import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; @@ -38,6 +39,11 @@ import static org.zwobble.couscous.tests.util.ExtraAsserts.assertThrows; import static org.zwobble.couscous.util.ExtraLists.list; public class EvaluatorTests extends BackendEvalTests { + @Ignore + @Test + public void staticConstructorIsExecutedOnReference() { + } + @Test public void valueOfAssignmentExpressionIsNewValue() { FormalArgumentNode arg = formalArg(var(ANY_ID, "x", StringValue.REF)); |
