move CompleteStatementTest to java-tests
[fedora-idea.git] / java / java-tests / testSrc / com / intellij / codeInsight / completion / ClassNameCompletionTest.java
blob89dac789b5e94f03accbc7e0380a3f7a9cf19e45
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;
16 import java.io.File;
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 {
24 super.setUp();
25 setType(CompletionType.CLASS_NAME);
26 myOldSetting = CodeInsightSettings.getInstance().AUTOCOMPLETE_ON_CLASS_NAME_COMPLETION;
27 CodeInsightSettings.getInstance().AUTOCOMPLETE_ON_CLASS_NAME_COMPLETION = true;
30 @Override
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;
41 super.tearDown();
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 {}");
81 doTest();
82 assertNull(myItems);
85 public void testReplaceReferenceExpressionWithTypeElement() throws Throwable {
86 createClass("package foo.bar; public class ABCDEF {}");
87 doTest();
90 public void testCamelHumpPrefix() throws Throwable {
91 String path = BASE_PATH + "/java/";
92 configureByFile(path + getTestName(false) + ".java");
93 complete();
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");
107 performAction();
108 checkResultByFile(path + "/test1-result.java");
109 configureByFile(path + "/test2-source.java");
110 performAction();
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");
117 performAction();
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");
124 performAction();
125 checkResultByFile(path + "/test3-result.java");
127 configureByFile(path + "/implements2-source.java");
128 performAction();
129 checkResultByFile(path + "/implements2-result.java");
131 configureByFile(path + "/implements3-source.java");
132 performAction();
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");
143 performAction();
144 checkResultByFile(path + "/test7-result.java");
146 configureByFile(path + "/test8-source.java");
147 performAction();
148 checkResultByFile(path + "/test8-result.java");
150 configureByFile(path + "/test9-source.java");
151 performAction();
152 checkResultByFile(path + "/test9-result.java");
154 configureByFile(path + "/test9_2-source.java");
155 performAction();
156 checkResultByFile(path + "/test9_2-result.java");
158 configureByFile(path + "/test9_3-source.java");
159 performAction();
160 checkResultByFile(path + "/test9_3-result.java");
162 configureByFile(path + "/test11-source.java");
163 performAction();
164 checkResultByFile(path + "/test11-result.java");
166 configureByFile(path + "/test10-source.java");
167 performAction();
168 checkResultByFile(path + "/test10-result.java");
170 configureByFile(path + "/test12-source.java");
171 performAction();
172 checkResultByFile(path + "/test12-result.java");
174 configureByFile(path + "/test13-source.java");
175 performAction();
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");
182 performAction();
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");
189 performAction();
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");
196 performAction();
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");
211 performAction();
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");