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