f624800b84
I was forced to manually do update the following files, because otherwise they would be ignored according .gitignore settings. Probably they should be deleted from repo. Interop/.idea/compiler.xml Interop/.idea/gradle.xml Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_runtime_1_0_3.xml Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_0_3.xml Interop/.idea/modules.xml Interop/.idea/modules/Indexer/Indexer.iml Interop/.idea/modules/Runtime/Runtime.iml Interop/.idea/modules/StubGenerator/StubGenerator.iml backend.native/backend.native.iml backend.native/bc.frontend/bc.frontend.iml backend.native/cli.bc/cli.bc.iml backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt backend.native/tests/link/lib/foo.kt backend.native/tests/link/lib/foo2.kt backend.native/tests/teamcity-test.property
71 lines
1.8 KiB
Kotlin
71 lines
1.8 KiB
Kotlin
/*
|
|
* 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 file.
|
|
*/
|
|
|
|
import kotlin.test.*
|
|
import kotlinx.cinterop.*
|
|
import ccallbacksAndVarargs.*
|
|
|
|
fun main() {
|
|
testStructCallbacks()
|
|
testVarargs()
|
|
testCallableReferences()
|
|
}
|
|
|
|
fun testStructCallbacks() {
|
|
assertEquals(42, getX(staticCFunction { -> cValue<S> { x = 42 } }))
|
|
applyCallback(cValue { x = 17 }, staticCFunction { it: CValue<S> ->
|
|
assertEquals(17, it.useContents { x })
|
|
})
|
|
|
|
assertEquals(66, makeS(66, 111).useContents { x })
|
|
}
|
|
|
|
fun testVarargs() {
|
|
assertEquals(E.ONE, makeE(1))
|
|
|
|
getVarargs(
|
|
0,
|
|
true,
|
|
2.toByte(),
|
|
Short.MIN_VALUE,
|
|
42,
|
|
Long.MAX_VALUE,
|
|
3.14f,
|
|
2.71,
|
|
0x1234ABCDL.toCPointer<COpaque>(),
|
|
UByte.MAX_VALUE,
|
|
22.toUShort(),
|
|
111u,
|
|
ULong.MAX_VALUE,
|
|
E.TWO,
|
|
cValue<S> { x = 15 },
|
|
null
|
|
).useContents {
|
|
assertEquals(1, a1)
|
|
assertEquals(2.toByte(), a2)
|
|
assertEquals(Short.MIN_VALUE, a3)
|
|
assertEquals(42, a4)
|
|
assertEquals(Long.MAX_VALUE, a5)
|
|
assertEquals(3.14f, a6)
|
|
assertEquals(2.71, a7)
|
|
assertEquals(0x1234ABCDL, a8.toLong())
|
|
assertEquals(UByte.MAX_VALUE, a9)
|
|
assertEquals(22.toUShort(), a10)
|
|
assertEquals(111u, a11)
|
|
assertEquals(ULong.MAX_VALUE, a12)
|
|
assertEquals(E.TWO, a13)
|
|
assertEquals(15, a14.x)
|
|
assertEquals(null, a15)
|
|
}
|
|
}
|
|
|
|
fun testCallableReferences() {
|
|
val sumRef = ::sum
|
|
assertEquals(3, sumRef(1, 2))
|
|
|
|
val sumPtr = staticCFunction(::sum)
|
|
assertEquals(7, sumPtr(3, 4))
|
|
}
|