2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com
.intellij
.uiDesigner
.binding
;
19 import com
.intellij
.lang
.properties
.psi
.PropertiesFile
;
20 import com
.intellij
.lang
.properties
.psi
.Property
;
21 import com
.intellij
.openapi
.application
.ApplicationManager
;
22 import com
.intellij
.openapi
.application
.PluginPathManager
;
23 import com
.intellij
.openapi
.projectRoots
.impl
.JavaSdkImpl
;
24 import com
.intellij
.openapi
.vfs
.VirtualFile
;
25 import com
.intellij
.psi
.PsiClass
;
26 import com
.intellij
.psi
.PsiElement
;
27 import com
.intellij
.psi
.PsiReference
;
28 import com
.intellij
.psi
.search
.GlobalSearchScope
;
29 import com
.intellij
.psi
.search
.searches
.ReferencesSearch
;
30 import com
.intellij
.testFramework
.PsiTestCase
;
31 import com
.intellij
.testFramework
.PsiTestUtil
;
32 import com
.intellij
.util
.Query
;
35 import java
.util
.Collection
;
40 public class FormPropertyUsageTest
extends PsiTestCase
{
41 private VirtualFile myTestProjectRoot
;
43 protected void setUp() throws Exception
{
46 ApplicationManager
.getApplication().runWriteAction(
50 String root
= PluginPathManager
.getPluginHomePath("ui-designer") + "/testData/binding/" + getTestName(true);
51 PsiTestUtil
.removeAllRoots(myModule
, JavaSdkImpl
.getMockJdk("java 1.4"));
52 myTestProjectRoot
= PsiTestUtil
.createTestProjectStructure(myProject
, myModule
, root
, myFilesToDelete
);
62 @Override protected void tearDown() throws Exception
{
63 myTestProjectRoot
= null;
67 public void testClassUsage() {
68 PsiClass psiClass
= myJavaFacade
.findClass(JButton
.class.getName(), GlobalSearchScope
.allScope(myProject
));
69 final Query
<PsiReference
> query
= ReferencesSearch
.search(psiClass
);
70 final Collection
<PsiReference
> result
= query
.findAll();
71 assertEquals(1, result
.size());
74 public void testFormPropertyUsage() {
75 doPropertyUsageTest("test.properties");
78 public void testLocalizedPropertyUsage() {
79 doPropertyUsageTest("test_ru.properties");
82 private void doPropertyUsageTest(final String propertyFileName
) {
83 PropertiesFile propFile
= (PropertiesFile
) myPsiManager
.findFile(myTestProjectRoot
.findChild(propertyFileName
));
84 assertNotNull(propFile
);
85 final Property prop
= propFile
.findPropertyByKey("key");
87 final Query
<PsiReference
> query
= ReferencesSearch
.search(prop
);
88 final Collection
<PsiReference
> result
= query
.findAll();
89 assertEquals(1, result
.size());
90 verifyReference(result
, 0, "form.form", 960);
93 public void testPropertyFileUsage() {
94 doPropertyFileUsageTest("test.properties");
97 public void testLocalizedPropertyFileUsage() {
98 doPropertyFileUsageTest("test_ru.properties");
101 private void doPropertyFileUsageTest(final String fileName
) {
102 PropertiesFile propFile
= (PropertiesFile
) myPsiManager
.findFile(myTestProjectRoot
.findChild(fileName
));
103 assertNotNull(propFile
);
104 final Query
<PsiReference
> query
= ReferencesSearch
.search(propFile
);
105 final Collection
<PsiReference
> result
= query
.findAll();
106 assertEquals(1, result
.size());
107 verifyReference(result
, 0, "form.form", 949);
110 private void verifyReference(final Collection
<PsiReference
> result
, final int index
, final String fileName
, final int offset
) {
111 PsiReference ref
= result
.toArray(new PsiReference
[result
.size()]) [index
];
112 final PsiElement element
= ref
.getElement();
113 assertEquals(fileName
, element
.getContainingFile().getName());
114 int startOffset
= element
.getTextOffset() + ref
.getRangeInElement().getStartOffset();
115 assertEquals(offset
, startOffset
);