package com.intellij.codeInsight.completion; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.lookup.impl.LookupImpl; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.psi.statistics.StatisticsManager; import com.intellij.psi.statistics.impl.StatisticsManagerImpl; import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; /** * @author peter */ public abstract class LightFixtureCompletionTestCase extends LightCodeInsightFixtureTestCase { protected LookupElement[] myItems; @Override protected void setUp() throws Exception { super.setUp(); ((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics(); } @NotNull @Override protected LightProjectDescriptor getProjectDescriptor() { return JAVA_1_6; } @Override protected void tearDown() throws Exception { myItems = null; super.tearDown(); } protected void configureByFile(String path) { myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(path, com.intellij.openapi.util.text.StringUtil.getShortName(path, '/'))); complete(); } protected void complete() { myItems = myFixture.completeBasic(); } protected void selectItem(LookupElement item) { selectItem(item, (char)0); } protected void checkResultByFile(String path) { myFixture.checkResultByFile(path); } protected void selectItem(LookupElement item, final char completionChar) { final LookupImpl lookup = getLookup(); lookup.setCurrentItem(item); if (completionChar == 0 || completionChar == '\n' || completionChar == '\t' || completionChar == Lookup.COMPLETE_STATEMENT_SELECT_CHAR) { new WriteCommandAction.Simple(getProject()) { @Override protected void run() throws Throwable { lookup.finishLookup(completionChar); } }.execute().throwException(); } else { type(completionChar); } } protected LookupImpl getLookup() { return (LookupImpl)LookupManager.getInstance(getProject()).getActiveLookup(); } protected void assertStringItems(String... items) { assertOrderedEquals(myFixture.getLookupElementStrings(), items); } protected void type(String s) { myFixture.type(s); } protected void type(char c) { myFixture.type(c); } }