Modification trackers increment highlighting test
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.highlighter
|
||||
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.impl.PsiModificationTrackerImpl
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import com.intellij.testFramework.PlatformTestUtil
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||
|
||||
class HighlightingPerformanceTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
private val text = """
|
||||
fun test(a: String, b: ArrayList<java.util.Date>) {
|
||||
println(a + b)
|
||||
}
|
||||
""".trimIndent()
|
||||
|
||||
fun testModificationCountInc() {
|
||||
myFixture.configureByText("temp.kt", text)
|
||||
highlight()
|
||||
|
||||
val tracker = PsiManager.getInstance(myFixture.project).modificationTracker as PsiModificationTrackerImpl
|
||||
|
||||
PlatformTestUtil.assertTiming("Update local cache", 100) { // actual timing is ~55
|
||||
tracker.modificationCount.inc()
|
||||
highlight()
|
||||
}
|
||||
}
|
||||
|
||||
fun testOutOfBlockModificationCountInc() {
|
||||
myFixture.configureByText("temp.kt", text)
|
||||
highlight()
|
||||
|
||||
val tracker = PsiManager.getInstance(myFixture.project).modificationTracker as PsiModificationTrackerImpl
|
||||
|
||||
PlatformTestUtil.assertTiming("Update all trackers", 200) { // actual timing is ~165
|
||||
tracker.incOutOfCodeBlockModificationCounter()
|
||||
highlight()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
|
||||
|
||||
private fun highlight() {
|
||||
myFixture.checkHighlighting(true, false, true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user