Initial java facade tests
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
namespace foo
|
||||
|
||||
class TheClass() {
|
||||
class object {
|
||||
val out = System.out
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace foo
|
||||
|
||||
class Outer() {
|
||||
class Inner() {
|
||||
fun innerFun() {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package org.jetbrains.jet.plugin.javaFacade;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.plugin.JetLightProjectDescriptor;
|
||||
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
||||
|
||||
/**
|
||||
* @author max
|
||||
*/
|
||||
public class JetJavaFacadeTest extends LightCodeInsightFixtureTestCase {
|
||||
@NotNull
|
||||
@Override
|
||||
protected LightProjectDescriptor getProjectDescriptor() {
|
||||
return JetLightProjectDescriptor.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
myFixture.setTestDataPath(PluginTestCaseBase.getTestDataPathBase() + "/javaFacade");
|
||||
}
|
||||
|
||||
public void testInnerClass() throws Exception {
|
||||
myFixture.configureByFile(getTestName(true) + ".kt");
|
||||
|
||||
JavaPsiFacade facade = myFixture.getJavaFacade();
|
||||
PsiClass mirrorClass = facade.findClass("foo.Outer.Inner", GlobalSearchScope.allScope(getProject()));
|
||||
|
||||
assertNotNull(mirrorClass);
|
||||
PsiMethod[] fun = mirrorClass.findMethodsByName("innerFun", false);
|
||||
|
||||
assertEquals(fun[0].getReturnType(), PsiType.VOID);
|
||||
}
|
||||
|
||||
public void testClassObject() throws Exception {
|
||||
myFixture.configureByFile(getTestName(true) + ".kt");
|
||||
|
||||
JavaPsiFacade facade = myFixture.getJavaFacade();
|
||||
PsiClass theClass = facade.findClass("foo.TheClass", GlobalSearchScope.allScope(getProject()));
|
||||
|
||||
assertNotNull(theClass);
|
||||
|
||||
PsiField classobj = theClass.findFieldByName("$classobj", false);
|
||||
assertTrue(classobj != null && classobj.hasModifierProperty(PsiModifier.STATIC));
|
||||
|
||||
PsiType type = classobj.getType();
|
||||
assertTrue(type instanceof PsiClassType);
|
||||
|
||||
assertEquals("foo.TheClass.ClassObject$", type.getCanonicalText());
|
||||
|
||||
PsiClass classObjectClass = ((PsiClassType) type).resolve();
|
||||
assertTrue(classObjectClass != null && classObjectClass.hasModifierProperty(PsiModifier.STATIC));
|
||||
PsiMethod[] methods = classObjectClass.findMethodsByName("getOut", false);
|
||||
|
||||
assertEquals("java.io.PrintStream", methods[0].getReturnType().getCanonicalText());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user