From e4b9c7fd4070ed51214c260ef2718179fc5e5ebb Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 22 Aug 2013 22:40:06 +0400 Subject: [PATCH] Test for completion of kotlin binaries in java. --- .../jet/generators/tests/GenerateTests.kt | 5 ++ .../completion/injava/compiled/Class.java | 9 ++ .../injava/compiled/ClassMembers.java | 7 ++ .../injava/compiled/ClassesFromNamespace.java | 14 +++ .../injava/compiled/EnumConstants.java | 7 ++ .../injava/compiled/ObjectInstance.java | 7 ++ .../injava/compiled/Subpackage.java | 7 ++ .../injava/compiled/TopLevelMembers.java | 10 +++ .../injava/compiled/TraitMember.java | 8 ++ .../injava/compiled/mockLib/another.kt | 4 + .../injava/compiled/mockLib/main.kt | 26 ++++++ ...actCompiledKotlinInJavaCompletionTest.java | 27 ++++++ ...edKotlinInJavaCompletionTestGenerated.java | 85 +++++++++++++++++++ 13 files changed, 216 insertions(+) create mode 100644 idea/testData/completion/injava/compiled/Class.java create mode 100644 idea/testData/completion/injava/compiled/ClassMembers.java create mode 100644 idea/testData/completion/injava/compiled/ClassesFromNamespace.java create mode 100644 idea/testData/completion/injava/compiled/EnumConstants.java create mode 100644 idea/testData/completion/injava/compiled/ObjectInstance.java create mode 100644 idea/testData/completion/injava/compiled/Subpackage.java create mode 100644 idea/testData/completion/injava/compiled/TopLevelMembers.java create mode 100644 idea/testData/completion/injava/compiled/TraitMember.java create mode 100644 idea/testData/completion/injava/compiled/mockLib/another.kt create mode 100644 idea/testData/completion/injava/compiled/mockLib/main.kt create mode 100644 idea/tests/org/jetbrains/jet/completion/AbstractCompiledKotlinInJavaCompletionTest.java create mode 100644 idea/tests/org/jetbrains/jet/completion/CompiledKotlinInJavaCompletionTestGenerated.java diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 2fef7609add..322ab4f54ec 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -86,6 +86,7 @@ import org.jetbrains.jet.completion.handlers.AbstractSmartCompletionHandlerTest import org.jetbrains.jet.generators.tests.generator.TestGeneratorUtil import org.jetbrains.jet.resolve.AbstractAdditionalLazyResolveDescriptorRendererTest import org.jetbrains.jet.resolve.AbstractReferenceResolveInLibrarySourcesTest +import org.jetbrains.jet.completion.AbstractCompiledKotlinInJavaCompletionTest fun main(args: Array) { System.setProperty("java.awt.headless", "true") @@ -443,6 +444,10 @@ fun main(args: Array) { testClass(javaClass()) { model("shortenRefs") } + + testClass(javaClass()) { + model("completion/injava/compiled", extension = "java") + } } testGroup("j2k/tests/test", "j2k/tests/testData") { diff --git a/idea/testData/completion/injava/compiled/Class.java b/idea/testData/completion/injava/compiled/Class.java new file mode 100644 index 00000000000..acead46b4a5 --- /dev/null +++ b/idea/testData/completion/injava/compiled/Class.java @@ -0,0 +1,9 @@ +public class Testing { + public static void test() { + Li + } +} + +// EXIST: LibClass +// EXIST: LibTrait +// EXIST: LibEnum diff --git a/idea/testData/completion/injava/compiled/ClassMembers.java b/idea/testData/completion/injava/compiled/ClassMembers.java new file mode 100644 index 00000000000..dd50d321a84 --- /dev/null +++ b/idea/testData/completion/injava/compiled/ClassMembers.java @@ -0,0 +1,7 @@ +public class Testing { + public static void test(mockLib.foo.LibClass p) { + p. + } +} + +// EXIST: foo diff --git a/idea/testData/completion/injava/compiled/ClassesFromNamespace.java b/idea/testData/completion/injava/compiled/ClassesFromNamespace.java new file mode 100644 index 00000000000..7a2f7d6ae83 --- /dev/null +++ b/idea/testData/completion/injava/compiled/ClassesFromNamespace.java @@ -0,0 +1,14 @@ +public class Testing { + public static void test() { + mockLib.foo. + } +} + +// note: "NUMBER" check also assures that FooPackage$src$ classes are not visible + +// EXIST: LibClass +// EXIST: LibTrait +// EXIST: LibEnum +// EXIST: LibObject +// EXIST: FooPackage +// NUMBER: 5 diff --git a/idea/testData/completion/injava/compiled/EnumConstants.java b/idea/testData/completion/injava/compiled/EnumConstants.java new file mode 100644 index 00000000000..c112f6127fe --- /dev/null +++ b/idea/testData/completion/injava/compiled/EnumConstants.java @@ -0,0 +1,7 @@ +public class Testing { + public static void test() { + mockLib.foo.LibEnum. + } +} + +// EXIST: RED, GREEN, BLUE diff --git a/idea/testData/completion/injava/compiled/ObjectInstance.java b/idea/testData/completion/injava/compiled/ObjectInstance.java new file mode 100644 index 00000000000..046e6bc9f34 --- /dev/null +++ b/idea/testData/completion/injava/compiled/ObjectInstance.java @@ -0,0 +1,7 @@ +public class Testing { + public static void test() { + mockLib.foo.LibObject. + } +} + +// EXIST: instance$ diff --git a/idea/testData/completion/injava/compiled/Subpackage.java b/idea/testData/completion/injava/compiled/Subpackage.java new file mode 100644 index 00000000000..956acdfa6f6 --- /dev/null +++ b/idea/testData/completion/injava/compiled/Subpackage.java @@ -0,0 +1,7 @@ +public class Testing { + public static void test() { + mockLib. + } +} + +// EXIST: foo diff --git a/idea/testData/completion/injava/compiled/TopLevelMembers.java b/idea/testData/completion/injava/compiled/TopLevelMembers.java new file mode 100644 index 00000000000..6e849192b32 --- /dev/null +++ b/idea/testData/completion/injava/compiled/TopLevelMembers.java @@ -0,0 +1,10 @@ +public class Testing { + public static void test() { + mockLib.foo.FooPackage. + } +} + +// EXIST: topLevelFunction +// EXIST: topLevelExtFunction +// EXIST: getTopLevelVar, setTopLevelVar +// EXIST: anotherTopLevelFunction diff --git a/idea/testData/completion/injava/compiled/TraitMember.java b/idea/testData/completion/injava/compiled/TraitMember.java new file mode 100644 index 00000000000..837615713e6 --- /dev/null +++ b/idea/testData/completion/injava/compiled/TraitMember.java @@ -0,0 +1,8 @@ +public class Testing { + void f(mockLib.foo.LibTrait p) { + p. + } +} + +// EXIST: foo + diff --git a/idea/testData/completion/injava/compiled/mockLib/another.kt b/idea/testData/completion/injava/compiled/mockLib/another.kt new file mode 100644 index 00000000000..96cc50528cd --- /dev/null +++ b/idea/testData/completion/injava/compiled/mockLib/another.kt @@ -0,0 +1,4 @@ +package mockLib.foo + +public fun anotherTopLevelFunction(): String = "" + diff --git a/idea/testData/completion/injava/compiled/mockLib/main.kt b/idea/testData/completion/injava/compiled/mockLib/main.kt new file mode 100644 index 00000000000..92e2023499c --- /dev/null +++ b/idea/testData/completion/injava/compiled/mockLib/main.kt @@ -0,0 +1,26 @@ +package mockLib.foo + +public class LibClass { + public fun foo() { + } +} + +public trait LibTrait { + public fun foo() { + } +} + +public enum class LibEnum { + RED + GREEN + BLUE +} + +public object LibObject + +public fun topLevelFunction(): String = "" + +public fun String.topLevelExtFunction(): String = "" + +public var topLevelVar: String = "" + diff --git a/idea/tests/org/jetbrains/jet/completion/AbstractCompiledKotlinInJavaCompletionTest.java b/idea/tests/org/jetbrains/jet/completion/AbstractCompiledKotlinInJavaCompletionTest.java new file mode 100644 index 00000000000..2681d825618 --- /dev/null +++ b/idea/tests/org/jetbrains/jet/completion/AbstractCompiledKotlinInJavaCompletionTest.java @@ -0,0 +1,27 @@ +package org.jetbrains.jet.completion; + +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.plugin.JdkAndMockLibraryProjectDescriptor; +import org.jetbrains.jet.plugin.PluginTestCaseBase; +import org.jetbrains.jet.plugin.project.TargetPlatform; + +public abstract class AbstractCompiledKotlinInJavaCompletionTest extends JetFixtureCompletionBaseTestCase { + @Override + public TargetPlatform getPlatform() { + return TargetPlatform.JVM; + } + + @NotNull + @Override + protected LightProjectDescriptor getProjectDescriptor() { + return new JdkAndMockLibraryProjectDescriptor(PluginTestCaseBase.getTestDataPathBase() + "/completion/injava/compiled/mockLib", false); + } + + @NotNull + @Override + protected CompletionType completionType() { + return CompletionType.BASIC; + } +} diff --git a/idea/tests/org/jetbrains/jet/completion/CompiledKotlinInJavaCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/CompiledKotlinInJavaCompletionTestGenerated.java new file mode 100644 index 00000000000..8d73fcbb576 --- /dev/null +++ b/idea/tests/org/jetbrains/jet/completion/CompiledKotlinInJavaCompletionTestGenerated.java @@ -0,0 +1,85 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.completion; + +import junit.framework.Assert; +import junit.framework.Test; +import junit.framework.TestSuite; + +import java.io.File; +import java.util.regex.Pattern; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.test.InnerTestClasses; +import org.jetbrains.jet.test.TestMetadata; + +import org.jetbrains.jet.completion.AbstractCompiledKotlinInJavaCompletionTest; + +/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("idea/testData/completion/injava/compiled") +@InnerTestClasses({}) +public class CompiledKotlinInJavaCompletionTestGenerated extends AbstractCompiledKotlinInJavaCompletionTest { + public void testAllFilesPresentInCompiled() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/completion/injava/compiled"), Pattern.compile("^(.+)\\.java$"), true); + } + + @TestMetadata("Class.java") + public void testClass() throws Exception { + doTest("idea/testData/completion/injava/compiled/Class.java"); + } + + @TestMetadata("ClassMembers.java") + public void testClassMembers() throws Exception { + doTest("idea/testData/completion/injava/compiled/ClassMembers.java"); + } + + @TestMetadata("ClassesFromNamespace.java") + public void testClassesFromNamespace() throws Exception { + doTest("idea/testData/completion/injava/compiled/ClassesFromNamespace.java"); + } + + @TestMetadata("EnumConstants.java") + public void testEnumConstants() throws Exception { + doTest("idea/testData/completion/injava/compiled/EnumConstants.java"); + } + + @TestMetadata("ObjectInstance.java") + public void testObjectInstance() throws Exception { + doTest("idea/testData/completion/injava/compiled/ObjectInstance.java"); + } + + @TestMetadata("Subpackage.java") + public void testSubpackage() throws Exception { + doTest("idea/testData/completion/injava/compiled/Subpackage.java"); + } + + @TestMetadata("TopLevelMembers.java") + public void testTopLevelMembers() throws Exception { + doTest("idea/testData/completion/injava/compiled/TopLevelMembers.java"); + } + + @TestMetadata("TraitMember.java") + public void testTraitMember() throws Exception { + doTest("idea/testData/completion/injava/compiled/TraitMember.java"); + } + + public static Test suite() { + TestSuite suite = new TestSuite("CompiledKotlinInJavaCompletionTestGenerated"); + suite.addTestSuite(CompiledKotlinInJavaCompletionTestGenerated.class); + return suite; + } +}