aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-22 10:35:49 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-22 10:35:57 +0000
commit0de2c3171f9ff0466a92ec7fc0271345e966b563 (patch)
tree52a0edb9d27352feefc646af3d3962c62e536aa4 /src/test/java/org
parent2ab857995fd7e38f08004cb361c4161ea0c48022 (diff)
Read lambdas with zero arguments and expression body
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java50
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 +
+ "}";
+ }
}