stdlib tests: move JVM-only test source files
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
@file:kotlin.jvm.JvmVersion
|
||||
package test.concurrent
|
||||
|
||||
import kotlin.concurrent.*
|
||||
import kotlin.test.*
|
||||
|
||||
|
||||
import java.util.concurrent.*
|
||||
import java.util.concurrent.TimeUnit.*
|
||||
|
||||
class ThreadTest {
|
||||
@Test fun scheduledTask() {
|
||||
|
||||
val pool = Executors.newFixedThreadPool(1)
|
||||
val countDown = CountDownLatch(1)
|
||||
pool.execute {
|
||||
countDown.countDown()
|
||||
}
|
||||
assertTrue(countDown.await(2, SECONDS), "Count down is executed")
|
||||
}
|
||||
|
||||
@Test fun callableInvoke() {
|
||||
|
||||
val pool = Executors.newFixedThreadPool(1)
|
||||
val future = pool.submit<String> { // type specification required here to choose overload for callable, see KT-7882
|
||||
"Hello"
|
||||
}
|
||||
assertEquals("Hello", future.get(2, SECONDS))
|
||||
}
|
||||
|
||||
@Test fun threadLocalGetOrSet() {
|
||||
val v = ThreadLocal<String>()
|
||||
|
||||
assertEquals("v1", v.getOrSet { "v1" })
|
||||
assertEquals("v1", v.get())
|
||||
assertEquals("v1", v.getOrSet { "v2" })
|
||||
|
||||
v.set(null)
|
||||
assertEquals("v2", v.getOrSet { "v2" })
|
||||
|
||||
v.set("v3")
|
||||
assertEquals("v3", v.getOrSet { "v2" })
|
||||
|
||||
|
||||
val w = object: ThreadLocal<String>() {
|
||||
override fun initialValue() = "default"
|
||||
}
|
||||
|
||||
assertEquals("default", w.getOrSet { "v1" })
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
@file:kotlin.jvm.JvmVersion
|
||||
package test.concurrent
|
||||
|
||||
import java.util.*
|
||||
import kotlin.concurrent.*
|
||||
import kotlin.test.*
|
||||
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.TimeoutException
|
||||
|
||||
|
||||
class TimerTest {
|
||||
@Test fun scheduledTask() {
|
||||
val timer = Timer()
|
||||
|
||||
val latch = CountDownLatch(10)
|
||||
val startedAt = System.nanoTime()
|
||||
lateinit var callbackTask: TimerTask
|
||||
val task = timer.scheduleAtFixedRate(100, 10) {
|
||||
callbackTask = this
|
||||
latch.countDown()
|
||||
if (latch.count == 0L) this.cancel()
|
||||
}
|
||||
if (!latch.await(1500, TimeUnit.MILLISECONDS)) throw TimeoutException()
|
||||
val elapsed = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startedAt)
|
||||
|
||||
val expectedRange = 100L..500L
|
||||
assertTrue(elapsed in expectedRange, "Expected elapsed ($elapsed ms) to fit in range $expectedRange")
|
||||
assertSame(task, callbackTask)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user