diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-28 11:36:25 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-28 11:36:25 +0000 |
| commit | 4e4f98062c07afdeef14d4031ca69668649e5873 (patch) | |
| tree | 6415aea98dc33ab50c490fbb3f812412f6dad8f0 /src/test/java/org/zwobble/couscous | |
| parent | c588167505864bece6cbb2dc68814f7d967d9a6a (diff) | |
Introduce InterfaceNode
Diffstat (limited to 'src/test/java/org/zwobble/couscous')
13 files changed, 34 insertions, 36 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index 9914093..2544c4a 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -249,6 +249,6 @@ public abstract class BackendEvalTests { } protected abstract PrimitiveValue evalExpression( - List<ClassNode> classes, + List<TypeNode> classes, ExpressionNode expression); } diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java index 5a6ada1..9fa9625 100644 --- a/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java +++ b/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java @@ -3,6 +3,7 @@ package org.zwobble.couscous.tests; import com.google.common.collect.ImmutableList; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.ast.TypeNode; import org.zwobble.couscous.frontends.java.JavaFrontend; import org.zwobble.couscous.interpreter.Interpreter; import org.zwobble.couscous.interpreter.JavaProject; @@ -28,7 +29,7 @@ public class JavaToInterpreterTests extends CompilerTests { TypeName returnType ) throws IOException, InterruptedException { JavaFrontend frontend = new JavaFrontend(); - List<ClassNode> classNodes = frontend.readSourceDirectory(list(directory), directory); + List<TypeNode> classNodes = frontend.readSourceDirectory(list(directory), directory); Project project = JavaProject.of(classNodes); Interpreter interpreter = new Interpreter(project); diff --git a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java index 54ae4b5..8fde77f 100644 --- a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java @@ -11,12 +11,12 @@ import static org.zwobble.couscous.util.ExtraLists.list; public interface MethodRunner { PrimitiveValue runMethod( - List<ClassNode> classNodes, + List<TypeNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType); - default PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) { + default PrimitiveValue evalExpression(List<TypeNode> classes, ExpressionNode expression) { ClassNode programNode = ClassNode.builder("Program") .method(MethodNode.staticMethod("run") .returns(expression.getType()) diff --git a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java index ce8ab87..e30f1ef 100644 --- a/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java +++ b/src/test/java/org/zwobble/couscous/tests/ValueObjectTests.java @@ -51,6 +51,7 @@ public class ValueObjectTests { {FormalArgumentNode.class}, {IfStatementNode.class}, {InstanceReceiver.class}, + {InterfaceNode.class}, {LiteralNode.class}, {LocalVariableDeclarationNode.class}, {MethodCallNode.class}, 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 ddbee66..995a9d2 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 @@ -2,6 +2,7 @@ package org.zwobble.couscous.tests.backends.csharp; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.ast.TypeNode; import org.zwobble.couscous.tests.BackendEvalTests; import org.zwobble.couscous.values.PrimitiveValue; @@ -9,7 +10,7 @@ import java.util.List; public class CsharpCompilerEvalTests extends BackendEvalTests { @Override - protected PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) { + protected PrimitiveValue evalExpression(List<TypeNode> classes, ExpressionNode expression) { return new CsharpMethodRunner().evalExpression(classes, expression); } } 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 88cce22..4e05266 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 @@ -4,10 +4,7 @@ import com.google.common.collect.ImmutableList; 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.ast.*; import org.zwobble.couscous.backends.Names; import org.zwobble.couscous.backends.csharp.CsharpBackend; import org.zwobble.couscous.backends.csharp.CsharpSerializer; @@ -36,7 +33,7 @@ public class CsharpMethodRunner implements MethodRunner { private static final String NAMESPACE = "Couscous"; @Override - public PrimitiveValue runMethod(List<ClassNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType) { + public PrimitiveValue runMethod(List<TypeNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType) { try { Path directoryPath = Files.createTempDirectory(null); Backend compiler = new CsharpBackend(directoryPath, NAMESPACE); 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..d87bbb7 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,7 +1,7 @@ package org.zwobble.couscous.tests.backends.python; -import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.ast.TypeNode; import org.zwobble.couscous.tests.BackendEvalTests; import org.zwobble.couscous.values.PrimitiveValue; @@ -9,7 +9,7 @@ import java.util.List; public class PythonCompilerEvalTests extends BackendEvalTests { @Override - protected PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) { + protected PrimitiveValue evalExpression(List<TypeNode> classes, ExpressionNode expression) { return new PythonMethodRunner().evalExpression(classes, expression); } }
\ No newline at end of file diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java index a4a57d1..2b0d2ce 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java @@ -2,9 +2,9 @@ package org.zwobble.couscous.tests.backends.python; import com.google.common.base.Joiner; import org.hamcrest.Matchers; -import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.MethodSignature; import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.ast.TypeNode; import org.zwobble.couscous.backends.Names; import org.zwobble.couscous.backends.python.PythonBackend; import org.zwobble.couscous.backends.python.PythonCodeGenerator; @@ -28,7 +28,7 @@ import static org.zwobble.couscous.values.PrimitiveValues.value; public class PythonMethodRunner implements MethodRunner { @Override - public PrimitiveValue runMethod(List<ClassNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType) { + public PrimitiveValue runMethod(List<TypeNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType) { try { Path directoryPath = Files.createTempDirectory(null); PythonBackend compiler = new PythonBackend(directoryPath, "couscous"); diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java index e11b2a1..952bf9d 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/InnerTypeReadingTests.java @@ -4,55 +4,55 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.tests.frontends.java.JavaReading.generateMethodSource; -import static org.zwobble.couscous.tests.frontends.java.JavaReading.readClasses; +import static org.zwobble.couscous.tests.frontends.java.JavaReading.readTypes; public class InnerTypeReadingTests { @Test public void lambdaWithNoArgumentsAndExpressionBodyIsReadAsAnonymousClassCreation() { assertEquals( - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Supplier<Integer> supplier = new java.util.function.Supplier<Integer>() {\n" + " public Integer get() {\n" + " return 42;\n" + " }\n" + "};")), - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Supplier<Integer> supplier = () -> 42;"))); } @Test public void lambdaWithNoArgumentsAndBlockBodyIsReadAsAnonymousClassCreation() { assertEquals( - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Supplier<Integer> supplier = () -> 42;")), - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Supplier<Integer> supplier = () -> { return 42; };"))); } @Test public void lambdaWithInferredArgumentsAndBlockBodyIsReadAsAnonymousClassCreation() { assertEquals( - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Function<Integer, Integer> function = x -> x;")), - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Function<Integer, Integer> function = (Integer x) -> x;"))); } @Test public void expressionMethodReferenceWithStaticReceiverIsReadAsLambda() { assertEquals( - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Function<String, Integer> function = arg0 -> Integer.parseInt(arg0);")), - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "java.util.function.Function<String, Integer> function = Integer::parseInt;"))); } @Test public void expressionMethodReferenceWithInstanceReceiverIsReadAsLambda() { assertEquals( - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "Integer x = 0; java.util.function.Supplier<String> function = () -> x.toString();")), - readClasses(generateMethodSource("void", + readTypes(generateMethodSource("void", "Integer x = 0; java.util.function.Supplier<String> function = x::toString;"))); } } diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java index 442e5fa..dc5965a 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java @@ -18,7 +18,8 @@ import static org.zwobble.couscous.ast.IfStatementNode.ifStatement; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.LocalVariableDeclarationNode.localVariableDeclaration; import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; -import static org.zwobble.couscous.ast.Operations.*; +import static org.zwobble.couscous.ast.Operations.boxInt; +import static org.zwobble.couscous.ast.Operations.integerAdd; import static org.zwobble.couscous.ast.ReturnNode.returns; import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference; import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion; diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReading.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReading.java index 5c37dbf..408694c 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReading.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReading.java @@ -1,9 +1,6 @@ package org.zwobble.couscous.tests.frontends.java; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.ExpressionNode; -import org.zwobble.couscous.ast.ReturnNode; -import org.zwobble.couscous.ast.StatementNode; +import org.zwobble.couscous.ast.*; import org.zwobble.couscous.frontends.java.JavaReader; import java.nio.file.Files; @@ -51,17 +48,17 @@ public class JavaReading { } static ClassNode readClass(String classBody) { - List<ClassNode> classes = readClasses(classBody); + List<TypeNode> classes = readTypes(classBody); assertThat(classes, hasSize(1)); - return classes.get(0); + return (ClassNode)classes.get(0); } - static List<ClassNode> readClasses(String classBody) { + static List<TypeNode> readTypes(String classBody) { String javaClass = generateClassSource(classBody); return readSource("com/example/Example.java", javaClass); } - private static List<ClassNode> readSource(String path, String contents) { + static List<TypeNode> readSource(String path, String contents) { try { Path directoryPath = Files.createTempDirectory(null); try { 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 b2b572d..fde8646 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java @@ -236,7 +236,7 @@ public class EvaluatorTests extends BackendEvalTests { @Override protected PrimitiveValue evalExpression( - List<ClassNode> classes, + List<TypeNode> classes, ExpressionNode expression) { Environment environment = new Environment( diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java index 499d18c..c8dd2fb 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java @@ -105,7 +105,7 @@ public class InterpreterMethodTests extends BackendMethodTests { return new MethodRunner() { @Override public PrimitiveValue runMethod( - List<ClassNode> classNodes, + List<TypeNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, |
