package com.intellij.projectView; import com.intellij.ide.todo.AllTodosTreeBuilder; import com.intellij.ide.todo.CurrentFileTodosTreeBuilder; import com.intellij.ide.todo.TodoTreeStructure; import com.intellij.ide.todo.nodes.TodoItemNode; import com.intellij.ide.util.treeView.AbstractTreeStructure; import com.intellij.openapi.ui.Queryable; import com.intellij.openapi.util.Disposer; import com.intellij.testFramework.ProjectViewTestUtil; import com.intellij.ui.treeStructure.Tree; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class ToDoTreeStructureTest extends BaseProjectViewTestCase { @Override protected void setUp() throws Exception { super.setUp(); myPrintInfo = new Queryable.PrintInfo(new String[] {"className", "fileName", "fieldName", "methodName", "packageName"}, new String[] {"toDoFileCount", "toDoItemCount"}); } public void testToDo1() throws Exception { AllTodosTreeBuilder all = new AllTodosTreeBuilder(new Tree(), new DefaultTreeModel(new DefaultMutableTreeNode()), myProject); all.init(); AbstractTreeStructure structure = all.getTreeStructure(); ((TodoTreeStructure)structure).setFlattenPackages(true); ProjectViewTestUtil.assertStructureEqual(structure, "Root\n" + " Summary\n" + " package2 toDoFileCount=1,toDoItemCount=2\n" + " JavaClass.java\n" + " Item: (62,78)\n" + " Item: (145,162)\n", myPrintInfo); checkOccurrences(all, new String[]{"Item: (62,78)", "Item: (145,162)"}); Disposer.dispose(all); } //todo kirillk public void testToDo() throws Exception { AllTodosTreeBuilder all = new AllTodosTreeBuilder(new Tree(), new DefaultTreeModel(new DefaultMutableTreeNode()), myProject); all.init(); AbstractTreeStructure structure = all.getTreeStructure(); ProjectViewTestUtil.assertStructureEqual(structure, "Root\n" + " Summary\n" + " toDo\n" + " xmlFile.xml\n" + " Item: (12,16)\n" + " package1 toDoFileCount=2,toDoItemCount=4\n" + " package2 toDoFileCount=1,toDoItemCount=2\n" + " JavaClass.java\n" + " Item: (62,78)\n" + " Item: (145,162)\n" + " JavaClass.java\n" + " Item: (52,68)\n" + " Item: (134,151)\n" + " package3 toDoFileCount=1,toDoItemCount=2\n" + " JavaClass.java\n" + " Item: (53,69)\n" + " Item: (136,153)\n", myPrintInfo); checkOccurrences(all, new String[]{"Item: (12,16)", "Item: (62,78)", "Item: (145,162)", "Item: (52,68)", "Item: (134,151)", "Item: (53,69)", "Item: (136,153)"}); final DefaultTreeModel treeModel = new DefaultTreeModel(new DefaultMutableTreeNode()); final JTree currentFileTree = new Tree(treeModel); CurrentFileTodosTreeBuilder builder = new CurrentFileTodosTreeBuilder(currentFileTree, treeModel, myProject); builder.init(); builder.setFile(getSrcDirectory().findSubdirectory("package1").findFile("JavaClass.java")); builder.updateFromRoot(); ProjectViewTestUtil.assertStructureEqual(builder.getTreeStructure(), "JavaClass.java\n" + " JavaClass.java\n" + " Item: (52,68)\n" + " Item: (134,151)\n", myPrintInfo); Disposer.dispose(builder); Disposer.dispose(all); } private static void checkOccurrences(final AllTodosTreeBuilder all, final String[] strings) { AbstractTreeStructure allTreeStructure = all.getTreeStructure(); TodoItemNode current = all.getFirstPointerForElement(allTreeStructure.getRootElement()); for (String string : strings) { assertNotNull(current); assertEquals(string, current.getTestPresentation()); current = all.getNextPointer(current); } assertNull(current); current = all.getLastPointerForElement(allTreeStructure.getRootElement()); for (int i = strings.length - 1; i >= 0; i--) { String string = strings[i]; assertNotNull(current); assertEquals(string, current.getTestPresentation()); current = all.getPreviousPointer(current); } assertNull(current); } }