65244b4bea
Change the copyright from "JetBrains s.r.o." to "JetBrains s.r.o. and Kotlin Project contributors" Update only 2 lines copyright.
49 lines
1.6 KiB
Kotlin
49 lines
1.6 KiB
Kotlin
/*
|
|
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
*/
|
|
|
|
package test.collections
|
|
|
|
import test.*
|
|
import kotlin.reflect.KProperty1
|
|
import kotlin.test.*
|
|
|
|
public fun <T> compare(expected: T, actual: T, block: CompareContext<T>.() -> Unit) {
|
|
CompareContext(expected, actual).block()
|
|
}
|
|
|
|
public class CompareContext<out T>(public val expected: T, public val actual: T) {
|
|
|
|
public fun equals(message: String = "") {
|
|
assertEquals(expected, actual, message)
|
|
}
|
|
|
|
public fun <P> propertyEquals(property: KProperty1<in T, P>) {
|
|
propertyEquals(property.name, property)
|
|
}
|
|
|
|
public fun <P> propertyEquals(message: String = "", getter: T.() -> P) {
|
|
assertEquals(expected.getter(), actual.getter(), message)
|
|
}
|
|
|
|
public fun propertyFails(getter: T.() -> Unit) {
|
|
assertFailEquals({ expected.getter() }, { actual.getter() })
|
|
}
|
|
|
|
public inline fun <reified E : Throwable> propertyFailsWith(crossinline getter: T.() -> Unit) {
|
|
assertFailsWith<E> { expected.getter() }
|
|
assertFailsWith<E> { actual.getter() }
|
|
}
|
|
|
|
public fun <P> compareProperty(getter: T.() -> P, block: CompareContext<P>.() -> Unit) {
|
|
compare(expected.getter(), actual.getter(), block)
|
|
}
|
|
|
|
private fun assertFailEquals(expected: () -> Unit, actual: () -> Unit) {
|
|
val expectedFail = assertFails(expected)
|
|
val actualFail = assertFails(actual)
|
|
//assertEquals(expectedFail != null, actualFail != null)
|
|
assertTypeEquals(expectedFail, actualFail)
|
|
}
|
|
} |