lombok: ensure 2020.3 works with old lombok versions (IDEA-253011)
[idea/community.git] / java / java-tests / testSrc / com / intellij / java / codeInsight / template / LiveTemplateAutoPopupTest.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.java.codeInsight.template;
3
4
5 import com.intellij.codeInsight.completion.JavaCompletionAutoPopupTestCase;
6 import com.intellij.codeInsight.template.JavaCodeContextType;
7 import com.intellij.codeInsight.template.TemplateContextType;
8 import com.intellij.codeInsight.template.TemplateManager;
9 import com.intellij.codeInsight.template.impl.LiveTemplateCompletionContributor;
10 import com.intellij.codeInsight.template.impl.TemplateImpl;
11 import com.intellij.codeInsight.template.impl.TemplateSettings;
12 import com.intellij.testFramework.fixtures.CodeInsightTestUtil;
13 import com.intellij.util.containers.ContainerUtil;
14
15 import java.util.Arrays;
16
17 public class LiveTemplateAutoPopupTest extends JavaCompletionAutoPopupTestCase {
18   @Override
19   protected void setUp() throws Exception {
20     super.setUp();
21     LiveTemplateCompletionContributor.setShowTemplatesInTests(true, myFixture.getTestRootDisposable());
22   }
23
24   public void testDoNotShowTemplateWithoutShortcutInAutoPopup() {
25     myFixture.configureByText("a.java", "<caret>");
26     createTemplate("z").setShortcutChar(TemplateSettings.NONE_CHAR);
27     type("z");
28     assertNull(myFixture.getLookup());
29   }
30
31   public void testShowTemplateWithShortcutInAutoPopup() {
32     myFixture.configureByText("a.java", "<caret>");
33     createTemplate("z").setShortcutChar(TemplateSettings.TAB_CHAR);
34     type("z");
35     assertNotNull(myFixture.getLookup());
36   }
37
38   public void testNoPrematureLookupHidingWhenTemplateNameContainsDash() {
39     myFixture.configureByText("a.java", "class C { int aaaA; { <caret> }}");
40     createTemplate("aaa-bbb");
41     type("aaa");
42     assertOrderedEquals(myFixture.getLookupElementStrings(), "aaaA", "aaa-bbb");
43     type("-");
44     assertOrderedEquals(myFixture.getLookupElementStrings(), "aaa-bbb");
45
46     myFixture.configureByText("a.java", "class C { { <caret> }}");
47     type("aaa");
48     assertOrderedEquals(myFixture.getLookupElementStrings(), "aaa-bbb");
49     type("-");
50     assertOrderedEquals(myFixture.getLookupElementStrings(), "aaa-bbb");
51   }
52
53   public void testShowTemplatesDifferingOnlyByCase() {
54     createTemplate("wC");
55     createTemplate("wc");
56     myFixture.configureByText("a.java", "class C { { <caret> }}");
57     type("w");
58     assertTrue(myFixture.getLookupElementStrings().toString(), myFixture.getLookupElementStrings().containsAll(Arrays.asList("wC", "wc")));
59   }
60
61   private TemplateImpl createTemplate(String key) {
62     TemplateManager manager = TemplateManager.getInstance(getProject());
63     TemplateImpl template = (TemplateImpl)manager.createTemplate(key, "user", "");
64     TemplateContextType contextType = ContainerUtil.findInstance(TemplateContextType.EP_NAME.getExtensions(), JavaCodeContextType.class);
65     template.getTemplateContext().setEnabled(contextType, true);
66     CodeInsightTestUtil.addTemplate(template, myFixture.getTestRootDisposable());
67     return template;
68   }
69 }