diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2017-09-14 22:23:06 +0200 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2017-09-14 22:23:06 +0200 |
commit | ac0845701a8fd8f16515cd9cdbb818f522c86510 (patch) | |
tree | 422b30b1dcee85b3dc16f3edc7c5b2d83235706a /javaparser-testing | |
parent | 5bba7b47f7616f423eb04d16671bb2e97f8f6cf7 (diff) | |
parent | c708986f7ac7a44789b38e198326a8cf9c98e454 (diff) | |
download | javaparser-ac0845701a8fd8f16515cd9cdbb818f522c86510.tar.gz |
Merge branch 'issue_1121_method_reference_annotations' into issue_1137_annotation_on_elementtype
# Conflicts:
# javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java
Diffstat (limited to 'javaparser-testing')
-rw-r--r-- | javaparser-testing/src/test/java/com/github/javaparser/ast/expr/MethodReferenceTest.java | 99 | ||||
-rw-r--r-- | javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java | 12 |
2 files changed, 109 insertions, 2 deletions
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<String>::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::<String>sort // explicit type arguments"); + } + + @Test + public void reference14() { + assertExpressionValid("ArrayList<String>::new // constructor for parameterized type"); + } + + @Test + public void reference15() { + assertExpressionValid("ArrayList::new // inferred type arguments"); + } + + @Test + public void reference16() { + assertExpressionValid("Foo::<Integer>new // explicit type arguments"); + } + + @Test + public void reference17() { + assertExpressionValid("Bar<String>::<Integer>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 37b758f15..c225b6568 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; @@ -19,6 +20,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import static com.github.javaparser.utils.CodeGenerationUtils.f; +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; @@ -134,4 +136,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<Expression> result = javaParser.parse(ParseStart.EXPRESSION, provider(expression)); + assertTrue(result.getProblems().toString(), result.isSuccessful()); + } } |