diff options
Diffstat (limited to 'java/java-tests/testSrc/com/intellij/codeInspection/OfflineIRVTest.java')
-rw-r--r-- | java/java-tests/testSrc/com/intellij/codeInspection/OfflineIRVTest.java | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/OfflineIRVTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/OfflineIRVTest.java new file mode 100644 index 000000000000..a1f81da5773b --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/OfflineIRVTest.java @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved. + */ + +/* + * User: anna + * Date: 14-Jan-2007 + */ +package com.intellij.codeInspection; + +import com.intellij.codeInsight.daemon.HighlightDisplayKey; +import com.intellij.codeInspection.actions.ViewOfflineResultsAction; +import com.intellij.codeInspection.defUse.DefUseInspection; +import com.intellij.codeInspection.defUse.DefUseInspectionBase; +import com.intellij.codeInspection.ex.InspectionProfileImpl; +import com.intellij.codeInspection.ex.InspectionToolWrapper; +import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; +import com.intellij.codeInspection.ex.ToolsImpl; +import com.intellij.codeInspection.offline.OfflineProblemDescriptor; +import com.intellij.codeInspection.offlineViewer.OfflineViewParseUtil; +import com.intellij.codeInspection.ui.InspectionResultsView; +import com.intellij.codeInspection.ui.InspectionTree; +import com.intellij.codeInspection.ui.InspectionTreeNode; +import com.intellij.openapi.application.ex.PathManagerEx; +import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.psi.PsiElement; +import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.TestSourceBasedTestCase; +import com.intellij.util.ui.tree.TreeUtil; +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +public class OfflineIRVTest extends TestSourceBasedTestCase { + private InspectionResultsView myView; + private LocalInspectionToolWrapper myToolWrapper; + + private static String varMessage(String name) { + return InspectionsBundle.message("inspection.unused.assignment.problem.descriptor1", "'"+name+"'"); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + HighlightDisplayKey.register(DefUseInspectionBase.SHORT_NAME); + myToolWrapper = new LocalInspectionToolWrapper(new DefUseInspection()); + myView = ViewOfflineResultsAction.showOfflineView(getProject(), parse(), new InspectionProfileImpl("test") { + @Override + public boolean isToolEnabled(final HighlightDisplayKey key, PsiElement element) { + return Comparing.strEqual(key.toString(), DefUseInspectionBase.SHORT_NAME); + } + + @Override + @NotNull + public InspectionToolWrapper[] getInspectionTools(PsiElement element) { + return new InspectionToolWrapper[]{myToolWrapper}; + } + + @Override + @NotNull + public ModifiableModel getModifiableModel() { + return new InspectionProfileImpl("test") { + @Override + @NotNull + public InspectionToolWrapper[] getInspectionTools(PsiElement element) { + return new InspectionToolWrapper[]{myToolWrapper}; + } + + @Override + public boolean isToolEnabled(final HighlightDisplayKey key, PsiElement element) { + return Comparing.strEqual(key.toString(), DefUseInspectionBase.SHORT_NAME); + } + }; + } + }, null); + myView.getGlobalInspectionContext().getTools().put( + myToolWrapper.getShortName(), new ToolsImpl(myToolWrapper, myToolWrapper.getDefaultLevel(), true)); + myToolWrapper.initialize(myView.getGlobalInspectionContext()); + } + + private Map<String, Map<String, Set<OfflineProblemDescriptor>>> parse() throws IOException { + final String moduleName = getModule().getName(); + final Map<String, Map<String, Set<OfflineProblemDescriptor>>> map = new HashMap<String, Map<String, Set<OfflineProblemDescriptor>>>(); + final File res = new File(PathManagerEx.getTestDataPath(), getTestPath() + File.separator + "res"); + final File[] files = res.listFiles(); + assert files != null; + for (File file : files) { + final String name = file.getName(); + final String problems = FileUtil.loadFile(file); + final Map<String, Set<OfflineProblemDescriptor>> descriptors = OfflineViewParseUtil.parse(problems); + for (Set<OfflineProblemDescriptor> problemDescriptors : descriptors.values()) { + for (OfflineProblemDescriptor descriptor : problemDescriptors) { + descriptor.setModule(moduleName); + } + } + map.put(name.substring(0, name.lastIndexOf('.')), descriptors); + } + return map; + } + + @Override + protected void tearDown() throws Exception { + Disposer.dispose(myView); + myView = null; + myToolWrapper = null; + super.tearDown(); + } + + public void testOfflineView() throws Exception { + myView.getGlobalInspectionContext().getUIOptions().SHOW_STRUCTURE = true; + InspectionTree tree = updateTree(); + TreeUtil.expandAll(tree); + PlatformTestUtil.assertTreeEqual(tree, "-" + getProject() + "\n" + + " -Probable bugs\n" + + " -" + myToolWrapper + "\n" + + " -" + getModule().toString() + "\n" + + " -<default>\n" + + " -Test\n" + + " -foo()\n" + + " " + varMessage("j") + "\n" + + " -main(String[])\n" + + " " + varMessage("test") + "\n" + + " -f()\n" + + " -D\n" + + " -b()\n" + + " " + varMessage("r") + "\n" + + " -anonymous (java.lang.Runnable)\n" + + " -run()\n" + + " " + varMessage("i") + "\n" + + " -ff()\n" + + " " + varMessage("d") + "\n" + + " " + varMessage("a") + "\n"); + myView.getGlobalInspectionContext().getUIOptions().SHOW_STRUCTURE = false; + tree = updateTree(); + PlatformTestUtil.assertTreeEqual(tree, "-" + getProject() + "\n" + + " -Probable bugs\n" + + " -" + myToolWrapper + "\n" + + " -Test\n" + + " " + varMessage("j") + "\n" + + " " + varMessage("test") + "\n" + + " " + varMessage("r") + "\n" + + " " + varMessage("i") + "\n" + + " " + varMessage("d") + "\n" + + " " + varMessage("a") + "\n"); + TreeUtil.selectFirstNode(tree); + final InspectionTreeNode root = (InspectionTreeNode)tree.getLastSelectedPathComponent(); + root.ignoreElement(); + TreeUtil.traverse(root, new TreeUtil.Traverse() { + @Override + public boolean accept(final Object node) { + assertTrue(((InspectionTreeNode)node).isResolved()); + return true; + } + }); + myView.getGlobalInspectionContext().getUIOptions().FILTER_RESOLVED_ITEMS = true; + tree = updateTree(); + PlatformTestUtil.assertTreeEqual(tree, getProject() + "\n"); + myView.getGlobalInspectionContext().getUIOptions().FILTER_RESOLVED_ITEMS = false; + tree = updateTree(); + PlatformTestUtil.assertTreeEqual(tree, "-" + getProject() + "\n" + + " -Probable bugs\n" + + " -" + myToolWrapper + "\n" + + " -Test\n" + + " " + varMessage("j") + "\n" + + " " + varMessage("test") + "\n" + + " " + varMessage("r") + "\n" + + " " + varMessage("i") + "\n" + + " " + varMessage("d") + "\n" + + " " + varMessage("a") + "\n"); + } + + private InspectionTree updateTree() { + myView.update(); + final InspectionTree tree = myView.getTree(); + TreeUtil.expandAll(tree); + return tree; + } + + @Override + protected String getTestPath() { + return "inspection/offline"; + } + + @Override + protected String getTestDirectoryName() { + return "project"; + } +} |