From c708986f7ac7a44789b38e198326a8cf9c98e454 Mon Sep 17 00:00:00 2001 From: Danny van Bruggen Date: Fri, 8 Sep 2017 21:06:05 +0200 Subject: Add some method reference tests from the JLS --- .../javaparser/ast/expr/MethodReferenceTest.java | 99 ++++++++++++++++++++++ .../com/github/javaparser/utils/TestUtils.java | 12 ++- 2 files changed, 109 insertions(+), 2 deletions(-) (limited to 'javaparser-testing') diff --git a/javaparser-testing/src/test/java/com/github/javaparser/ast/expr/MethodReferenceTest.java b/javaparser-testing/src/test/java/com/github/javaparser/ast/expr/MethodReferenceTest.java index 431e8c96e..ff1ae93e3 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/ast/expr/MethodReferenceTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/ast/expr/MethodReferenceTest.java @@ -2,6 +2,11 @@ package com.github.javaparser.ast.expr; import org.junit.Test; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static com.github.javaparser.utils.TestUtils.assertExpressionValid; import static org.junit.Assert.assertTrue; public class MethodReferenceTest { @@ -11,4 +16,98 @@ public class MethodReferenceTest { assertTrue(new MethodReferenceExpr().getScope() != null); } + @Test + public void reference1() { + assertExpressionValid("String::length"); + } + + @Test + public void reference2() { + assertExpressionValid("System::currentTimeMillis // static method"); + } + + @Test + public void reference3() { + assertExpressionValid("List::size // explicit type arguments for generic type"); + } + + @Test + public void reference4() { + assertExpressionValid("List::size // inferred type arguments for generic type"); + } + + @Test + public void reference5() { + assertExpressionValid("int[]::clone"); + } + + @Test + public void reference6() { + assertExpressionValid("T::tvarMember"); + } + + @Test + public void reference7() { + assertExpressionValid("System.out::println"); + } + + @Test + public void reference8() { + assertExpressionValid("\"abc\"::length"); + } + + @Test + public void reference9() { + assertExpressionValid("foo[x]::bar"); + } + + @Test + public void reference10() { + assertExpressionValid("(test ? list.replaceAll(String::trim) : list) :: iterator"); + } + + @Test + public void reference11() { + assertExpressionValid("String::valueOf // overload resolution needed"); + } + + @Test + public void reference12() { + assertExpressionValid("Arrays::sort // type arguments inferred from context"); + } + + @Test + public void reference13() { + assertExpressionValid("Arrays::sort // explicit type arguments"); + } + + @Test + public void reference14() { + assertExpressionValid("ArrayList::new // constructor for parameterized type"); + } + + @Test + public void reference15() { + assertExpressionValid("ArrayList::new // inferred type arguments"); + } + + @Test + public void reference16() { + assertExpressionValid("Foo::new // explicit type arguments"); + } + + @Test + public void reference17() { + assertExpressionValid("Bar::new // generic class, generic constructor"); + } + + @Test + public void reference18() { + assertExpressionValid("Outer.Inner::new // inner class constructor"); + } + + @Test + public void reference19() { + assertExpressionValid("int[]::new // array creation"); + } } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java b/javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java index 1a4b1d3a3..835eb146c 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java @@ -1,7 +1,8 @@ package com.github.javaparser.utils; -import com.github.javaparser.ParseResult; -import com.github.javaparser.Problem; +import com.github.javaparser.*; +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.validator.Java9Validator; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; @@ -18,6 +19,7 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import static com.github.javaparser.Providers.provider; import static com.github.javaparser.utils.Utils.EOL; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -133,4 +135,10 @@ public class TestUtils { public static void assertNoProblems(ParseResult result) { assertProblems(result); } + + public static void assertExpressionValid(String expression) { + JavaParser javaParser = new JavaParser(new ParserConfiguration().setValidator(new Java9Validator())); + ParseResult result = javaParser.parse(ParseStart.EXPRESSION, provider(expression)); + assertTrue(result.getProblems().toString(), result.isSuccessful()); + } } -- cgit v1.2.3