/******************************************************************************* * Copyright (c) 2000, 2014 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.ui.tests.core; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.jdt.testplugin.JavaProjectHelper; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.ITypeParameter; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.ui.JavaElementLabels; import org.eclipse.jdt.ui.PreferenceConstants; public class JavaElementLabelsTest extends CoreTests { private static final Class<JavaElementLabelsTest> THIS= JavaElementLabelsTest.class; private IJavaProject fJProject1; public JavaElementLabelsTest(String name) { super(name); } public static Test suite() { return setUpTest(new TestSuite(THIS)); } public static Test setUpTest(Test test) { return new ProjectTestSetup(test); } @Override protected void setUp() throws Exception { fJProject1= ProjectTestSetup.getProject(); IPreferenceStore store= PreferenceConstants.getPreferenceStore(); store.setValue(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES, false); } @Override protected void tearDown() throws Exception { JavaProjectHelper.clear(fJProject1, ProjectTestSetup.getDefaultClasspath()); } private static void assertExpectedLabel(IJavaElement element, String expectedLabel, long flags) { String lab= JavaElementLabels.getTextLabel(element, flags); assertEqualString(lab, expectedLabel); } public void testTypeLabelOuter() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("public class Outer {\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Outer")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "Outer - org.test"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer"); } public void testTypeLabelInner() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" public void foo(Vector vec) {\n"); buf.append(" }\n"); buf.append(" public class Inner {\n"); buf.append(" public int inner(Vector vec) {\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Inner")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.Inner"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.Inner"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "Inner - org.test.Outer"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.Inner - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.Inner"); } public void testTypeLabelLocal() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" public void foo(Vector vec) {\n"); buf.append(" public class Local {\n"); buf.append(" }\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Local")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.foo(...).Local"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.foo(...).Local"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "Local - org.test.Outer.foo(...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.foo(...).Local - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.foo(...).Local"); } public void testTypeParameterLabelType() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.*;\n"); buf.append("import java.io.Serializable;\n"); buf.append("public class TypeParams<Q extends ArrayList<? extends Number>, Element extends Map<String, Integer> & Serializable, NoBound> {\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("TypeParams.java", content, false, null); IType typeParams= (IType)cu.getElementAt(content.indexOf("TypeParams")); ITypeParameter[] typeParameters= typeParams.getTypeParameters(); ITypeParameter q= typeParameters[0]; ITypeParameter element= typeParameters[1]; ITypeParameter nobound= typeParameters[2]; String lab= JavaElementLabels.getTextLabel(q, 0); assertEqualString(lab, "Q extends ArrayList<? extends Number>"); lab= JavaElementLabels.getTextLabel(q, JavaElementLabels.ALL_POST_QUALIFIED); assertEqualString(lab, "Q extends ArrayList<? extends Number> - org.test.TypeParams"); lab= JavaElementLabels.getTextLabel(element, 0); assertEqualString(lab, "Element extends Map<String, Integer> & Serializable"); lab= JavaElementLabels.getTextLabel(element, JavaElementLabels.DEFAULT_POST_QUALIFIED); assertEqualString(lab, "Element extends Map<String, Integer> & Serializable - org.test.TypeParams"); lab= JavaElementLabels.getTextLabel(nobound, 0); assertEqualString(lab, "NoBound"); lab= JavaElementLabels.getTextLabel(nobound, JavaElementLabels.TP_POST_QUALIFIED); assertEqualString(lab, "NoBound - org.test.TypeParams"); IType al= (IType)cu.codeSelect(content.indexOf("ArrayList"), 0)[0]; ITypeParameter[] alTypeParameters= al.getTypeParameters(); ITypeParameter e= alTypeParameters[0]; lab= JavaElementLabels.getTextLabel(e, 0); assertEqualString(lab, "E"); // no " extends java.lang.Object"! lab= JavaElementLabels.getTextLabel(e, JavaElementLabels.ALL_POST_QUALIFIED); assertEqualString(lab, "E - java.util.ArrayList"); lab= JavaElementLabels.getTextLabel(typeParams, 0); assertEqualString(lab, "TypeParams"); lab= JavaElementLabels.getTextLabel(typeParams, JavaElementLabels.ALL_DEFAULT); assertEqualString(lab, "TypeParams<Q extends ArrayList<? extends Number>, Element extends Map<String, Integer> & Serializable, NoBound>"); lab= JavaElementLabels.getTextLabel(typeParams, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_POST_QUALIFIED); assertEqualString(lab, "TypeParams<Q extends ArrayList<? extends Number>, Element extends Map<String, Integer> & Serializable, NoBound> - org.test"); } public void testTypeParameterLabelMethod() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.*;\n"); buf.append("public class X {\n"); buf.append(" <Q extends ArrayList<? extends Number>, Element extends Map<String, Integer>, NoBound> Q method(Element e, NoBound n) {\n"); buf.append(" return null;\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("X.java", content, false, null); IMethod method= (IMethod)cu.getElementAt(content.indexOf("method")); ITypeParameter[] typeParameters= method.getTypeParameters(); ITypeParameter q= typeParameters[0]; ITypeParameter element= typeParameters[1]; ITypeParameter nobound= typeParameters[2]; String lab= JavaElementLabels.getTextLabel(q, 0); assertEqualString(lab, "Q extends ArrayList<? extends Number>"); lab= JavaElementLabels.getTextLabel(q, JavaElementLabels.ALL_POST_QUALIFIED); assertEqualString(lab, "Q extends ArrayList<? extends Number> - org.test.X.method(Element, NoBound)"); lab= JavaElementLabels.getTextLabel(element, 0); assertEqualString(lab, "Element extends Map<String, Integer>"); lab= JavaElementLabels.getTextLabel(element, JavaElementLabels.DEFAULT_POST_QUALIFIED); assertEqualString(lab, "Element extends Map<String, Integer> - org.test.X.method(Element, NoBound)"); lab= JavaElementLabels.getTextLabel(nobound, 0); assertEqualString(lab, "NoBound"); lab= JavaElementLabels.getTextLabel(nobound, JavaElementLabels.TP_POST_QUALIFIED); assertEqualString(lab, "NoBound - org.test.X.method(Element, NoBound)"); } public void testTypeLabelAnonymous() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" public void foo(Vector vec) {\n"); buf.append(" new Object() {\n"); buf.append(" };\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Object")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.foo(...).new Object() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.foo(...).new Object() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "new Object() {...} - org.test.Outer.foo(...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.foo(...).new Object() {...} - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.foo(...).new Object() {...}"); } public void testTypeLabelAnonymousInAnonymous() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" public void foo(Vector vec) {\n"); buf.append(" new Object() {\n"); buf.append(" public void xoo() {\n"); buf.append(" new Serializable() {\n"); buf.append(" };\n"); buf.append(" }\n"); buf.append(" };\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Serializable")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.foo(...).new Object() {...}.xoo().new Serializable() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.foo(...).new Object() {...}.xoo().new Serializable() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "new Serializable() {...} - org.test.Outer.foo(...).new Object() {...}.xoo()"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.foo(...).new Object() {...}.xoo().new Serializable() {...} - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.foo(...).new Object() {...}.xoo().new Serializable() {...}"); } public void testTypeLabelAnonymousInFieldInitializer() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" Object o= new Thread() {\n"); buf.append(" };\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Thread")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.o.new Thread() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.o.new Thread() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "new Thread() {...} - org.test.Outer.o"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.o.new Thread() {...} - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.o.new Thread() {...}"); } public void testTypeLabelAnonymousInInitializer() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Vector;\n"); buf.append("public class Outer {\n"); buf.append(" static {\n"); buf.append(" new Object() {\n"); buf.append(" };\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Outer.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("Object")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED); assertEqualString(lab, "org.test.Outer.{...}.new Object() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_CONTAINER_QUALIFIED); assertEqualString(lab, "Outer.{...}.new Object() {...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_POST_QUALIFIED); assertEqualString(lab, "new Object() {...} - org.test.Outer.{...}"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.APPEND_ROOT_PATH); assertEqualString(lab, "org.test.Outer.{...}.new Object() {...} - TestSetupProject/src"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.T_FULLY_QUALIFIED | JavaElementLabels.PREPEND_ROOT_PATH); assertEqualString(lab, "TestSetupProject/src - org.test.Outer.{...}.new Object() {...}"); } public void testTypeLabelWildcards() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("public class Wildcards<T> {\n"); buf.append(" Wildcards<? extends Number> upper;\n"); buf.append(" Wildcards<? super Number> lower;\n"); buf.append(" Wildcards<?> wild;\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Wildcards.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("upper")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.F_PRE_TYPE_SIGNATURE); assertEqualString(lab, "Wildcards<? extends Number> upper"); elem= cu.getElementAt(content.indexOf("lower")); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.F_PRE_TYPE_SIGNATURE); assertEqualString(lab, "Wildcards<? super Number> lower"); elem= cu.getElementAt(content.indexOf("wild")); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.F_PRE_TYPE_SIGNATURE); assertEqualString(lab, "Wildcards<?> wild"); } public void testPackageLabels() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment packDefault= sourceFolder.getPackageFragment(""); IPackageFragment packOrg= sourceFolder.createPackageFragment("org", false, null); IPackageFragment packOrgTest= sourceFolder.createPackageFragment("org.test", false, null); IPackageFragment packOrgTestLongname= sourceFolder.createPackageFragment("org.test.longname", false, null); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.ALL_DEFAULT); assertExpectedLabel(packOrg, "org", JavaElementLabels.ALL_DEFAULT); assertExpectedLabel(packOrgTestLongname, "org.test.longname", JavaElementLabels.ALL_DEFAULT); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "org", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "org.test.longname", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packDefault, "(default package) - TestSetupProject/src", JavaElementLabels.P_POST_QUALIFIED); assertExpectedLabel(packOrg, "org - TestSetupProject/src", JavaElementLabels.P_POST_QUALIFIED); assertExpectedLabel(packOrgTestLongname, "org.test.longname - TestSetupProject/src", JavaElementLabels.P_POST_QUALIFIED); IPreferenceStore store= PreferenceConstants.getPreferenceStore(); store.setValue(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES, true); try { store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW, "0"); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "org", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, "test", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW, "."); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "org", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, ".test", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "..longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW, "1~."); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "org", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, "o~.test", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "o~.t~.longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW, "2*."); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "org", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, "org.test", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "org.te*.longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_ABBREVIATE_PACKAGE_NAMES, true); assertExpectedLabel(packOrgTestLongname, "org.te*.longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_ABBREVIATION_PATTERN_FOR_PKG_VIEW, "#com=@C\norg=@O"); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "@O", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, "@O.test", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "@O.te*.longname", JavaElementLabels.P_COMPRESSED); store.setValue(PreferenceConstants.APPEARANCE_PKG_NAME_ABBREVIATION_PATTERN_FOR_PKG_VIEW, "org=@O\n\norg.test=@OT\n"); assertExpectedLabel(packDefault, "(default package)", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrg, "@O", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTest, "@OT", JavaElementLabels.P_COMPRESSED); assertExpectedLabel(packOrgTestLongname, "@OT.longname", JavaElementLabels.P_COMPRESSED); } finally { store.setToDefault(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW); store.setValue(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES, false); store.setToDefault(PreferenceConstants.APPEARANCE_PKG_NAME_ABBREVIATION_PATTERN_FOR_PKG_VIEW); store.setValue(PreferenceConstants.APPEARANCE_ABBREVIATE_PACKAGE_NAMES, false); } } public void testMethodLabelVarargsDeclaration() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("public class Varargs {\n"); buf.append(" public void foo(int i, String... varargs) {\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Varargs.java", content, false, null); IJavaElement elem= cu.getElementAt(content.indexOf("foo")); String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT); assertEqualString(lab, "foo(int, String...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES); assertEqualString(lab, "foo(i, varargs)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "foo(int, String...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "foo(int i, String... varargs)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.USE_RESOLVED); assertEqualString(lab, "foo(int, String...)"); } public void testMethodLabelVarargsReference0() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Arrays;\n"); buf.append("public class Varargs {\n"); buf.append(" void foo() {\n"); buf.append(" Arrays.asList();\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Varargs.java", content, false, null); IJavaElement elem= cu.codeSelect(content.indexOf("asList"), 0)[0]; String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT); assertEqualString(lab, "asList(T...) <T>"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES); assertEqualString(lab, "asList(arg0)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "asList(T...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "asList(T... arg0)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.USE_RESOLVED); assertEqualString(lab, "asList(Object...) <Object>"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.USE_RESOLVED); assertEqualString(lab, "asList(Object...)"); } public void testMethodLabelVarargsReference1() throws Exception { assertMethodLabelVarargsReference("1"); } public void testMethodLabelVarargsReference2() throws Exception { assertMethodLabelVarargsReference("1, 2"); } public void testMethodLabelVarargsReference3() throws Exception { assertMethodLabelVarargsReference("1, 2, new Integer(3)"); } private void assertMethodLabelVarargsReference(String args) throws CoreException, JavaModelException { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("import java.util.Arrays;\n"); buf.append("public class Varargs {\n"); buf.append(" void foo() {\n"); buf.append(" Arrays.asList(" + args + ");\n"); buf.append(" }\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Varargs.java", content, false, null); IJavaElement elem= cu.codeSelect(content.indexOf("asList"), 0)[0]; String lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT); assertEqualString(lab, "asList(T...) <T>"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES); assertEqualString(lab, "asList(arg0)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "asList(T...)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_PARAMETER_TYPES); assertEqualString(lab, "asList(T... arg0)"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.USE_RESOLVED); assertEqualString(lab, "asList(Integer...) <Integer>"); lab= JavaElementLabels.getTextLabel(elem, JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.USE_RESOLVED); assertEqualString(lab, "asList(Integer...)"); } public void testMethodLabelAnnotatedParameters() throws Exception { IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src"); IPackageFragment pack1= sourceFolder.createPackageFragment("org.test", false, null); StringBuffer buf= new StringBuffer(); buf.append("package org.test;\n"); buf.append("\n"); buf.append("import java.lang.annotation.Retention;\n"); buf.append("import java.lang.annotation.RetentionPolicy;\n"); buf.append("\n"); buf.append("public class Annotations {\n"); buf.append(" void foo(@Outer(a=@Ann(\"Hello world\\r\\n\\t\\\"<'#@%^&\")) String param) { }\n"); buf.append(" \n"); buf.append(" void foo2(@Ann(value=\"\", cl=Annotations.class, ints={1, 2, -19},\n"); buf.append(" ch='\\0', sh= 0x7FFF, r= @Retention(RetentionPolicy.SOURCE)) String param) { }\n"); buf.append("}\n"); buf.append("@interface Ann {\n"); buf.append(" String value();\n"); buf.append(" Class<?> cl() default Ann.class;\n"); buf.append(" int[] ints() default {1, 2};\n"); buf.append(" char ch() default 'a';\n"); buf.append(" short sh() default 1;\n"); buf.append(" Retention r() default @Retention(RetentionPolicy.CLASS);\n"); buf.append("}\n"); buf.append("@interface Outer {\n"); buf.append(" Ann a();\n"); buf.append("}\n"); String content= buf.toString(); ICompilationUnit cu= pack1.createCompilationUnit("Annotations.java", content, false, null); IJavaElement foo= cu.getElementAt(content.indexOf("foo")); String lab= JavaElementLabels.getTextLabel(foo, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_FULLY_QUALIFIED | JavaElementLabels.M_PARAMETER_ANNOTATIONS); assertEqualString(lab, "org.test.Annotations.foo(@Outer(a=@Ann(value=\"Hello world\\r\\n\\t\\\"<'#@%^&\")) String)"); IJavaElement foo2= cu.getElementAt(content.indexOf("foo2")); lab= JavaElementLabels.getTextLabel(foo2, JavaElementLabels.ALL_DEFAULT | JavaElementLabels.ALL_FULLY_QUALIFIED | JavaElementLabels.M_PARAMETER_ANNOTATIONS); assertEqualString(lab, "org.test.Annotations.foo2(@Ann(value=\"\", cl=Annotations.class, ints={1, 2, -19}, ch='\\u0000', sh=32767, r=@Retention(value=RetentionPolicy.SOURCE)) String)"); } }