aboutsummaryrefslogtreecommitdiff
path: root/javaparser-testing
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2017-09-14 22:23:06 +0200
committerDanny van Bruggen <hexagonaal@gmail.com>2017-09-14 22:23:06 +0200
commitac0845701a8fd8f16515cd9cdbb818f522c86510 (patch)
tree422b30b1dcee85b3dc16f3edc7c5b2d83235706a /javaparser-testing
parent5bba7b47f7616f423eb04d16671bb2e97f8f6cf7 (diff)
parentc708986f7ac7a44789b38e198326a8cf9c98e454 (diff)
downloadjavaparser-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.java99
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/utils/TestUtils.java12
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());
+ }
}