Test equals/hashCode/toString for function references

This commit is contained in:
Alexander Udalov
2015-07-10 16:27:11 +03:00
parent f8815d9450
commit 16b5b95556
5 changed files with 73 additions and 7 deletions
@@ -0,0 +1,31 @@
import kotlin.test.*
fun top() = 42
fun Int.intExt(): Int = this
class A {
fun mem() {}
}
class B {
fun mem() {}
}
fun checkEqual(x: Any, y: Any) {
assertEquals(x, y)
assertEquals(x.hashCode(), y.hashCode(), "Elements are equal but their hash codes are not: ${x.hashCode()} != ${y.hashCode()}")
}
fun box(): String {
checkEqual(::top, ::top)
checkEqual(Int::intExt, Int::intExt)
checkEqual(A::mem, A::mem)
assertFalse(::top == Int::intExt)
assertFalse(::top == A::mem)
assertFalse(A::mem == B::mem)
return "OK"
}
@@ -0,0 +1,24 @@
package test
import kotlin.test.assertEquals
fun top() = 42
fun String.ext(): Int = 0
fun IntRange?.ext2(): Array<Int?> = arrayOfNulls(0)
class A {
fun mem(): String = ""
}
fun assertToString(s: String, x: Any) {
assertEquals(s, x.toString())
}
fun box(): String {
assertToString("fun top(): kotlin.Int", ::top)
assertToString("fun kotlin.String.ext(): kotlin.Int", String::ext)
assertToString("fun kotlin.IntRange?.ext2(): kotlin.Array<kotlin.Int?>", IntRange::ext2)
assertToString("fun test.A.mem(): kotlin.String", A::mem)
return "OK"
}