43 lines
878 B
Kotlin
43 lines
878 B
Kotlin
package test.standard
|
|
|
|
import kotlin.*
|
|
import kotlin.test.*
|
|
import org.junit.Test as test
|
|
|
|
class GetOrElseTest {
|
|
val v1: String? = "hello"
|
|
val v2: String? = null
|
|
var counter = 0
|
|
|
|
test fun defaultValue() {
|
|
assertEquals("hello", v1?: "bar")
|
|
|
|
expect("hello") {
|
|
v1?: "bar"
|
|
}
|
|
}
|
|
|
|
test fun defaultValueOnNull() {
|
|
assertEquals("bar", v2?: "bar")
|
|
|
|
expect("bar") {
|
|
v2?: "bar"
|
|
}
|
|
}
|
|
|
|
fun calculateBar(): String {
|
|
counter++
|
|
return "bar"
|
|
}
|
|
|
|
test fun lazyDefaultValue() {
|
|
counter = 0
|
|
|
|
assertEquals("hello", v1?: calculateBar())
|
|
assertEquals(counter, 0, "counter should not be incremented yet")
|
|
|
|
assertEquals("bar", v2?: calculateBar())
|
|
assertEquals(counter, 1, "counter should be incremented in the default function")
|
|
}
|
|
}
|