aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/backends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-31 19:17:43 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-31 19:17:43 +0000
commitbfe06980f1e0e5f3597b710f458819eedc190954 (patch)
treeff7ee348f9ccc6853597ec5d88b4f38063e86ae7 /src/test/java/org/zwobble/couscous/tests/backends
parent82e65d3e011beb475e15c70b9bf911fcfc52a080 (diff)
Add CsharpCompilerMethodTests
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java48
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java13
2 files changed, 60 insertions, 1 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java
new file mode 100644
index 0000000..34bb2b1
--- /dev/null
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerMethodTests.java
@@ -0,0 +1,48 @@
+package org.zwobble.couscous.tests.backends.csharp;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.zwobble.couscous.tests.BackendMethodTests;
+import org.zwobble.couscous.tests.MethodRunner;
+
+public class CsharpCompilerMethodTests extends BackendMethodTests {
+ @Ignore
+ @Test
+ public void methodWithNoStatementsReturnsUnit() {
+ }
+
+ @Ignore
+ @Test
+ public void canDeclareVariable() {
+ }
+
+ @Ignore
+ @Test
+ public void canDeclareVariableAndThenAssignValues() {
+ }
+
+ @Ignore
+ @Test
+ public void whenConditionIsTrueIfStatementExecutesTrueBranch() {
+ }
+
+ @Ignore
+ @Test
+ public void whenConditionIsFalseIfStatementExecutesTrueBranch() {
+ }
+
+ @Ignore
+ @Test
+ public void whileLoopIsExecutedWhileConditionIsTrue() {
+ }
+
+ @Ignore
+ @Test
+ public void returnWillExitWhileLoopEarly() {
+ }
+
+ @Override
+ protected MethodRunner buildMethodRunner() {
+ return new CsharpMethodRunner();
+ }
+}
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java
index 104308b..5d9c27d 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java
@@ -5,13 +5,16 @@ import com.google.common.collect.Iterators;
import org.hamcrest.Matchers;
import org.zwobble.couscous.Backend;
import org.zwobble.couscous.ast.ClassNode;
+import org.zwobble.couscous.ast.LiteralNode;
import org.zwobble.couscous.ast.MethodSignature;
import org.zwobble.couscous.ast.TypeName;
import org.zwobble.couscous.backends.csharp.CsharpBackend;
+import org.zwobble.couscous.backends.csharp.CsharpSerializer;
import org.zwobble.couscous.backends.python.PythonCodeGenerator;
import org.zwobble.couscous.tests.MethodRunner;
import org.zwobble.couscous.tests.backends.Processes;
import org.zwobble.couscous.util.ExtraLists;
+import org.zwobble.couscous.values.ObjectValues;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.StringValue;
@@ -22,6 +25,7 @@ import java.util.List;
import static java.lang.Integer.parseInt;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall;
import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
import static org.zwobble.couscous.util.ExtraLists.list;
@@ -57,10 +61,17 @@ public class CsharpMethodRunner implements MethodRunner {
String csharpMethodName = PythonCodeGenerator.toName(new MethodSignature(
methodName,
eagerMap(arguments, argument -> argument.getType())));
+ String value = CsharpSerializer.serialize(
+ staticMethodCall(
+ TypeName.of(NAMESPACE + "." + className.getQualifiedName()),
+ csharpMethodName,
+ eagerMap(arguments, LiteralNode::literal),
+ // TODO: pass in return type
+ ObjectValues.OBJECT));
String program =
"public class MethodRunnerExample { " +
" public static void Main() { " +
- " var value = " + NAMESPACE + "." + className.getQualifiedName() + "." + csharpMethodName + "();" +
+ " var value = " + value + ";" +
" System.Console.WriteLine(value.GetType());" +
" System.Console.WriteLine(value);" +
" }" +