Fix running stdlib tests in worker on Native

Add `@SharedImmutable` or `@ThreadLocal` where required.
This commit is contained in:
Svyatoslav Scherbina
2020-12-10 12:09:35 +03:00
parent 8f4e4a4d40
commit 0f4173cdfa
5 changed files with 32 additions and 0 deletions
+2
View File
@@ -5,6 +5,7 @@
package test.comparisons
import kotlin.native.concurrent.SharedImmutable
import kotlin.test.*
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> =
compareBy { it: String -> it.toUpperCase() }.thenBy { it.toLowerCase() }.thenBy { it }
@@ -8,6 +8,7 @@ package test.properties.delegation.references
import kotlin.reflect.*
import kotlin.test.*
import kotlin.internal.*
import kotlin.native.concurrent.ThreadLocal
import kotlin.random.*
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
set(value) { intVar = value - 2 }
@ThreadLocal
val data = Data("bound string", 42)
val topVal: Double get() = 3.14
@ThreadLocal
var topVar: ULong = 0xFFFFUL
// top-level properties
// val to bound val
@ThreadLocal
val tlValBoundVal by data::stringVal
// val to bound var
@ThreadLocal
val tlValBoundVar by data::intVar
// var to bound var
@ThreadLocal
var tlVarBoundVar by data::intVar
// val to top-level val
@ThreadLocal
val tlValTopLevelVal by ::topVal
// val to top-level var
@ThreadLocal
val tlValTopLevelVar by ::topVar
// var to top-level var
@ThreadLocal
var tlVarTopLevelVar by ::topVar
// member properties
@@ -73,36 +82,50 @@ class DataExt : Data("member string", -1) {
// extension properties
// val to bound val
@ThreadLocal
val Data.extValBoundVal by data::stringVal
// val to bound var
@ThreadLocal
val Data.extValBoundVar by data::intVar
// var to bound var
@ThreadLocal
var Data.extVarBoundVar by data::intVar
// val to top-level val
@ThreadLocal
val Data.extValTopLevelVal by ::topVal
// val to top-level var
@ThreadLocal
val Data.extValTopLevelVar by ::topVar
// var to top-level var
@ThreadLocal
var Data.extVarTopLevelVar by ::topVar
// val to member val
@ThreadLocal
val Data.extValMemberVal by Data::stringVal
// val to member var
@ThreadLocal
val Data.extValMemberVar by Data::intVar
// var to member var
@ThreadLocal
var Data.extVarMemberVar by Data::intVar
// val to extension val
@ThreadLocal
val Data.extValExtVal by Data::formattedVal
// val to extension var
@ThreadLocal
val Data.extValExtVar by Data::displacedVar
// var to extension var
@ThreadLocal
var Data.extVarExtVar by Data::displacedVar
// covariance
@ThreadLocal
val covariantVal: Number by ::topVal
@ThreadLocal
val Data.extCovariantVal: CharSequence by Data::builderVar
@@ -6,6 +6,7 @@
package test.random
import kotlin.math.*
import kotlin.native.concurrent.ThreadLocal
import kotlin.random.*
import kotlin.test.*
@@ -566,6 +567,7 @@ class DefaultRandomSmokeTest : RandomSmokeTest() {
override val subject: Random get() = Random
}
@ThreadLocal
private val seededRandomSmokeTestSubject = Random(Random.nextInt().also { println("Seed: $it") })
class SeededRandomSmokeTest : RandomSmokeTest() {
+2
View File
@@ -11,6 +11,7 @@ import test.collections.behaviors.iteratorBehavior
import test.collections.behaviors.setBehavior
import test.collections.compare
import kotlin.math.sign
import kotlin.native.concurrent.SharedImmutable
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
@SharedImmutable
val charSequenceBuilders = listOf(::createString, ::createStringBuilder)
fun withOneCharSequenceArg(f: ((String) -> CharSequence) -> Unit) {
@@ -8,11 +8,14 @@ package test.time
import test.numbers.assertAlmostEquals
import test.*
import kotlin.native.concurrent.SharedImmutable
import kotlin.test.*
import kotlin.time.*
import kotlin.random.*
@SharedImmutable
private val expectStorageUnit = DurationUnit.NANOSECONDS
@SharedImmutable
private val units = DurationUnit.values()
class DurationTest {