diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-22 10:35:49 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-22 10:35:57 +0000 |
| commit | 0de2c3171f9ff0466a92ec7fc0271345e966b563 (patch) | |
| tree | 52a0edb9d27352feefc646af3d3962c62e536aa4 /src/test/java | |
| parent | 2ab857995fd7e38f08004cb361c4161ea0c48022 (diff) | |
Read lambdas with zero arguments and expression body
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 50 |
1 files changed, 36 insertions, 14 deletions
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<Integer> supplier = new java.util.function.Supplier<Integer>() {\n" + + " public Integer get() {\n" + + " return 42;\n" + + " }\n" + + "};")), + readClasses(generateMethodSource("void", + "java.util.function.Supplier<Integer> supplier = () -> 42;"))); + } @Test public void argumentIsBoxedIfNecessary() { @@ -604,21 +617,19 @@ public class JavaReaderTests { } private List<StatementNode> 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<ClassNode> classes = readClasses(classBody); + assertThat(classes, hasSize(1)); + return classes.get(0); + } + + private List<ClassNode> 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<ClassNode> 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 + + "}"; + } } |
