diff options
author | Markus Schorn | 2007-02-09 13:30:48 +0000 |
---|---|---|
committer | Markus Schorn | 2007-02-09 13:30:48 +0000 |
commit | 55426596b4c3b27c51d45b5133b9307501e54df3 (patch) | |
tree | 0cee567a519bc256aa049fccc3266308cfae42e1 | |
parent | 93751c7530258ad9c370c035f61e5ed42ae284fb (diff) | |
download | org.eclipse.cdt-55426596b4c3b27c51d45b5133b9307501e54df3.tar.gz org.eclipse.cdt-55426596b4c3b27c51d45b5133b9307501e54df3.tar.xz org.eclipse.cdt-55426596b4c3b27c51d45b5133b9307501e54df3.zip |
Call Hierarchy: testcases with static functions.
4 files changed, 169 insertions, 22 deletions
diff --git a/core/org.eclipse.cdt.core/.options b/core/org.eclipse.cdt.core/.options index aa3a9cb5843..61c44b47d45 100644 --- a/core/org.eclipse.cdt.core/.options +++ b/core/org.eclipse.cdt.core/.options @@ -30,7 +30,7 @@ org.eclipse.cdt.core/debug/indexer/activity=false # Reports statistics for indexer org.eclipse.cdt.core/debug/indexer/statistics=false -# Reports statistics for indexer +# Reports problems for indexer org.eclipse.cdt.core/debug/indexer/problems=false # Code formatter debugging diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java index 87b93aa9e46..a45ac6a5dcc 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java @@ -16,7 +16,10 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; +import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.TreeItem; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.index.IIndex; @@ -92,4 +95,12 @@ public class BaseUITestCase extends BaseTestCase { } while(System.currentTimeMillis() < endTime); } + + protected void expandTreeItem(TreeItem item) { + item.setExpanded(true); + Event event = new Event(); + event.item = item; + item.getParent().notifyListeners(SWT.Expand, event); + runEventQueue(0); + } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/BasicCallHierarchyTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/BasicCallHierarchyTest.java index f65eaa921c7..9ff21be0845 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/BasicCallHierarchyTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/BasicCallHierarchyTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006 Wind River Systems, Inc. and others. + * Copyright (c) 2006, 2007 Wind River Systems, Inc. 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 @@ -17,11 +17,13 @@ import junit.framework.Test; import org.eclipse.core.resources.IFile; import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; +import org.eclipse.cdt.internal.ui.callhierarchy.CHNode; import org.eclipse.cdt.internal.ui.editor.CEditor; @@ -98,7 +100,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { private void doTestVariables(String filename) throws Exception { String content = readTaggedComment("testVariables"); IFile file= createFile(getProject(), filename, content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -154,7 +156,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { private void doTestEnumerator(String filename, String contentTag) throws Exception { String content = readTaggedComment(contentTag); IFile file= createFile(getProject(), filename, content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -210,7 +212,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testStructMembersC() throws Exception { String content = readTaggedComment("testStructMembers"); IFile file= createFile(getProject(), "struct_member.c", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -257,7 +259,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testStructMembersCpp() throws Exception { String content = readTaggedComment("testStructMembers"); IFile file= createFile(getProject(), "struct_member.cpp", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -304,7 +306,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testAnonymousStructMembersC_156671() throws Exception { String content = readTaggedComment("testStructMembers"); IFile file= createFile(getProject(), "anon_struct_member.c", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -333,7 +335,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testAnonymousStructMembersCpp_156671() throws Exception { String content = readTaggedComment("testStructMembers"); IFile file= createFile(getProject(), "anon_struct_member.cpp", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -396,7 +398,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testUnionMembersC() throws Exception { String content = readTaggedComment("testUnionMembers"); IFile file= createFile(getProject(), "union_member.c", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -443,7 +445,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testUnionMembersCpp() throws Exception { String content = readTaggedComment("testUnionMembers"); IFile file= createFile(getProject(), "union_member.cpp", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -490,7 +492,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testAnonymousUnionMembersC_156671() throws Exception { String content = readTaggedComment("testUnionMembers"); IFile file= createFile(getProject(), "anon_union_member.c", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -519,7 +521,7 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { public void testAnonymousUnionMembersCpp_156671() throws Exception { String content = readTaggedComment("testUnionMembers"); IFile file= createFile(getProject(), "anon_union_member.cpp", content); - waitForIndexer(fIndex, file, 1000); + waitForIndexer(fIndex, file, INDEXER_WAIT_TIME); IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); CEditor editor= (CEditor) IDE.openEditor(page, file); @@ -544,4 +546,148 @@ public class BasicCallHierarchyTest extends CallHierarchyBaseTest { checkTreeNode(tree, 0, "u4::(anon)::mem5"); checkTreeNode(tree, 0, 0, "main()"); } + + // {testStaticFunctions} + // void gf(); + // static void sf() { + // gf(); + // sf(); + // } + + // void gf() { + // gf(); + // sf(); + // } + public void testStaticFunctionsC() throws Exception { + StringBuffer[] sbs= getContentsForTest(2); + String content2= sbs[0].toString(); + String content1= content2 + sbs[1].toString(); + IFile file1= createFile(getProject(), "staticFunc1.c", content1); + IFile file2= createFile(getProject(), "staticFunc2.c", content2); + waitForIndexer(fIndex, file1, INDEXER_WAIT_TIME); + waitForIndexer(fIndex, file2, INDEXER_WAIT_TIME); + + TreeItem i0, i1, i2, i3, i4, i5, i6; + Tree tree; + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + CEditor editor; + + // first file with definition of gf() + editor= (CEditor) IDE.openEditor(page, file1); + editor.selectAndReveal(content1.indexOf("sf"), 0); + openCallHierarchy(editor); + tree = getCHTreeViewer().getTree(); + i0= checkTreeNode(tree, 0, "sf()"); + assertEquals(1, tree.getItemCount()); + + i1= checkTreeNode(i0, 0, "gf()"); // sf()[f1] <- gf() + i2= checkTreeNode(i0, 1, "sf()"); // sf()[f1] <- sf()[f1] + checkTreeNode(i0, 2, null); + + expandTreeItem(i1); + expandTreeItem(i2); + checkTreeNode(i2, 0, null); + i3= checkTreeNode(i1, 0, "gf()"); // sf()[f1] <- gf() <- gf() + i4= checkTreeNode(i1, 1, "sf()"); // sf()[f1] <- gf() <- sf()[f1] + i5= checkTreeNode(i1, 2, "sf()"); // sf()[f1] <- gf() <- sf()[f2] + + if (((CHNode) i4.getData()).getRepresentedDeclaration().getResource().equals(file2)) { + i0= i4; i4=i5; i5=i0; + } + expandTreeItem(i3); + expandTreeItem(i4); + expandTreeItem(i5); + checkTreeNode(i3, 0, null); + checkTreeNode(i4, 0, null); + i6= checkTreeNode(i5, 0, "sf()"); // sf()[f1] <- gf() <- sf()[f2] <- sf()[f2] + + expandTreeItem(i6); + checkTreeNode(i6, 0, null); + + // second file without definition of gf() + editor= (CEditor) IDE.openEditor(page, file2); + editor.selectAndReveal(content1.indexOf("sf"), 0); + openCallHierarchy(editor); + tree = getCHTreeViewer().getTree(); + i0= checkTreeNode(tree, 0, "sf()"); + assertEquals(1, tree.getItemCount()); + + i1= checkTreeNode(i0, 0, "sf()"); // sf()[f2] <- sf()[f2] + checkTreeNode(i0, 1, null); // not called by gf() + + expandTreeItem(i1); + checkTreeNode(i1, 0, null); + } + + // {testStaticFunctions} + // void gf(); + // static void sf() { + // gf(); + // sf(); + // } + + // void gf() { + // gf(); + // sf(); + // } + public void testStaticFunctionsCpp() throws Exception { + StringBuffer[] sbs= getContentsForTest(2); + String content2= sbs[0].toString(); + String content1= content2 + sbs[1].toString(); + IFile file1= createFile(getProject(), "staticFunc1.cpp", content1); + IFile file2= createFile(getProject(), "staticFunc2.cpp", content2); + waitForIndexer(fIndex, file1, INDEXER_WAIT_TIME); + waitForIndexer(fIndex, file2, INDEXER_WAIT_TIME); + + TreeItem i0, i1, i2, i3, i4, i5, i6; + Tree tree; + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + CEditor editor; + + // first file with definition of gf() + editor= (CEditor) IDE.openEditor(page, file1); + editor.selectAndReveal(content1.indexOf("sf"), 0); + openCallHierarchy(editor); + tree = getCHTreeViewer().getTree(); + i0= checkTreeNode(tree, 0, "sf()"); + assertEquals(1, tree.getItemCount()); + + i1= checkTreeNode(i0, 0, "gf()"); // sf()[f1] <- gf() + i2= checkTreeNode(i0, 1, "sf()"); // sf()[f1] <- sf()[f1] + checkTreeNode(i0, 2, null); + + expandTreeItem(i1); + expandTreeItem(i2); + checkTreeNode(i2, 0, null); + i3= checkTreeNode(i1, 0, "gf()"); // sf()[f1] <- gf() <- gf() + i4= checkTreeNode(i1, 1, "sf()"); // sf()[f1] <- gf() <- sf()[f1] + i5= checkTreeNode(i1, 2, "sf()"); // sf()[f1] <- gf() <- sf()[f2] + + if (((CHNode) i4.getData()).getRepresentedDeclaration().getResource().equals(file2)) { + i0= i4; i4=i5; i5=i0; + } + expandTreeItem(i3); + expandTreeItem(i4); + expandTreeItem(i5); + checkTreeNode(i3, 0, null); + checkTreeNode(i4, 0, null); + i6= checkTreeNode(i5, 0, "sf()"); // sf()[f1] <- gf() <- sf()[f2] <- sf()[f2] + + expandTreeItem(i6); + checkTreeNode(i6, 0, null); + + // second file without definition of gf() + editor= (CEditor) IDE.openEditor(page, file2); + editor.selectAndReveal(content1.indexOf("sf"), 0); + openCallHierarchy(editor); + tree = getCHTreeViewer().getTree(); + i0= checkTreeNode(tree, 0, "sf()"); + assertEquals(1, tree.getItemCount()); + + i1= checkTreeNode(i0, 0, "sf()"); // sf()[f2] <- sf()[f2] + checkTreeNode(i0, 1, null); // not called by gf() + + expandTreeItem(i1); + checkTreeNode(i1, 0, null); + } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java index 12eaafec1be..b4533129e90 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/typehierarchy/TypeHierarchyBaseTest.java @@ -17,11 +17,9 @@ import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; @@ -231,14 +229,6 @@ public class TypeHierarchyBaseTest extends BaseUITestCase { return item; } - protected void expandTreeItem(TreeItem item) { - item.setExpanded(true); - Event event = new Event(); - event.item = item; - item.getParent().notifyListeners(SWT.Expand, event); - runEventQueue(0); - } - protected void checkMethodTable(String[] items) { Table table= getMethodViewer().getTable(); TableItem[] titems= table.getItems(); |