[K/N][Tests] Migrate framework and objcexport tests

^KT-61259
This commit is contained in:
Vladimir Sukharev
2024-01-22 20:12:14 +01:00
committed by Space Team
parent f00a145dd7
commit 025771460c
136 changed files with 698 additions and 416 deletions
@@ -0,0 +1,60 @@
/*
* Copyright 2010-2021 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.
*/
@file:OptIn(kotlin.experimental.ExperimentalNativeApi::class)
fun thrower() : Nothing {
throw Exception()
}
fun getStackTrace() : List<String> {
try {
thrower()
} catch (e: Exception) {
return e.getStackTrace().toList()
}
return emptyList()
}
open class Foo {
open fun foo(): List<String> { return emptyList() }
}
private class Bar : Foo() {
override fun foo(): List<String> = getStackTrace()
}
object Object {
var trace: List<String> = emptyList()
init {
trace = getStackTrace()
}
}
class WithCompanion {
companion object {
var trace: List<String> = emptyList()
init {
trace = getStackTrace()
}
}
}
enum class E {
A {
init {
trace = getStackTrace()
}
};
var trace: List<String> = emptyList()
}
fun createBar(): Foo = Bar()
fun use(foo: Foo): List<String> {
return foo.foo()
}
@@ -0,0 +1,54 @@
import Foundation
import StacktraceBridges
class Bar : Foo {
override func foo() -> Array<String> {
return StacktraceBridgesKt.getStackTrace()
}
}
func testDirectObjc2Kotlin() throws {
let trace = StacktraceBridgesKt.getStackTrace()
try assertTrue(trace[4].contains("objc2kotlin_kfun:#getStackTrace(){}kotlin.collections.List<kotlin.String>"))
}
func testVirtualObjc2Kotlin() throws {
let trace = StacktraceBridgesKt.createBar().foo()
try assertTrue(trace[6].contains("objc2kotlin_virtual_kfun:Foo#foo(){}kotlin.collections.List<kotlin.String>"))
}
func testKotlin2Objc() throws {
let trace = StacktraceBridgesKt.use(foo: Bar())
try assertTrue(trace[8].contains("kotlin2objc_kfun:Foo#foo(){}kotlin.collections.List<kotlin.String>"))
}
func testCompanionObject() throws {
let trace = WithCompanion.companion.trace
try assertTrue(trace[8].contains("objc2kotlin_kclass:WithCompanion#companion"))
}
func testStandaloneObject() throws {
let trace = Object.shared.trace
try assertTrue(trace[8].contains("objc2kotlin_kclass:Object#shared"))
}
func testEnumEntry() throws {
let trace = E.a.trace
try assertTrue(trace[8].contains("objc2kotlin_kclass:E.A"))
}
class StacktraceBridgesTests : TestProvider {
var tests: [TestCase] = []
init() {
providers.append(self)
tests = [
TestCase(name: "Direct objc2kotlin", method: withAutorelease(testDirectObjc2Kotlin)),
TestCase(name: "Virtual objc2kotlin", method: withAutorelease(testVirtualObjc2Kotlin)),
TestCase(name: "kotlin2objc", method: withAutorelease(testKotlin2Objc)),
TestCase(name: "Companion object", method: withAutorelease(testCompanionObject)),
TestCase(name: "Standalone object", method: withAutorelease(testStandaloneObject)),
TestCase(name: "Enum entry", method: withAutorelease(testEnumEntry)),
]
}
}