From 5e64358224731d9b167fd155c481166d36b1fddd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 14 Jan 2016 21:26:14 +0000 Subject: Add initial method runner for C# --- .../org/zwobble/couscous/tests/MethodRunner.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'src/test/java/org/zwobble/couscous/tests/MethodRunner.java') diff --git a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java index 3f69779..1a856ba 100644 --- a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java @@ -1,10 +1,13 @@ package org.zwobble.couscous.tests; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.values.PrimitiveValue; + import java.util.List; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.TypeName; -import org.zwobble.couscous.values.PrimitiveValue; +import static org.zwobble.couscous.util.ExtraLists.list; public interface MethodRunner { PrimitiveValue runMethod( @@ -12,4 +15,19 @@ public interface MethodRunner { TypeName className, String methodName, List arguments); + + default PrimitiveValue evalExpression(List classes, ExpressionNode expression) { + ClassNode programNode = ClassNode.builder("Program") + .method(MethodNode.staticMethod("run") + .statement(ReturnNode.returns(expression)) + .build()) + .build(); + return runMethod( + ImmutableList.copyOf(Iterables.concat( + classes, + list(programNode))), + programNode.getName(), + "run", + list()); + } } -- cgit v1.2.3