1 package com.intellij.tasks;
3 import com.intellij.codeInsight.completion.CompletionType;
4 import com.intellij.codeInsight.lookup.LookupElement;
5 import com.intellij.openapi.editor.Document;
6 import com.intellij.openapi.vcs.ui.CommitMessage;
7 import com.intellij.psi.PsiFile;
8 import com.intellij.tasks.impl.LocalTaskImpl;
9 import com.intellij.tasks.impl.TaskCompletionContributor;
10 import com.intellij.tasks.impl.TaskManagerImpl;
11 import com.intellij.testFramework.MapDataContext;
12 import com.intellij.testFramework.UsefulTestCase;
13 import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
15 import java.util.Arrays;
18 * @author Dmitry Avdeev
20 public class TaskCompletionTest extends LightCodeInsightFixtureTestCase {
22 public TaskCompletionTest() {
23 super(UsefulTestCase.IDEA_MARKER_CLASS, "PlatformLangXml");
26 public void testTaskCompletion() throws Exception {
27 doTest("<caret>", "TEST-001: Test task<caret>");
30 public void testPrefix() throws Exception {
31 doTest("TEST-<caret>", "TEST-001: Test task<caret>");
34 public void testSecondWord() throws Exception {
35 doTest("my TEST-<caret>", "my TEST-001: Test task<caret>");
38 public void testNumberCompletion() throws Exception {
39 configureFile("TEST-0<caret>");
40 configureRepository(new LocalTaskImpl("TEST-001", "Test task"), new LocalTaskImpl("TEST-002", "Test task 2"));
41 LookupElement[] elements = myFixture.complete(CompletionType.BASIC);
42 assertNotNull(elements);
43 assertEquals(2, elements.length);
46 public void testKeepOrder() throws Exception {
47 configureFile("<caret>");
48 configureRepository(new LocalTaskImpl("TEST-002", "Test task 2"), new LocalTaskImpl("TEST-001", "Test task 1"));
49 myFixture.complete(CompletionType.BASIC);
50 assertEquals(Arrays.asList("TEST-002", "TEST-001"), myFixture.getLookupElementStrings());
53 public void testSIOOBE() throws Exception {
54 doTest(" <caret> my", " TEST-001: Test task my");
57 private void doTest(String text, String after) {
59 configureRepository(new LocalTaskImpl("TEST-001", "Test task"));
60 myFixture.completeBasic();
61 myFixture.checkResult(after);
64 private void configureFile(String text) {
65 PsiFile psiFile = myFixture.configureByText("test.txt", text);
66 Document document = myFixture.getDocument(psiFile);
67 TaskCompletionContributor.installCompletion(document, getProject(), null, false);
68 document.putUserData(CommitMessage.DATA_CONTEXT_KEY, new MapDataContext());
72 private void configureRepository(LocalTaskImpl... tasks) {
73 TaskManagerImpl manager = (TaskManagerImpl)TaskManager.getManager(getProject());
74 manager.setRepositories(Arrays.asList(new TestRepository(tasks)));
75 manager.getState().updateEnabled = false;