package test.collections import kotlin.test.* public fun compare(expected: T, actual: T, block:CompareContext.() -> Unit) { CompareContext(expected, actual).block() } public class CompareContext(public val expected: T, public val actual: T) { public fun equals(message: String = "") { assertEquals(expected, actual, message) } public fun propertyEquals

(message: String = "", getter: T.() -> P) { assertEquals(expected.getter(), actual.getter(), message) } public fun propertyFails(getter: T.() -> Unit) { assertFailEquals({expected.getter()}, {actual.getter()}) } public fun compareProperty

(getter: T.() -> P, block: CompareContext

.() -> Unit) { compare(expected.getter(), actual.getter(), block) } private fun assertFailEquals(expected: () -> Unit, actual: () -> Unit) { val expectedFail = fails(expected) val actualFail = fails(actual) //assertEquals(expectedFail != null, actualFail != null) assertTypeEquals(expectedFail, actualFail) } }