[K/N] Add more tests on associated object handling ^KT-56233
This commit is contained in:
committed by
Space Team
parent
dbe14a0a90
commit
87da670319
@@ -0,0 +1,25 @@
|
||||
@file:OptIn(kotlin.ExperimentalStdlibApi::class)
|
||||
|
||||
import kotlin.native.internal.GC
|
||||
import kotlin.native.internal.gc.GCInfo
|
||||
import kotlin.native.internal.isPermanent
|
||||
import kotlin.test.*
|
||||
|
||||
private var _counter = 0
|
||||
|
||||
object Permanent {
|
||||
var counter
|
||||
get() = _counter
|
||||
set(value) {
|
||||
_counter = value
|
||||
}
|
||||
}
|
||||
|
||||
fun assertIsPermanent() {
|
||||
assertTrue(Permanent.isPermanent())
|
||||
}
|
||||
|
||||
fun stableRefsCount(): Long {
|
||||
GC.collect()
|
||||
return GC.lastGCInfo!!.rootSet.stableReferences
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import PermanentObjects
|
||||
|
||||
func testPermanentObjects() throws {
|
||||
PermanentObjects.KnlibraryKt.assertIsPermanent()
|
||||
let stableRefsBefore = PermanentObjects.KnlibraryKt.stableRefsCount()
|
||||
autoreleasepool {
|
||||
for i in 0..<1000 {
|
||||
PermanentObjects.Permanent().counter += 1
|
||||
}
|
||||
}
|
||||
let stableRefsAfter = PermanentObjects.KnlibraryKt.stableRefsCount()
|
||||
try assertEquals(actual: PermanentObjects.Permanent().counter, expected: 1000)
|
||||
try assertEquals(actual: stableRefsAfter, expected: stableRefsBefore)
|
||||
}
|
||||
|
||||
// -------- Execution of the test --------
|
||||
|
||||
class TestTests : SimpleTestProvider {
|
||||
override init() {
|
||||
super.init()
|
||||
|
||||
test("permanentObjects", testPermanentObjects)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user