
jvmMain.io.kotest.equals.ReflectionUsingFieldsEquality.kt Maven / Gradle / Ivy
package io.kotest.equals
import io.kotest.matchers.equality.beEqualToUsingFields
import kotlin.reflect.KProperty
class ReflectionUsingFieldsEquality(
private val fields: Array>
) : Equality {
override fun name(): String {
return "reflection equality using fields ${fields.map { it.name }}"
}
override fun verify(actual: T, expected: T): EqualityResult {
val result = beEqualToUsingFields(expected, *fields).test(actual)
if (result.passed()) return EqualityResult.equal(actual, expected, this)
return EqualityResult.notEqual(actual, expected, this).withDetails { result.failureMessage() }
}
override fun toString(): String = name()
}
fun Equality.Companion.byReflectionUsingFields(vararg fields: KProperty<*>) =
ReflectionUsingFieldsEquality(fields)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy