From 14862f7d39eafd42ad87028f9cb2b5a1e368e6c0 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 22 Dec 2011 15:33:34 +0300 Subject: [PATCH] Initial java facade tests --- idea/testData/javaFacade/classObject.kt | 7 +++ idea/testData/javaFacade/innerClass.kt | 9 +++ .../plugin/javaFacade/JetJavaFacadeTest.java | 61 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 idea/testData/javaFacade/classObject.kt create mode 100644 idea/testData/javaFacade/innerClass.kt create mode 100644 idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java diff --git a/idea/testData/javaFacade/classObject.kt b/idea/testData/javaFacade/classObject.kt new file mode 100644 index 00000000000..3c2235599aa --- /dev/null +++ b/idea/testData/javaFacade/classObject.kt @@ -0,0 +1,7 @@ +namespace foo + +class TheClass() { + class object { + val out = System.out + } +} \ No newline at end of file diff --git a/idea/testData/javaFacade/innerClass.kt b/idea/testData/javaFacade/innerClass.kt new file mode 100644 index 00000000000..c897262a8ea --- /dev/null +++ b/idea/testData/javaFacade/innerClass.kt @@ -0,0 +1,9 @@ +namespace foo + +class Outer() { + class Inner() { + fun innerFun() { + + } + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java new file mode 100644 index 00000000000..0c343d561d3 --- /dev/null +++ b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java @@ -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()); + } +}