xref: /aosp_15_r20/external/bazelbuild-kotlin-rules/tests/jvm/java/ijar/SuspendTest.kt (revision 3a22c0a33dd99bcca39a024d43e6fbcc55c2806e)
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