toString() method for data classes and fake implementation for hashCode/equals

This commit is contained in:
Alex Tkachman
2012-09-16 15:56:48 +03:00
parent e317764a88
commit 58af365eb2
13 changed files with 236 additions and 40 deletions
@@ -0,0 +1,14 @@
data class A(val x: Array<Int>?, val y: IntArray?)
fun box(): String {
var ts = A(Array<Int>(2, {it}), IntArray(3)).toString()
if(ts != "A{x=[0, 1], y=[0, 0, 0]}") return ts
ts = A(null, IntArray(3)).toString()
if(ts != "A{x=null, y=[0, 0, 0]}") return ts
ts = A(null, null).toString()
if(ts != "A{x=null, y=null}") return ts
return "OK"
}
@@ -0,0 +1,11 @@
data class A(var string: String)
fun box(): String {
val a = A("Fail")
if(a.toString() != "A{string=Fail}") return "fail"
a.string = "OK"
if("$a" != "A{string=OK}") return a.toString()
return "OK"
}
@@ -0,0 +1,11 @@
data class A<T>(val x: T)
fun box(): String {
val a = A(42)
if ("$a" != "A{x=42}") return "$a"
val b = A(239.toLong())
if ("$b" != "A{x=239}") return "$b"
return "OK"
}
@@ -0,0 +1,7 @@
data class A(var x: Int, y: Int, val z: Int?)
fun box(): String {
val a = A(1, 2, null)
if("$a" != "A{x=1, z=null}") return "$a"
return "OK"
}
@@ -0,0 +1,11 @@
open data class A(open val x: String)
class B : A("OK") {
override val x: String = "Fail"
}
fun foo(a: A) = a
fun box(): String {
return if ("${foo(B())}" == "A{x=OK}") "OK" else "fail"
}
@@ -0,0 +1,6 @@
data class A(val x: Unit)
fun box(): String {
val a = A(#())
return if ("$a" == "A{x=()}") "OK" else "$a"
}