Add test cases to check types of chain operations
This commit is contained in:
committed by
Yan Zhulanow
parent
e61fbb16c5
commit
502cb1e456
@@ -0,0 +1,41 @@
|
|||||||
|
package com.intellij.debugger.streams.kotlin.psi
|
||||||
|
|
||||||
|
import com.intellij.debugger.streams.kotlin.KotlinPsiChainBuilderTestCase
|
||||||
|
import com.intellij.debugger.streams.trace.impl.handler.type.GenericType
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Vitaliy.Bibaev
|
||||||
|
*/
|
||||||
|
abstract class TypedChainTestCase(relativePath: String) : KotlinPsiChainBuilderTestCase(relativePath) {
|
||||||
|
|
||||||
|
protected fun doTest(producerAfterType: GenericType,
|
||||||
|
vararg intermediateAfterTypes: GenericType) {
|
||||||
|
val elementAtCaret = configureAndGetElementAtCaret()
|
||||||
|
assertNotNull(elementAtCaret)
|
||||||
|
val chains = chainBuilder.build(elementAtCaret)
|
||||||
|
assertFalse(chains.isEmpty())
|
||||||
|
val chain = chains[0]
|
||||||
|
val intermediateCalls = chain.intermediateCalls
|
||||||
|
assertEquals(intermediateAfterTypes.size, intermediateCalls.size)
|
||||||
|
assertEquals(producerAfterType, chain.qualifierExpression.typeAfter)
|
||||||
|
|
||||||
|
if (intermediateAfterTypes.isNotEmpty()) {
|
||||||
|
assertEquals(producerAfterType, intermediateCalls[0].typeBefore)
|
||||||
|
for (i in 0 until intermediateAfterTypes.size - 1) {
|
||||||
|
assertEquals(intermediateAfterTypes[i], intermediateCalls[i].typeAfter)
|
||||||
|
assertEquals(intermediateAfterTypes[i], intermediateCalls[i + 1].typeBefore)
|
||||||
|
}
|
||||||
|
|
||||||
|
val lastAfterType = intermediateAfterTypes[intermediateAfterTypes.size - 1]
|
||||||
|
assertEquals(lastAfterType, chain.terminationCall.typeBefore)
|
||||||
|
val lastCall = intermediateCalls[intermediateCalls.size - 1]
|
||||||
|
assertEquals(lastAfterType, lastCall.typeAfter)
|
||||||
|
} else {
|
||||||
|
assertEquals(producerAfterType, chain.terminationCall.typeBefore)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun doTest() {
|
||||||
|
fail("Use doTest(producerAfterType, vararg intermediateAfterTypes)")
|
||||||
|
}
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
package com.intellij.debugger.streams.kotlin.psi.collection
|
||||||
|
|
||||||
|
import com.intellij.debugger.streams.kotlin.lib.KotlinCollectionSupportProvider
|
||||||
|
import com.intellij.debugger.streams.kotlin.psi.TypedChainTestCase
|
||||||
|
import com.intellij.debugger.streams.wrapper.StreamChainBuilder
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Vitaliy.Bibaev
|
||||||
|
*/
|
||||||
|
class TypedCollectionChainTest : TypedChainTestCase("collection/positive/types") {
|
||||||
|
override val kotlinChainBuilder: StreamChainBuilder = KotlinCollectionSupportProvider().chainBuilder
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.intellij.debugger.streams.kotlin.psi.java
|
||||||
|
|
||||||
|
import com.intellij.debugger.streams.kotlin.psi.TypedChainTestCase
|
||||||
|
import com.intellij.debugger.streams.lib.impl.StandardLibrarySupportProvider
|
||||||
|
import com.intellij.debugger.streams.wrapper.StreamChainBuilder
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Vitaliy.Bibaev
|
||||||
|
*/
|
||||||
|
class TypedJavaChainTest : TypedChainTestCase("streams/positive/types") {
|
||||||
|
override val kotlinChainBuilder: StreamChainBuilder = StandardLibrarySupportProvider().chainBuilder
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user