Tests for file structure
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
<root>
|
||||||
|
<item name='com.intellij.ide.util.FileStructurePopup com.intellij.ui.treeStructure.Tree getTree()'>
|
||||||
|
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||||
|
</item>
|
||||||
|
<item name='com.intellij.ide.util.FileStructurePopup com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder getTreeBuilder()'>
|
||||||
|
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||||
|
</item>
|
||||||
|
</root>
|
||||||
@@ -10,6 +10,9 @@
|
|||||||
<item name='com.intellij.testFramework.PlatformTestCase com.intellij.openapi.module.Module createModule(java.lang.String)'>
|
<item name='com.intellij.testFramework.PlatformTestCase com.intellij.openapi.module.Module createModule(java.lang.String)'>
|
||||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||||
</item>
|
</item>
|
||||||
|
<item name='com.intellij.testFramework.PlatformTestUtil java.lang.String print(javax.swing.JTree, boolean)'>
|
||||||
|
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||||
|
</item>
|
||||||
<item name='com.intellij.testFramework.UsefulTestCase java.lang.String getTestName(boolean)'>
|
<item name='com.intellij.testFramework.UsefulTestCase java.lang.String getTestName(boolean)'>
|
||||||
<annotation name='org.jetbrains.annotations.NotNull'/>
|
<annotation name='org.jetbrains.annotations.NotNull'/>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentCompletion
|
|||||||
import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentHighlightingTest
|
import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentHighlightingTest
|
||||||
import org.jetbrains.jet.plugin.stubs.AbstractLazyResolveByStubTest
|
import org.jetbrains.jet.plugin.stubs.AbstractLazyResolveByStubTest
|
||||||
import org.jetbrains.jet.plugin.stubs.AbstractMultiFileHighlightingTest
|
import org.jetbrains.jet.plugin.stubs.AbstractMultiFileHighlightingTest
|
||||||
|
import org.jetbrains.jet.plugin.structureView.AbstractKotlinFileStructureTest
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
System.setProperty("java.awt.headless", "true")
|
System.setProperty("java.awt.headless", "true")
|
||||||
@@ -571,6 +572,10 @@ fun main(args: Array<String>) {
|
|||||||
model("smartSelection", testMethod = "doTestSmartSelection", pattern = """^([^\.]+)\.kt$""")
|
model("smartSelection", testMethod = "doTestSmartSelection", pattern = """^([^\.]+)\.kt$""")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass(javaClass<AbstractKotlinFileStructureTest>()) {
|
||||||
|
model("structureView/fileStructure")
|
||||||
|
}
|
||||||
|
|
||||||
testClass(javaClass<AbstractExpressionSelectionTest>()) {
|
testClass(javaClass<AbstractExpressionSelectionTest>()) {
|
||||||
model("expressionSelection", testMethod = "doTestExpressionSelection", pattern = """^([^\.]+)\.kt$""")
|
model("expressionSelection", testMethod = "doTestExpressionSelection", pattern = """^([^\.]+)\.kt$""")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2013 JetBrains s.r.o.
|
* Copyright 2010-2014 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -78,6 +78,7 @@ public class JetStructureViewElement implements StructureViewTreeElement {
|
|||||||
return myElement.canNavigateToSource();
|
return myElement.canNavigateToSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public ItemPresentation getPresentation() {
|
public ItemPresentation getPresentation() {
|
||||||
return new ColoredItemPresentation() {
|
return new ColoredItemPresentation() {
|
||||||
@@ -115,6 +116,7 @@ public class JetStructureViewElement implements StructureViewTreeElement {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public TreeElement[] getChildren() {
|
public TreeElement[] getChildren() {
|
||||||
if (myElement instanceof JetFile) {
|
if (myElement instanceof JetFile) {
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
+EmptyFile.kt
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
-InheritedMembers.kt
|
||||||
|
Test (<root>)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
class Test {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
-SeveralClasses.kt
|
||||||
|
A (<root>)
|
||||||
|
B (<root>)
|
||||||
|
Some (<root>)
|
||||||
|
Other (<root>)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
trait A
|
||||||
|
open class B
|
||||||
|
class Some: B(), A
|
||||||
|
class Other: A
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
-Simple.kt
|
||||||
|
-Test (<root>)
|
||||||
|
str:kotlin.String
|
||||||
|
some:kotlin.Int
|
||||||
|
foo():kotlin.Int
|
||||||
|
other():kotlin.Unit
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class Test(val str: String) {
|
||||||
|
private val some = 1
|
||||||
|
protected fun foo() = some
|
||||||
|
public fun other() {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2014 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.plugin.structureView
|
||||||
|
|
||||||
|
import org.jetbrains.jet.plugin.PluginTestCaseBase
|
||||||
|
import org.jetbrains.jet.plugin.JetLightCodeInsightFixtureTestCase
|
||||||
|
import com.intellij.util.ui.tree.TreeUtil
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import java.io.File
|
||||||
|
import com.intellij.testFramework.PlatformTestUtil
|
||||||
|
import com.intellij.ui.treeStructure.filtered.FilteringTreeStructure
|
||||||
|
import com.intellij.ide.util.FileStructurePopup
|
||||||
|
import com.intellij.ide.actions.ViewStructureAction
|
||||||
|
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider
|
||||||
|
import org.jetbrains.jet.JetTestUtils
|
||||||
|
|
||||||
|
public abstract class AbstractKotlinFileStructureTest : JetLightCodeInsightFixtureTestCase() {
|
||||||
|
override fun getTestDataPath() = PluginTestCaseBase.getTestDataPathBase() + "/structureView/fileStructure"
|
||||||
|
|
||||||
|
public fun doTest(path: String) {
|
||||||
|
myFixture.configureByFile(path)
|
||||||
|
|
||||||
|
val textEditor = TextEditorProvider.getInstance()!!.getTextEditor(myFixture.getEditor())
|
||||||
|
val popup = ViewStructureAction.createPopup(myFixture.getProject(), textEditor)
|
||||||
|
|
||||||
|
if (popup == null) throw AssertionError("popup mustn't be null")
|
||||||
|
|
||||||
|
popup.createCenterPanel()
|
||||||
|
popup.getTreeBuilder().getUi()!!.getUpdater()!!.setPassThroughMode(true)
|
||||||
|
popup.update()
|
||||||
|
|
||||||
|
val popupText = PlatformTestUtil.print(popup.getTree(), false)
|
||||||
|
JetTestUtils.assertEqualsToFile(File("${FileUtil.getNameWithoutExtension(path)}.after"), popupText)
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun FileStructurePopup.update() {
|
||||||
|
getTreeBuilder().refilter()!!.doWhenProcessed {
|
||||||
|
getStructure().rebuild()
|
||||||
|
updateRecursively(getRootNode())
|
||||||
|
getTreeBuilder().updateFromRoot()
|
||||||
|
|
||||||
|
TreeUtil.expandAll(getTree())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun FileStructurePopup.getFileStructureSpeedSearch() = getSpeedSearch() as FileStructurePopup.MyTreeSpeedSearch
|
||||||
|
|
||||||
|
fun FileStructurePopup.getStructure() = getTreeBuilder().getTreeStructure() as FilteringTreeStructure
|
||||||
|
|
||||||
|
fun FileStructurePopup.getRootNode() = getTreeBuilder().getRootElement() as FilteringTreeStructure.FilteringNode
|
||||||
|
|
||||||
|
fun FileStructurePopup.updateRecursively(node: FilteringTreeStructure.FilteringNode) {
|
||||||
|
node.update()
|
||||||
|
for (child in node.children()!!) {
|
||||||
|
updateRecursively(child)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2014 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.plugin.structureView;
|
||||||
|
|
||||||
|
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.plugin.structureView.AbstractKotlinFileStructureTest;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("idea/testData/structureView/fileStructure")
|
||||||
|
public class KotlinFileStructureTestGenerated extends AbstractKotlinFileStructureTest {
|
||||||
|
public void testAllFilesPresentInFileStructure() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage",
|
||||||
|
new File("idea/testData/structureView/fileStructure"), Pattern.compile("^(.+)\\.kt$"),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("EmptyFile.kt")
|
||||||
|
public void testEmptyFile() throws Exception {
|
||||||
|
doTest("idea/testData/structureView/fileStructure/EmptyFile.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("InheritedMembers.kt")
|
||||||
|
public void testInheritedMembers() throws Exception {
|
||||||
|
doTest("idea/testData/structureView/fileStructure/InheritedMembers.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("SeveralClasses.kt")
|
||||||
|
public void testSeveralClasses() throws Exception {
|
||||||
|
doTest("idea/testData/structureView/fileStructure/SeveralClasses.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Simple.kt")
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
doTest("idea/testData/structureView/fileStructure/Simple.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user