| 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") |
| } |
| } |