From 0de2c3171f9ff0466a92ec7fc0271345e966b563 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 22 Nov 2015 10:35:49 +0000 Subject: Read lambdas with zero arguments and expression body --- .../tests/frontends/java/JavaReaderTests.java | 50 ++++++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) (limited to 'src/test/java/org') 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 e09f2af..5fd26c0 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 @@ -153,6 +153,19 @@ public class JavaReaderTests { constructorCall(TypeName.of("java.lang.String"), asList(literal("_"))), readObjectExpression("new String(\"_\")")); } + + @Test + public void lambdaIsReadAsAnonymousClassCreation() { + assertEquals( + readClasses(generateMethodSource("void", + "java.util.function.Supplier supplier = new java.util.function.Supplier() {\n" + + " public Integer get() {\n" + + " return 42;\n" + + " }\n" + + "};")), + readClasses(generateMethodSource("void", + "java.util.function.Supplier supplier = () -> 42;"))); + } @Test public void argumentIsBoxedIfNecessary() { @@ -604,21 +617,19 @@ public class JavaReaderTests { } private List readStatements(String returnType, String statementsSource) { - String javaClass = - "public static " + returnType + " main() {" + - statementsSource + - "}"; - + String javaClass = generateMethodSource(returnType, statementsSource); ClassNode classNode = readClass(javaClass); return classNode.getMethods().get(0).getBody(); } private ClassNode readClass(String classBody) { - String javaClass = - "package com.example;" + - "public class Example {" + - classBody + - "}"; + List classes = readClasses(classBody); + assertThat(classes, hasSize(1)); + return classes.get(0); + } + + private List readClasses(String classBody) { + String javaClass = generateClassSource(classBody); try { Path directoryPath = Files.createTempDirectory(null); @@ -626,10 +637,8 @@ public class JavaReaderTests { try { Files.createDirectories(directoryPath.resolve("com/example")); Files.write(sourcePath, asList(javaClass)); - - List classes = JavaReader.readClassFromFile(directoryPath, sourcePath); - assertThat(classes, hasSize(1)); - return classes.get(0); + + return JavaReader.readClassFromFile(directoryPath, sourcePath); } finally { deleteRecursively(directoryPath.toFile()); } @@ -637,4 +646,17 @@ public class JavaReaderTests { throw new RuntimeException(exception); } } + + private String generateMethodSource(String returnType, String statementsSource) { + return "public static " + returnType + " main() {" + + statementsSource + + "}"; + } + + private String generateClassSource(String classBody) { + return "package com.example;" + + "public class Example {" + + classBody + + "}"; + } } -- cgit v1.2.3