
jvmMain.io.mockk.impl.annotations.InjectionHelpers.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mockk-jvm Show documentation
Show all versions of mockk-jvm Show documentation
Mocking library for Kotlin
The newest version!
package io.mockk.impl.annotations
import java.lang.reflect.InvocationTargetException
import kotlin.reflect.KMutableProperty1
import kotlin.reflect.KProperty1
import kotlin.reflect.jvm.isAccessible
import kotlin.reflect.jvm.javaField
internal object InjectionHelpers {
@Suppress("UNCHECKED_CAST")
fun KProperty1<*, *>.getAny(obj: Any): Any? {
try {
isAccessible = true
} catch (ex: Throwable) {
// skip
}
return (this.getter as KProperty1.Getter)(obj)
}
fun KProperty1<*, *>.getAnyIfLateNull(obj: Any): Any? {
try {
return getAny(obj)
} catch (ex: InvocationTargetException) {
if (isLateinit &&
ex.cause != null &&
ex.cause is UninitializedPropertyAccessException
) {
return null
}
throw ex
}
}
@Suppress("UNCHECKED_CAST")
fun KMutableProperty1<*, *>.setAny(obj: Any, value: Any?) {
try {
isAccessible = true
} catch (ex: Throwable) {
// skip
}
return (this.setter as KMutableProperty1.Setter).invoke(obj, value)
}
fun KProperty1<*, *>.setImmutableAny(obj: Any, value: Any?) {
val javaField = this.javaField ?: return
try {
javaField.isAccessible = true
} catch (ex: Throwable) {
// skip
}
javaField.set(obj, value)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy