[Commonizer] Adapt ExtensionReceiverCommonizerTest

^KT-48288
This commit is contained in:
sebastian.sellmair
2021-09-13 09:31:14 +02:00
committed by Space
parent 35a29acdc7
commit cdd917bd0b
3 changed files with 55 additions and 41 deletions
@@ -11,7 +11,7 @@ class ExtensionReceiverCommonizer(
private val typeCommonizer: TypeCommonizer private val typeCommonizer: TypeCommonizer
) : NullableContextualSingleInvocationCommonizer<CirExtensionReceiver?, ExtensionReceiverCommonizer.Commonized> { ) : NullableContextualSingleInvocationCommonizer<CirExtensionReceiver?, ExtensionReceiverCommonizer.Commonized> {
class Commonized(val receiver: CirExtensionReceiver?) { data class Commonized(val receiver: CirExtensionReceiver?) {
companion object { companion object {
val NULL = Commonized(null) val NULL = Commonized(null)
} }
@@ -5,52 +5,61 @@
package org.jetbrains.kotlin.commonizer.core package org.jetbrains.kotlin.commonizer.core
import org.jetbrains.kotlin.commonizer.cir.CirExtensionReceiver import org.jetbrains.kotlin.commonizer.AbstractInlineSourcesCommonizationTest
import org.jetbrains.kotlin.commonizer.core.ExtensionReceiverCommonizer.Commonized
import org.jetbrains.kotlin.commonizer.utils.MOCK_CLASSIFIERS import org.jetbrains.kotlin.commonizer.utils.MOCK_CLASSIFIERS
import org.jetbrains.kotlin.commonizer.utils.mockClassType import org.jetbrains.kotlin.commonizer.utils.mockExtensionReceiver
import org.junit.Test
class ExtensionReceiverCommonizerTest : AbstractCommonizerTest<CirExtensionReceiver?, ExtensionReceiverCommonizer.Commonized?>() { class ExtensionReceiverCommonizerTest : AbstractInlineSourcesCommonizationTest() {
@Test private val commonizer = ExtensionReceiverCommonizer(TypeCommonizer(MOCK_CLASSIFIERS))
fun nullReceiver() = doTestSuccess(
expected = null,
null, null, null
)
@Test fun `test null receiver`() {
fun sameReceiver() = doTestSuccess( assertEquals(
expected = ExtensionReceiverCommonizer.Commonized(mockExtensionReceiver("kotlin/String")), Commonized(null), commonizer(listOf(null, null, null)),
mockExtensionReceiver("kotlin/String"), )
mockExtensionReceiver("kotlin/String"), }
mockExtensionReceiver("kotlin/String")
)
@Test(expected = IllegalCommonizerStateException::class) fun `test same receiver`() {
fun differentReceivers() = doTestFailure( assertEquals(
mockExtensionReceiver("kotlin/String"), Commonized(mockExtensionReceiver("kotlin/String")),
mockExtensionReceiver("kotlin/String"), commonizer(
mockExtensionReceiver("kotlin/Int") listOf(
) mockExtensionReceiver("kotlin/String"),
mockExtensionReceiver("kotlin/String"),
mockExtensionReceiver("kotlin/String")
)
)
)
}
@Test(expected = IllegalCommonizerStateException::class) fun `test different receiver`() {
fun nullAndNonNullReceivers1() = doTestFailure( assertEquals(
mockExtensionReceiver("kotlin/String"), null, commonizer(
mockExtensionReceiver("kotlin/String"), listOf(
null mockExtensionReceiver("kotlin/String"),
) mockExtensionReceiver("kotlin/String"),
mockExtensionReceiver("kotlin/Int")
)
)
)
}
@Test(expected = IllegalCommonizerStateException::class) fun `test null and non-null receivers - 1`() {
fun nullAndNonNullReceivers2() = doTestFailure( assertEquals(
null, null, commonizer(
null, listOf(
mockExtensionReceiver("kotlin/String") mockExtensionReceiver("kotlin/String"),
) mockExtensionReceiver("kotlin/String"),
null
)
)
)
}
override fun createCommonizer() = ExtensionReceiverCommonizer(TypeCommonizer(MOCK_CLASSIFIERS)).asCommonizer() fun `test null and non-null receivers - 2`() {
assertEquals(
null, commonizer(listOf(null, null, mockExtensionReceiver("kotlin/String")))
)
}
} }
private fun mockExtensionReceiver(receiverClassId: String) = CirExtensionReceiver(
annotations = emptyList(),
type = mockClassType(receiverClassId)
)
@@ -46,6 +46,11 @@ internal fun mockClassType(
isMarkedNullable = nullable isMarkedNullable = nullable
) )
internal fun mockExtensionReceiver(receiverClassId: String) = CirExtensionReceiver(
annotations = emptyList(),
type = mockClassType(receiverClassId)
)
private fun createValidClassifierId(classifierId: String): CirEntityId { private fun createValidClassifierId(classifierId: String): CirEntityId {
check(classifierId.none { it == '\\' || it == '?' }) { "Malformed classifier ID: $classifierId" } check(classifierId.none { it == '\\' || it == '?' }) { "Malformed classifier ID: $classifierId" }
return CirEntityId.create(classifierId) return CirEntityId.create(classifierId)