mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-18 07:15:51 +07:00
194 lines
6.5 KiB
Java
194 lines
6.5 KiB
Java
package com.intellij.codeInspection;
|
|
|
|
import com.intellij.JavaTestUtil;
|
|
import com.intellij.ToolExtensionPoints;
|
|
import com.intellij.codeInspection.reference.RefElement;
|
|
import com.intellij.codeInspection.visibility.EntryPointWithVisibilityLevel;
|
|
import com.intellij.codeInspection.visibility.VisibilityInspection;
|
|
import com.intellij.openapi.extensions.ExtensionPointName;
|
|
import com.intellij.openapi.extensions.Extensions;
|
|
import com.intellij.openapi.util.InvalidDataException;
|
|
import com.intellij.openapi.util.WriteExternalException;
|
|
import com.intellij.psi.PsiClass;
|
|
import com.intellij.psi.PsiElement;
|
|
import com.intellij.psi.PsiMember;
|
|
import com.intellij.psi.PsiMethod;
|
|
import com.intellij.psi.util.PsiUtil;
|
|
import com.intellij.testFramework.InspectionTestCase;
|
|
import com.intellij.testFramework.PlatformTestUtil;
|
|
import org.jdom.Element;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
public class VisibilityInspectionTest extends InspectionTestCase {
|
|
private VisibilityInspection myTool = new VisibilityInspection();
|
|
|
|
@Override
|
|
protected String getTestDataPath() {
|
|
return JavaTestUtil.getJavaTestDataPath() + "/inspection";
|
|
}
|
|
|
|
private void doTest() throws Exception {
|
|
doTest("visibility/" + getTestName(false), myTool);
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
myTool = null;
|
|
super.tearDown();
|
|
}
|
|
|
|
public void testinnerConstructor() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = false;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
|
|
doTest();
|
|
}
|
|
|
|
public void testpackageLevelTops() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = false;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
|
|
doTest();
|
|
}
|
|
|
|
public void testSCR5008() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
|
|
doTest();
|
|
}
|
|
|
|
public void testSCR6856() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
|
|
doTest();
|
|
}
|
|
|
|
public void testSCR11792() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
|
|
doTest();
|
|
}
|
|
|
|
public void testIDEADEV10312() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = false;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = false;
|
|
doTest();
|
|
}
|
|
|
|
public void testIDEADEV10883() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = false;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = false;
|
|
doTest();
|
|
}
|
|
|
|
public void testDefaultConstructor() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
doTest("visibility/defaultConstructor", myTool, false, true);
|
|
}
|
|
|
|
public void testImplicitConstructor() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
doTest("visibility/implicitConstructor", myTool, false, true);
|
|
}
|
|
|
|
public void testEnumConstants() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
doTest("visibility/enumConstantsVisibility", myTool, false, true);
|
|
}
|
|
|
|
public void testUsagesFromAnnotations() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
doTest("visibility/annotationUsages", myTool, false, true);
|
|
}
|
|
|
|
public void testTypeArguments() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = false;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = false;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = false;
|
|
doTest("visibility/typeArguments", myTool, false, true);
|
|
}
|
|
|
|
public void testUsedFromAnnotationsExtendsList() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
doTest("visibility/usedFromAnnotationsExtendsList", myTool, false, true);
|
|
}
|
|
|
|
public void testUsedQualifiedFromAnotherPackage() throws Exception {
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
doTest("visibility/usedFromAnotherPackage", myTool, false, true);
|
|
}
|
|
|
|
public void testEntryPointWithPredefinedVisibility() throws Exception {
|
|
PlatformTestUtil.registerExtension(Extensions.getRootArea(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() {
|
|
@Override
|
|
public void readExternal(Element element) throws InvalidDataException {}
|
|
|
|
@Override
|
|
public void writeExternal(Element element) throws WriteExternalException {}
|
|
|
|
@NotNull
|
|
@Override
|
|
public String getDisplayName() {
|
|
return "accepted visibility";
|
|
}
|
|
|
|
@Override
|
|
public boolean isEntryPoint(@NotNull RefElement refElement, @NotNull PsiElement psiElement) {
|
|
return isEntryPoint(psiElement);
|
|
}
|
|
|
|
@Override
|
|
public boolean isEntryPoint(@NotNull PsiElement psiElement) {
|
|
return psiElement instanceof PsiMethod && "foo".equals(((PsiMethod)psiElement).getName()) || psiElement instanceof PsiClass;
|
|
}
|
|
|
|
@Override
|
|
public int getMinVisibilityLevel(PsiMember member) {
|
|
return member instanceof PsiMethod && isEntryPoint(member) ? PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL : -1;
|
|
}
|
|
|
|
@Override
|
|
public boolean isSelected() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void setSelected(boolean selected) {}
|
|
|
|
@Override
|
|
public String getTitle() {
|
|
return getDisplayName();
|
|
}
|
|
|
|
@Override
|
|
public String getId() {
|
|
return getDisplayName();
|
|
}
|
|
}, getTestRootDisposable());
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = false;
|
|
myTool.SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = false;
|
|
myTool.SUGGEST_PRIVATE_FOR_INNERS = true;
|
|
doTest("visibility/entryPointWithPredefinedVisibility", myTool, false, true);
|
|
}
|
|
}
|