File: CoroutinesMigrationTest.kt

package info (click to toggle)
kotlin 1.3.31%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 109,908 kB
  • sloc: java: 454,756; xml: 18,599; javascript: 10,452; sh: 513; python: 97; makefile: 69; ansic: 4
file content (54 lines) | stat: -rw-r--r-- 2,566 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
 * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
 * that can be found in the license/LICENSE.txt file.
 */

@file:Suppress("ObsoleteExperimentalCoroutines")

package test.coroutines.experimental.migration

import kotlin.coroutines.experimental.buildSequence as experimentalBuildSequence
import kotlin.coroutines.experimental.SequenceBuilder as ExperimentalSequenceBuilder
import kotlin.coroutines.experimental.Continuation as ExperimentalContinuation
import kotlin.coroutines.experimental.CoroutineContext as ExperimentalCoroutineContext
import kotlin.coroutines.experimental.AbstractCoroutineContextElement as ExperimentalAbstractCoroutineContextElement
import kotlin.coroutines.experimental.EmptyCoroutineContext as ExperimentalEmptyCoroutineContext
import kotlin.coroutines.experimental.ContinuationInterceptor as ExperimentalContinuationInterceptor
import kotlin.coroutines.experimental.intrinsics.COROUTINE_SUSPENDED as EXPERIMENTAL_COROUTINE_SUSPENDED
import kotlin.coroutines.experimental.migration.*
import kotlin.coroutines.*
import kotlin.test.*

/**
 * Tests on coroutines migrations utilities.
 */
class CoroutinesMigrationTest {
    @Test
    fun testContextMigration() {
        assertTrue(EmptyCoroutineContext === ExperimentalEmptyCoroutineContext.toCoroutineContext())
        assertTrue(ExperimentalEmptyCoroutineContext === EmptyCoroutineContext.toExperimentalCoroutineContext())
        MyElement().let { e ->
            assertTrue(e === e.toExperimentalCoroutineContext().toCoroutineContext())
            val ee = MyExperimentalElement()
            val ctx = (e.toExperimentalCoroutineContext() + ee).toCoroutineContext()
            assertTrue(e === ctx[MyElement.Key])
            assertTrue(ee === ctx.toExperimentalCoroutineContext()[MyExperimentalElement.Key])
        }
        MyExperimentalElement().let { ee ->
            assertTrue(ee === ee.toCoroutineContext().toExperimentalCoroutineContext())
            val e = MyElement()
            val ctx = (ee.toCoroutineContext() + e).toExperimentalCoroutineContext()
            assertTrue(ee === ctx[MyExperimentalElement.Key])
            assertTrue(e === ctx.toCoroutineContext()[MyElement.Key])
        }
    }

    class MyElement : AbstractCoroutineContextElement(Key) {
        companion object Key : CoroutineContext.Key<MyElement>
    }

    class MyExperimentalElement : ExperimentalAbstractCoroutineContextElement(Key) {
        companion object Key : ExperimentalCoroutineContext.Key<MyExperimentalElement>
    }
}