1 package com
.intellij
.codeInsight
.completion
;
3 import com
.intellij
.JavaTestUtil
;
4 import com
.intellij
.codeInsight
.CodeInsightSettings
;
5 import com
.intellij
.codeInsight
.lookup
.Lookup
;
6 import com
.intellij
.codeInsight
.lookup
.LookupManager
;
7 import com
.intellij
.codeInsight
.lookup
.impl
.TestLookupManager
;
8 import com
.intellij
.openapi
.module
.JavaModuleType
;
9 import com
.intellij
.openapi
.module
.Module
;
10 import com
.intellij
.openapi
.module
.ModuleManager
;
11 import com
.intellij
.openapi
.projectRoots
.Sdk
;
12 import com
.intellij
.openapi
.projectRoots
.impl
.JavaSdkImpl
;
13 import com
.intellij
.testFramework
.PsiTestUtil
;
14 import com
.intellij
.testFramework
.TestDataPath
;
18 @TestDataPath("$CONTENT_ROOT/testData")
19 public class ClassNameCompletionTest
extends CompletionTestCase
{
20 private static final String BASE_PATH
= "/codeInsight/completion/className/";
21 protected boolean myOldSetting
;
23 protected void setUp() throws Exception
{
25 setType(CompletionType
.CLASS_NAME
);
26 myOldSetting
= CodeInsightSettings
.getInstance().AUTOCOMPLETE_ON_CLASS_NAME_COMPLETION
;
27 CodeInsightSettings
.getInstance().AUTOCOMPLETE_ON_CLASS_NAME_COMPLETION
= true;
31 protected String
getTestDataPath() {
32 return JavaTestUtil
.getJavaTestDataPath();
35 protected Sdk
getTestProjectJdk() {
36 return JavaSdkImpl
.getMockJdk15("java 1.5");
39 protected void tearDown() throws Exception
{
40 CodeInsightSettings
.getInstance().AUTOCOMPLETE_ON_CLASS_NAME_COMPLETION
= myOldSetting
;
44 public void testImportAfterNew() throws Exception
{
45 String path
= BASE_PATH
+ "/importAfterNew";
47 configureByFile(path
+ "/before1.java");
48 checkResultByFile(path
+ "/after1.java");
50 configureByFile(path
+ "/before2.java");
51 checkResultByFile(path
+ "/after2.java");
54 public void testAfterNewThrowable1() throws Exception
{
55 String path
= BASE_PATH
+ "/afterNewThrowable";
57 configureByFile(path
+ "/before1.java");
58 checkResultByFile(path
+ "/after1.java");
61 public void testAfterNewThrowable2() throws Exception
{
62 String path
= BASE_PATH
+ "/afterNewThrowable";
64 configureByFile(path
+ "/before2.java");
65 checkResultByFile(path
+ "/after2.java");
68 public void testExcessParensAfterNew() throws Throwable
{ doTest(); }
70 public void testReuseParensAfterNew() throws Throwable
{ doTest(); }
72 public void testBracesAfterNew() throws Throwable
{ doTest(); }
74 public void testInPlainTextFile() throws Throwable
{
75 configureByFile(BASE_PATH
+ getTestName(false) + ".txt");
76 checkResultByFile(BASE_PATH
+ getTestName(false) + "_after.txt");
79 public void testDoubleStringBuffer() throws Throwable
{
80 createClass("package java.lang; public class StringBuffer {}");
85 public void testReplaceReferenceExpressionWithTypeElement() throws Throwable
{
86 createClass("package foo.bar; public class ABCDEF {}");
90 public void testCamelHumpPrefix() throws Throwable
{
91 String path
= BASE_PATH
+ "/java/";
92 configureByFile(path
+ getTestName(false) + ".java");
94 checkResultByFile(path
+ getTestName(false) + "_after.java");
95 assertEquals(2, myItems
.length
);
98 private void doTest() throws Exception
{
99 String path
= BASE_PATH
+ "/java/";
100 configureByFile(path
+ getTestName(false) + ".java");
101 checkResultByFile(path
+ getTestName(false) + "_after.java");
104 public void testNameCompletionJava() throws Exception
{
105 String path
= BASE_PATH
+ "/nameCompletion/java";
106 configureByFile(path
+ "/test1-source.java");
108 checkResultByFile(path
+ "/test1-result.java");
109 configureByFile(path
+ "/test2-source.java");
111 checkResultByFile(path
+ "/test2-result.java");
114 public void testImplementsFiltering1() throws Exception
{
115 final String path
= BASE_PATH
+ "/nameCompletion/java";
116 configureByFile(path
+ "/test4-source.java");
118 checkResultByFile(path
+ "/test4-result.java");
121 public void testImplementsFiltering2() throws Exception
{
122 final String path
= BASE_PATH
+ "/nameCompletion/java";
123 configureByFile(path
+ "/test3-source.java");
125 checkResultByFile(path
+ "/test3-result.java");
127 configureByFile(path
+ "/implements2-source.java");
129 checkResultByFile(path
+ "/implements2-result.java");
131 configureByFile(path
+ "/implements3-source.java");
133 checkResultByFile(path
+ "/implements3-result.java");
136 protected boolean clearModelBeforeConfiguring() {
137 return "testAnnotationFiltering".equals(getName());
140 public void testAnnotationFiltering() throws Exception
{
141 final String path
= BASE_PATH
+ "/nameCompletion/java";
142 configureByFile(path
+ "/test7-source.java");
144 checkResultByFile(path
+ "/test7-result.java");
146 configureByFile(path
+ "/test8-source.java");
148 checkResultByFile(path
+ "/test8-result.java");
150 configureByFile(path
+ "/test9-source.java");
152 checkResultByFile(path
+ "/test9-result.java");
154 configureByFile(path
+ "/test9_2-source.java");
156 checkResultByFile(path
+ "/test9_2-result.java");
158 configureByFile(path
+ "/test9_3-source.java");
160 checkResultByFile(path
+ "/test9_3-result.java");
162 configureByFile(path
+ "/test11-source.java");
164 checkResultByFile(path
+ "/test11-result.java");
166 configureByFile(path
+ "/test10-source.java");
168 checkResultByFile(path
+ "/test10-result.java");
170 configureByFile(path
+ "/test12-source.java");
172 checkResultByFile(path
+ "/test12-result.java");
174 configureByFile(path
+ "/test13-source.java");
176 checkResultByFile(path
+ "/test13-result.java");
179 public void testInMethodCall() throws Throwable
{
180 final String path
= BASE_PATH
+ "/nameCompletion/java";
181 configureByFile(path
+ "/methodCall-source.java");
183 checkResultByFile(path
+ "/methodCall-result.java");
186 public void testInMethodCallQualifier() throws Throwable
{
187 final String path
= BASE_PATH
+ "/nameCompletion/java";
188 configureByFile(path
+ "/methodCall1-source.java");
190 checkResultByFile(path
+ "/methodCall1-result.java");
193 public void testInVariableDeclarationType() throws Throwable
{
194 final String path
= BASE_PATH
+ "/nameCompletion/java";
195 configureByFile(path
+ "/varType-source.java");
197 checkResultByFile(path
+ "/varType-result.java");
200 public void testExtraSpace() throws Throwable
{ doJavaTest(); }
202 public void testAnnotation() throws Throwable
{ doJavaTest(); }
204 public void testInStaticImport() throws Throwable
{ doJavaTest(); }
206 public void testInCommentWithPackagePrefix() throws Throwable
{ doJavaTest(); }
208 private void doJavaTest() throws Exception
{
209 final String path
= BASE_PATH
+ "/nameCompletion/java";
210 configureByFile(path
+ "/" + getTestName(false) + "-source.java");
212 checkResultByFile(path
+ "/" + getTestName(false) + "-result.java");
215 protected void configureByFile(String filePath
) throws Exception
{
216 final String path
= getTestDataPath() + new File(filePath
).getParent() + "/source";
217 if (new File(path
).exists()) {
218 PsiTestUtil
.createTestProjectStructure(myProject
, myModule
, path
, myFilesToDelete
);
220 super.configureByFile(filePath
);
223 private void performAction() {
224 CodeCompletionHandlerBase handler
= new CodeCompletionHandlerBase(CompletionType
.CLASS_NAME
);
225 handler
.invoke(myProject
, myEditor
, myFile
);
226 final LookupManager instance
= LookupManager
.getInstance(myProject
);
227 if(instance
instanceof TestLookupManager
){
228 final TestLookupManager testLookupManager
= ((TestLookupManager
)instance
);
229 if(testLookupManager
.getActiveLookup() != null)
230 testLookupManager
.forceSelection(Lookup
.NORMAL_SELECT_CHAR
, 0);
234 public void testQualifyNameOnSecondCompletion() throws Throwable
{
235 final Module module
= ModuleManager
.getInstance(getProject()).newModule("second.iml", new JavaModuleType());
236 createClass(module
, "package foo.bar; class AxBxCxDxEx {}");
237 configureByFileNoCompletion(BASE_PATH
+ "/nameCompletion/java/" + getTestName(false) + "-source.java");
238 new CodeCompletionHandlerBase(CompletionType
.CLASS_NAME
).invokeCompletion(myProject
, myEditor
, myFile
, 2);
239 checkResultByFile(BASE_PATH
+ "/nameCompletion/java/" + getTestName(false) + "-result.java");