diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index 651e75282ce..42d5c0c2ba2 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -3805,6 +3805,10 @@ createInterop("cunsupported") { it.defFile 'interop/basics/cunsupported.def' } +createInterop("ctoKString") { + it.defFile 'interop/basics/ctoKString.def' +} + createInterop("ctypes") { it.defFile 'interop/basics/ctypes.def' } @@ -4119,6 +4123,12 @@ interopTest("interop_unsupported") { interop = 'cunsupported' } +interopTest("interop_toKString") { + disabled = (project.testTarget == 'wasm32') // No interop for wasm yet. + source = "interop/basics/toKString.kt" + interop = 'ctoKString' +} + interopTest("interop_types") { disabled = (project.testTarget == 'wasm32') // No interop for wasm yet. source = "interop/basics/types.kt" diff --git a/kotlin-native/backend.native/tests/interop/basics/ctoKString.def b/kotlin-native/backend.native/tests/interop/basics/ctoKString.def new file mode 100644 index 00000000000..b644795ed8e --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/basics/ctoKString.def @@ -0,0 +1,6 @@ +--- +const char* empty() { return ""; } +const char* foo() { return "foo"; } +const char* kuku() { return "куку"; } +const char* invalid_utf8() { return "\x85\xAF"; } +const char* zero_in_the_middle() { return "before zero\0after zero"; } diff --git a/kotlin-native/backend.native/tests/interop/basics/toKString.kt b/kotlin-native/backend.native/tests/interop/basics/toKString.kt new file mode 100644 index 00000000000..69a49b763e6 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/basics/toKString.kt @@ -0,0 +1,12 @@ +import ctoKString.* +import kotlinx.cinterop.* +import kotlin.native.* +import kotlin.test.* + +fun main() { + assertEquals("", empty()!!.toKStringFromUtf8()) + assertEquals("foo", foo()!!.toKStringFromUtf8()) + assertEquals("куку", kuku()!!.toKStringFromUtf8()) + assertEquals("\uFFFD\uFFFD", invalid_utf8()!!.toKStringFromUtf8()) + assertEquals("before zero", zero_in_the_middle()!!.toKStringFromUtf8()) +}