Fix running stdlib tests in worker on Native
Add `@SharedImmutable` or `@ThreadLocal` where required.
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package test.comparisons
|
package test.comparisons
|
||||||
|
|
||||||
|
import kotlin.native.concurrent.SharedImmutable
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
data class Item(val name: String, val rating: Int) : Comparable<Item> {
|
data class Item(val name: String, val rating: Int) : Comparable<Item> {
|
||||||
@@ -13,6 +14,7 @@ data class Item(val name: String, val rating: Int) : Comparable<Item> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SharedImmutable
|
||||||
val STRING_CASE_INSENSITIVE_ORDER: Comparator<String> =
|
val STRING_CASE_INSENSITIVE_ORDER: Comparator<String> =
|
||||||
compareBy { it: String -> it.toUpperCase() }.thenBy { it.toLowerCase() }.thenBy { it }
|
compareBy { it: String -> it.toUpperCase() }.thenBy { it.toLowerCase() }.thenBy { it }
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package test.properties.delegation.references
|
|||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
import kotlin.internal.*
|
import kotlin.internal.*
|
||||||
|
import kotlin.native.concurrent.ThreadLocal
|
||||||
import kotlin.random.*
|
import kotlin.random.*
|
||||||
|
|
||||||
open class Data(val stringVal: String, var intVar: Int, var builderVar: StringBuilder = StringBuilder("default"))
|
open class Data(val stringVal: String, var intVar: Int, var builderVar: StringBuilder = StringBuilder("default"))
|
||||||
@@ -16,25 +17,33 @@ var Data.displacedVar: Int
|
|||||||
get() = intVar + 2
|
get() = intVar + 2
|
||||||
set(value) { intVar = value - 2 }
|
set(value) { intVar = value - 2 }
|
||||||
|
|
||||||
|
@ThreadLocal
|
||||||
val data = Data("bound string", 42)
|
val data = Data("bound string", 42)
|
||||||
|
|
||||||
val topVal: Double get() = 3.14
|
val topVal: Double get() = 3.14
|
||||||
|
@ThreadLocal
|
||||||
var topVar: ULong = 0xFFFFUL
|
var topVar: ULong = 0xFFFFUL
|
||||||
|
|
||||||
// top-level properties
|
// top-level properties
|
||||||
|
|
||||||
// val to bound val
|
// val to bound val
|
||||||
|
@ThreadLocal
|
||||||
val tlValBoundVal by data::stringVal
|
val tlValBoundVal by data::stringVal
|
||||||
// val to bound var
|
// val to bound var
|
||||||
|
@ThreadLocal
|
||||||
val tlValBoundVar by data::intVar
|
val tlValBoundVar by data::intVar
|
||||||
// var to bound var
|
// var to bound var
|
||||||
|
@ThreadLocal
|
||||||
var tlVarBoundVar by data::intVar
|
var tlVarBoundVar by data::intVar
|
||||||
|
|
||||||
// val to top-level val
|
// val to top-level val
|
||||||
|
@ThreadLocal
|
||||||
val tlValTopLevelVal by ::topVal
|
val tlValTopLevelVal by ::topVal
|
||||||
// val to top-level var
|
// val to top-level var
|
||||||
|
@ThreadLocal
|
||||||
val tlValTopLevelVar by ::topVar
|
val tlValTopLevelVar by ::topVar
|
||||||
// var to top-level var
|
// var to top-level var
|
||||||
|
@ThreadLocal
|
||||||
var tlVarTopLevelVar by ::topVar
|
var tlVarTopLevelVar by ::topVar
|
||||||
|
|
||||||
// member properties
|
// member properties
|
||||||
@@ -73,36 +82,50 @@ class DataExt : Data("member string", -1) {
|
|||||||
|
|
||||||
// extension properties
|
// extension properties
|
||||||
// val to bound val
|
// val to bound val
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValBoundVal by data::stringVal
|
val Data.extValBoundVal by data::stringVal
|
||||||
// val to bound var
|
// val to bound var
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValBoundVar by data::intVar
|
val Data.extValBoundVar by data::intVar
|
||||||
// var to bound var
|
// var to bound var
|
||||||
|
@ThreadLocal
|
||||||
var Data.extVarBoundVar by data::intVar
|
var Data.extVarBoundVar by data::intVar
|
||||||
|
|
||||||
// val to top-level val
|
// val to top-level val
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValTopLevelVal by ::topVal
|
val Data.extValTopLevelVal by ::topVal
|
||||||
// val to top-level var
|
// val to top-level var
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValTopLevelVar by ::topVar
|
val Data.extValTopLevelVar by ::topVar
|
||||||
// var to top-level var
|
// var to top-level var
|
||||||
|
@ThreadLocal
|
||||||
var Data.extVarTopLevelVar by ::topVar
|
var Data.extVarTopLevelVar by ::topVar
|
||||||
|
|
||||||
// val to member val
|
// val to member val
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValMemberVal by Data::stringVal
|
val Data.extValMemberVal by Data::stringVal
|
||||||
// val to member var
|
// val to member var
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValMemberVar by Data::intVar
|
val Data.extValMemberVar by Data::intVar
|
||||||
// var to member var
|
// var to member var
|
||||||
|
@ThreadLocal
|
||||||
var Data.extVarMemberVar by Data::intVar
|
var Data.extVarMemberVar by Data::intVar
|
||||||
|
|
||||||
// val to extension val
|
// val to extension val
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValExtVal by Data::formattedVal
|
val Data.extValExtVal by Data::formattedVal
|
||||||
// val to extension var
|
// val to extension var
|
||||||
|
@ThreadLocal
|
||||||
val Data.extValExtVar by Data::displacedVar
|
val Data.extValExtVar by Data::displacedVar
|
||||||
// var to extension var
|
// var to extension var
|
||||||
|
@ThreadLocal
|
||||||
var Data.extVarExtVar by Data::displacedVar
|
var Data.extVarExtVar by Data::displacedVar
|
||||||
|
|
||||||
|
|
||||||
// covariance
|
// covariance
|
||||||
|
@ThreadLocal
|
||||||
val covariantVal: Number by ::topVal
|
val covariantVal: Number by ::topVal
|
||||||
|
@ThreadLocal
|
||||||
val Data.extCovariantVal: CharSequence by Data::builderVar
|
val Data.extCovariantVal: CharSequence by Data::builderVar
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package test.random
|
package test.random
|
||||||
|
|
||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
|
import kotlin.native.concurrent.ThreadLocal
|
||||||
import kotlin.random.*
|
import kotlin.random.*
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@@ -566,6 +567,7 @@ class DefaultRandomSmokeTest : RandomSmokeTest() {
|
|||||||
override val subject: Random get() = Random
|
override val subject: Random get() = Random
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ThreadLocal
|
||||||
private val seededRandomSmokeTestSubject = Random(Random.nextInt().also { println("Seed: $it") })
|
private val seededRandomSmokeTestSubject = Random(Random.nextInt().also { println("Seed: $it") })
|
||||||
|
|
||||||
class SeededRandomSmokeTest : RandomSmokeTest() {
|
class SeededRandomSmokeTest : RandomSmokeTest() {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import test.collections.behaviors.iteratorBehavior
|
|||||||
import test.collections.behaviors.setBehavior
|
import test.collections.behaviors.setBehavior
|
||||||
import test.collections.compare
|
import test.collections.compare
|
||||||
import kotlin.math.sign
|
import kotlin.math.sign
|
||||||
|
import kotlin.native.concurrent.SharedImmutable
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@ fun createString(content: String): CharSequence = content
|
|||||||
fun createStringBuilder(content: String): CharSequence = StringBuilder((content as Any).toString()) // required for Rhino JS
|
fun createStringBuilder(content: String): CharSequence = StringBuilder((content as Any).toString()) // required for Rhino JS
|
||||||
|
|
||||||
|
|
||||||
|
@SharedImmutable
|
||||||
val charSequenceBuilders = listOf(::createString, ::createStringBuilder)
|
val charSequenceBuilders = listOf(::createString, ::createStringBuilder)
|
||||||
|
|
||||||
fun withOneCharSequenceArg(f: ((String) -> CharSequence) -> Unit) {
|
fun withOneCharSequenceArg(f: ((String) -> CharSequence) -> Unit) {
|
||||||
|
|||||||
@@ -8,11 +8,14 @@ package test.time
|
|||||||
|
|
||||||
import test.numbers.assertAlmostEquals
|
import test.numbers.assertAlmostEquals
|
||||||
import test.*
|
import test.*
|
||||||
|
import kotlin.native.concurrent.SharedImmutable
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
import kotlin.time.*
|
import kotlin.time.*
|
||||||
import kotlin.random.*
|
import kotlin.random.*
|
||||||
|
|
||||||
|
@SharedImmutable
|
||||||
private val expectStorageUnit = DurationUnit.NANOSECONDS
|
private val expectStorageUnit = DurationUnit.NANOSECONDS
|
||||||
|
@SharedImmutable
|
||||||
private val units = DurationUnit.values()
|
private val units = DurationUnit.values()
|
||||||
|
|
||||||
class DurationTest {
|
class DurationTest {
|
||||||
|
|||||||
Reference in New Issue
Block a user