blob: 00510d4564387e554c09b3feef3a6ee84455884e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.parser;
public class GenericsSelectionTest extends AbstractSelectionTest {
public GenericsSelectionTest(String testName) {
super(testName);
}
/*
* Selection at specific location
*/
public void test0001() {
String str =
"public class X { \n" +
" Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0002() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0003() {
String str =
"public class X { \n" +
" Y.Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y.Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0004() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y.Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y.Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0005() {
String str =
"public class X { \n" +
" Y<Object>.Z z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y<Object>.Z> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0006() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y<Object>.Z z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y<Object>.Z> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0007() {
String str =
"public class X { \n" +
" Y<Object>.Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y<Object>.Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection at specific location
*/
public void test0008() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y<Object>.Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y<Object>.Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of simple name
*/
public void test0009() {
String str =
"public class X { \n" +
" Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of simple name
*/
public void test0010() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0011() {
String str =
"public class X { \n" +
" Y.Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y.Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0012() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y.Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y.Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0013() {
String str =
"public class X { \n" +
" Y<Object>.Z z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y<Object>.Z> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0014() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y<Object>.Z z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y<Object>.Z> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0015() {
String str =
"public class X { \n" +
" Y<Object>.Z<Object> z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y<Object>.Z<Object>> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of qualified name
*/
public void test0016() {
String str =
"public class X { \n" +
" void foo(){; \n" +
" Y<Object>.Z<Object> z; \n" +
" } \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y<Object>.Z<Object>>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnType:Y<Object>.Z<Object>> z;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y<Object>.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
public void test0017() {
String str =
"public class X { \n" +
" public <T>X() { \n" +
" } \n" +
" void foo(){; \n" +
" new <Object>X(); \n" +
" } \n" +
"} \n";
String selection = "X";
String expectedCompletionNodeToString = "<SelectOnAllocationExpression:new <Object>X()>";
String completionIdentifier = "X";
String expectedUnitDisplayString =
"public class X {\n" +
" public <T>X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnAllocationExpression:new <Object>X()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "new <Object>X()";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
public void test0018() {
String str =
"public class X <U>{ \n" +
" public <T>X() { \n" +
" } \n" +
" void foo(){; \n" +
" new <Object>X<String>(); \n" +
" } \n" +
"} \n";
String selection = "X";
String expectedCompletionNodeToString = "<SelectOnAllocationExpression:new <Object>X<String>()>";
String completionIdentifier = "X";
String expectedUnitDisplayString =
"public class X<U> {\n" +
" public <T>X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnAllocationExpression:new <Object>X<String>()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "new <Object>X<String>()";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
public void test0019() {
String str =
"public class X { \n" +
" public class Inner { \n" +
" public <U> Inner() { \n" +
" } \n" +
" } \n" +
" void foo(X x){; \n" +
" x.new <Object>Inner(); \n" +
" } \n" +
"} \n";
String selection = "Inner";
String expectedCompletionNodeToString = "<SelectOnQualifiedAllocationExpression:x.new <Object>Inner()>";
String completionIdentifier = "Inner";
String expectedUnitDisplayString =
"public class X {\n" +
" public class Inner {\n" +
" public <U>Inner() {\n" +
" }\n" +
" }\n" +
" public X() {\n" +
" }\n" +
" void foo(X x) {\n" +
" <SelectOnQualifiedAllocationExpression:x.new <Object>Inner()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "x.new <Object>Inner()";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
public void test0020() {
String str =
"public class X { \n" +
" public class Inner<T> { \n" +
" public <U> Inner() { \n" +
" } \n" +
" } \n" +
" void foo(X x){; \n" +
" x.new <Object>Inner<String>(); \n" +
" } \n" +
"} \n";
String selection = "Inner";
String expectedCompletionNodeToString = "<SelectOnQualifiedAllocationExpression:x.new <Object>Inner<String>()>";
String completionIdentifier = "Inner";
String expectedUnitDisplayString =
"public class X {\n" +
" public class Inner<T> {\n" +
" public <U>Inner() {\n" +
" }\n" +
" }\n" +
" public X() {\n" +
" }\n" +
" void foo(X x) {\n" +
" <SelectOnQualifiedAllocationExpression:x.new <Object>Inner<String>()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "x.new <Object>Inner<String>()";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
public void test0021() {
String str =
"public class X<V> { \n" +
" public class Inner<T> { \n" +
" public <U> Inner() { \n" +
" } \n" +
" } \n" +
" void foo(){; \n" +
" new X<String>().new <Object>Inner<String>(); \n" +
" } \n" +
"} \n";
String selection = "Inner";
String expectedCompletionNodeToString = "<SelectOnQualifiedAllocationExpression:new X<String>().new <Object>Inner<String>()>";
String completionIdentifier = "Inner";
String expectedUnitDisplayString =
"public class X<V> {\n" +
" public class Inner<T> {\n" +
" public <U>Inner() {\n" +
" }\n" +
" }\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" <SelectOnQualifiedAllocationExpression:new X<String>().new <Object>Inner<String>()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "new X<String>().new <Object>Inner<String>()";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
/*
* Selection of simple name
*/
public void test0022() {
String str =
"public class X { \n" +
" Y.Z z; \n" +
"} \n";
String selection = "Z";
String expectedCompletionNodeToString = "<SelectOnType:Y.Z>";
String completionIdentifier = "Z";
String expectedUnitDisplayString =
"public class X {\n" +
" <SelectOnType:Y.Z> z;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Y.Z";
String testName = "<select type>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
checkDietParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=209639
public void test0023() {
String str =
"package test;\n" +
"public class Test {\n" +
" public List<String> foo() {\n" +
" return Collections.emptyList();\n" +
" }\n" +
"}";
String selection = "emptyList";
String expectedCompletionNodeToString = "<SelectOnMessageSend:Collections.emptyList()>";
String completionIdentifier = "emptyList";
String expectedUnitDisplayString =
"package test;\n" +
"public class Test {\n" +
" public Test() {\n" +
" }\n" +
" public List<String> foo() {\n" +
" return <SelectOnMessageSend:Collections.emptyList()>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "Collections.emptyList()";
String testName = "<select method>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=255142
public void test0024() {
String str =
"import java.util.List;\n" +
"public class X {\n" +
" <T> T bar(T t) { return t; }\n" +
" void foo(boolean b, Runnable r) {\n" +
" Zork z = null;\n" +
" String s = (String) bar(z); // 5\n" +
" }\n" +
"}\n" +
"\n";
String selection = "bar";
String expectedCompletionNodeToString = "<SelectOnMessageSend:bar(z)>";
String completionIdentifier = "bar";
String expectedUnitDisplayString =
"import java.util.List;\n" +
"public class X {\n" +
" public X() {\n" +
" }\n" +
" <T>T bar(T t) {\n" +
" }\n" +
" void foo(boolean b, Runnable r) {\n" +
" Zork z;\n" +
" String s = (String) <SelectOnMessageSend:bar(z)>;\n" +
" }\n" +
"}\n";
String expectedReplacedSource = "bar(z)";
String testName = "<select method>";
int selectionStart = str.lastIndexOf(selection);
int selectionEnd = str.lastIndexOf(selection) + selection.length() - 1;
this.checkMethodParse(
str.toCharArray(),
selectionStart,
selectionEnd,
expectedCompletionNodeToString,
expectedUnitDisplayString,
completionIdentifier,
expectedReplacedSource,
testName);
}
}