/* * Copyright 2010-2022 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 kotlin.jdk8.jvm.optionals.test import java.util.Optional import kotlin.test.* import kotlin.jvm.optionals.* class OptionalsTest { @Test fun getOrNull() { assertEquals("foo", Optional.of("foo").getOrNull()) assertNull(Optional.empty().getOrNull()) } @Test fun getOrDefault() { assertEquals("foo", Optional.of("foo").getOrDefault("bar")) assertEquals("bar", Optional.empty().getOrDefault("bar")) // Return type can be a supertype assertNull(Optional.empty().getOrDefault(null)) assertEquals(5.0, Optional.empty().getOrDefault(5.0)) } @Test fun getOrElse() { assertEquals("foo", Optional.of("foo").getOrElse { throw AssertionError() }) assertEquals("bar", Optional.empty().getOrElse { "bar" }) // Return type can be a supertype assertNull(Optional.empty().getOrElse { null }) assertEquals(5.0, Optional.empty().getOrElse { 5.0 }) } @Test fun getOrElse_propagatesException() { val e = assertFailsWith { Optional.empty().getOrElse { throw IllegalStateException("ran") } } assertEquals("ran", e.message) } @Test fun optionalToCollection_presentAddsValue() { val dest = mutableListOf() Optional.of("foo").toCollection(dest) assertEquals(listOf("foo"), dest) } @Test fun optionalToCollection_emptyAddsNothing() { val dest = mutableListOf() Optional.empty().toCollection(dest) assertEquals(emptyList(), dest) } @Test fun optionalToList() { assertEquals(listOf("foo"), Optional.of("foo").toList()) assertEquals(emptyList(), Optional.empty().toList()) // List element type can be a supertype assertEquals(listOf("foo"), Optional.of("foo").toList()) } @Test fun optionalToSet() { assertEquals(setOf("foo"), Optional.of("foo").toSet()) assertEquals(emptySet(), Optional.empty().toSet()) // List element type can be a supertype assertEquals(setOf("foo"), Optional.of("foo").toSet()) } @Test fun optionalAsSequence() { assertEquals(listOf("foo"), Optional.of("foo").asSequence().toList()) assertEquals(emptyList(), Optional.empty().asSequence().toList()) // List element type can be a supertype assertEquals(listOf("foo"), Optional.of("foo").asSequence().toList()) } }