[K/N] Migrate misc runtime/ tests to new testing infra ^KT-61259
This commit is contained in:
committed by
Space Team
parent
364dcd30c8
commit
fd1579186f
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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 test.kotlinx.cinterop
|
||||
|
||||
import kotlinx.cinterop.*
|
||||
import kotlin.native.concurrent.*
|
||||
import kotlin.test.*
|
||||
|
||||
private class Box(val value: Int)
|
||||
|
||||
class StableRefTest {
|
||||
@Test
|
||||
fun crossThreadPassing() = withWorker {
|
||||
val future = execute(TransferMode.SAFE, {}) {
|
||||
StableRef.create(Box(42))
|
||||
}
|
||||
assertEquals(42, future.result.get().value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun crossThreadPassingAsPointer() = withWorker {
|
||||
val mainThreadRef = StableRef.create(Box(42))
|
||||
// Simulate this going through interop as raw C pointer.
|
||||
val pointerValue: Long = mainThreadRef.asCPointer().toLong()
|
||||
val future = execute(TransferMode.SAFE, { pointerValue }) {
|
||||
val pointer: COpaquePointer = it.toCPointer()!!
|
||||
val otherThreadRef: StableRef<Box> = pointer.asStableRef()
|
||||
otherThreadRef.get().value
|
||||
}
|
||||
assertEquals(42, future.result)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user