1*3a22c0a3SAlix /* <lambda>null2*3a22c0a3SAlix * * Copyright 2022 Google LLC. All rights reserved. 3*3a22c0a3SAlix * 4*3a22c0a3SAlix * Licensed under the Apache License, Version 2.0 (the License); 5*3a22c0a3SAlix * you may not use this file except in compliance with the License. 6*3a22c0a3SAlix * You may obtain a copy of the License at 7*3a22c0a3SAlix * 8*3a22c0a3SAlix * http://www.apache.org/licenses/LICENSE-2.0 9*3a22c0a3SAlix * 10*3a22c0a3SAlix * Unless required by applicable law or agreed to in writing, software 11*3a22c0a3SAlix * distributed under the License is distributed on an "AS IS" BASIS, 12*3a22c0a3SAlix * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*3a22c0a3SAlix * See the License for the specific language governing permissions and 14*3a22c0a3SAlix * limitations under the License. 15*3a22c0a3SAlix */ 16*3a22c0a3SAlix 17*3a22c0a3SAlix package ijar 18*3a22c0a3SAlix 19*3a22c0a3SAlix import com.google.common.truth.Truth.assertThat 20*3a22c0a3SAlix import kotlin.coroutines.Continuation 21*3a22c0a3SAlix import kotlin.coroutines.EmptyCoroutineContext 22*3a22c0a3SAlix import kotlin.coroutines.createCoroutine 23*3a22c0a3SAlix import kotlin.coroutines.startCoroutine 24*3a22c0a3SAlix import kotlin.coroutines.resume 25*3a22c0a3SAlix import org.junit.Test 26*3a22c0a3SAlix import org.junit.runner.RunWith 27*3a22c0a3SAlix import org.junit.runners.JUnit4 28*3a22c0a3SAlix 29*3a22c0a3SAlix /** Tests exercising suspend functions. */ 30*3a22c0a3SAlix @RunWith(JUnit4::class) 31*3a22c0a3SAlix class SuspendTest { 32*3a22c0a3SAlix 33*3a22c0a3SAlix /** Regression test for b/143465893. */ 34*3a22c0a3SAlix @Test 35*3a22c0a3SAlix fun testSuspendDoubleInline() { 36*3a22c0a3SAlix suspend fun doubleInlineExample(): String { 37*3a22c0a3SAlix return doubleInline("b") { "a" } 38*3a22c0a3SAlix } 39*3a22c0a3SAlix 40*3a22c0a3SAlix // Run doubleInlineExample avoiding dependency on kotlinx.coroutines 41*3a22c0a3SAlix var result: Result<String>? = null 42*3a22c0a3SAlix ::doubleInlineExample.startCoroutine(Continuation(EmptyCoroutineContext, { r -> result = r })) 43*3a22c0a3SAlix 44*3a22c0a3SAlix assertThat(result!!.getOrThrow()).isEqualTo("ab") 45*3a22c0a3SAlix } 46*3a22c0a3SAlix } 47