/* * 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 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(property: KProperty1) { propertyEquals(property.name, property) } 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 inline fun propertyFailsWith(crossinline getter: T.() -> Unit) { assertFailsWith { expected.getter() } assertFailsWith { 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 = assertFails(expected) val actualFail = assertFails(actual) //assertEquals(expectedFail != null, actualFail != null) assertTypeEquals(expectedFail, actualFail) } }