All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.io.kotest.assertions.eq.Eq.kt Maven / Gradle / Ivy

package io.kotest.assertions.eq

import kotlin.math.exp

/**
 * A [Eq] typeclass compares two values for equality, returning an [AssertionError] if they are
 * not equal, or null if they are equal.
 *
 * This equality typeclass is at the heart of the shouldBe matcher.
 */
interface Eq {
   fun equals(actual: T, expected: T): Throwable?
}

/**
 * Locates the applicable [Eq] for the inputs, and invokes it, returning the error if any.
 */
fun  eq(actual: T, expected: T): Throwable? = when {
   actual is Map<*, *> && expected is Map<*, *> -> MapEq.equals(actual, expected)
   actual is Throwable && expected is Throwable -> ThrowableEq.equals(actual, expected)
   actual is Regex && expected is Regex -> RegexEq.equals(actual, expected)
   actual is String && expected is String -> StringEq.equals(actual, expected)
   actual is Number && expected is Number -> NumberEq.equals(actual, expected)
   else -> DefaultEq.equals(actual as Any, expected as Any)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy