diff --git a/idea/testData/templates/Iter.kt b/idea/testData/templates/Iter.kt new file mode 100644 index 00000000000..1a68ddab34a --- /dev/null +++ b/idea/testData/templates/Iter.kt @@ -0,0 +1,16 @@ +import java.io.InputStream +import java.util.ArrayList +import java.io.FileInputStream +import java.util.HashSet + +class MyClass { + public var collection : HashSet? = null + private var isAlive : Boolean = false + + fun main(args : Array, v : Int) { + var str = "" + val myList = ArrayList() + val stream = FileInputStream(".") + + } +} diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/LiveTemplatesTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/LiveTemplatesTest.java new file mode 100644 index 00000000000..2c65045b33c --- /dev/null +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/LiveTemplatesTest.java @@ -0,0 +1,84 @@ +package org.jetbrains.jet.plugin.codeInsight; + +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupEx; +import com.intellij.codeInsight.lookup.LookupManager; +import com.intellij.codeInsight.template.TemplateManager; +import com.intellij.codeInsight.template.impl.TemplateManagerImpl; +import com.intellij.ide.DataManager; +import com.intellij.openapi.editor.actionSystem.EditorActionHandler; +import com.intellij.openapi.editor.actionSystem.EditorActionManager; +import com.intellij.testFramework.LightProjectDescriptor; +import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; +import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor; +import org.jetbrains.jet.plugin.PluginTestCaseBase; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; + +/** + * @author Evgeny Gerashchenko + * @since 2/10/12 + */ +public class LiveTemplatesTest extends LightCodeInsightFixtureTestCase { + public void testIter() { + myFixture.configureByFile(getTestName(false) + ".kt"); + myFixture.type("iter"); + + doAction("ExpandLiveTemplateByTab"); + assertStringItems("args", "collection", "myList", "str", "stream"); + } + + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE; + } + + @SuppressWarnings("MethodOverridesPrivateMethodOfSuperclass") + private void doAction(@NotNull String actionId) { + EditorActionManager actionManager = EditorActionManager.getInstance(); + EditorActionHandler actionHandler = actionManager.getActionHandler(actionId); + actionHandler.execute(myFixture.getEditor(), DataManager.getInstance().getDataContext()); + } + + @Override + protected void tearDown() throws Exception { + ((TemplateManagerImpl) TemplateManager.getInstance(getProject())).setTemplateTesting(false); + super.tearDown(); + } + + private void assertStringItems(@NonNls String... items) { + assertEquals(Arrays.asList(items), Arrays.asList(getItemStringsSorted())); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + + myFixture.setTestDataPath(new File(PluginTestCaseBase.getTestDataPathBase(), "/templates").getPath() + + File.separator); + + ((TemplateManagerImpl) TemplateManager.getInstance(getProject())).setTemplateTesting(true); + } + + private String[] getItemStrings() { + LookupEx lookup = LookupManager.getActiveLookup(myFixture.getEditor()); + assertNotNull(lookup); + ArrayList result = new ArrayList(); + for (LookupElement element : lookup.getItems()) { + result.add(element.getLookupString()); + } + return ArrayUtil.toStringArray(result); + } + + private String[] getItemStringsSorted() { + String[] items = getItemStrings(); + Arrays.sort(items); + return items; + } +}