[Wasm] Stop using Dynamic in kotlin-test

This commit is contained in:
Svyatoslav Kuzmich
2023-03-20 16:37:27 +01:00
committed by Space Team
parent 1071669a92
commit 635671d623
3 changed files with 14 additions and 15 deletions
@@ -21,15 +21,15 @@ private fun it(name: String, fn: () -> JsAny?): Unit =
private fun xit(name: String, fn: () -> JsAny?): Unit =
js("xit(name, fn)")
private fun jsThrow(jsException: Dynamic) {
private fun jsThrow(jsException: JsAny) {
js("throw e")
}
private fun throwableToJsError(message: String, stack: String): Dynamic {
private fun throwableToJsError(message: String, stack: String): JsAny {
js("var e = new Error(); e.message = message; e.stack = stack; return e;")
}
private fun Throwable.toJsError(): Dynamic =
private fun Throwable.toJsError(): JsAny =
throwableToJsError(message ?: "", stackTraceToString())
/**
@@ -52,7 +52,7 @@ internal class JasmineLikeAdapter : FrameworkAdapter {
.toThrowableOrNull()
?.let { it.toJsError() }
?: exception
Promise.reject(jsException) as Dynamic
Promise.reject(jsException)
}
} catch (exception: Throwable) {
jsThrow(exception.toJsError())
@@ -17,7 +17,7 @@ private external fun nodeArguments(): String
internal class TeamcityAdapter : FrameworkAdapter {
private var scheduleNextTaskAfter: Promise<Dynamic?>? = null
private var scheduleNextTaskAfter: Promise<JsAny?>? = null
private fun runOrScheduleNext(block: () -> Unit) {
if (scheduleNextTaskAfter == null) {
block()
@@ -26,14 +26,14 @@ internal class TeamcityAdapter : FrameworkAdapter {
}
}
private fun runOrScheduleNextWithResult(block: () -> Promise<Dynamic?>?) {
private fun runOrScheduleNextWithResult(block: () -> Promise<JsAny?>?) {
if (scheduleNextTaskAfter == null) {
val result = block()
if (result != null)
scheduleNextTaskAfter = result
} else {
scheduleNextTaskAfter = scheduleNextTaskAfter!!.then {
block() as Dynamic?
block()
}
}
}
+7 -8
View File
@@ -3,19 +3,19 @@ package test.js
import kotlin.js.*
import kotlin.test.*
internal fun jsAsyncFoo(): Promise<Dynamic?> =
internal fun jsAsyncFoo(): Promise<JsAny?> =
js("(async () => 'foo')()")
internal fun jsFoo(): Dynamic =
internal fun jsFoo(): JsAny =
js("'foo'")
var state: Dynamic? = null
var state: JsAny? = null
class MyThrowable : Throwable()
class AsyncTest {
@Test
fun test1(): Promise<Dynamic?> {
fun test1(): Promise<JsAny?> {
var thenExecuted = false
val p = jsAsyncFoo().then { value ->
state = value
@@ -27,7 +27,7 @@ class AsyncTest {
}
@Test
fun test2(): Promise<Dynamic?> {
fun test2(): Promise<JsAny?> {
assertEquals(state, jsFoo())
var thenExecuted = false
val p = jsAsyncFoo().then {
@@ -44,10 +44,9 @@ class AsyncTest {
}
@Test
fun testJsValueToThrowableOrNull1(): Promise<Dynamic?> {
fun testJsValueToThrowableOrNull1(): Promise<JsAny?> {
val p = jsAsyncFoo().then {
throw MyThrowable()
null
}.catch { e ->
assert(e.toThrowableOrNull() is MyThrowable)
null
@@ -58,6 +57,6 @@ class AsyncTest {
@Test
fun testJsValueToThrowableOrNull2() {
val e = MyThrowable()
assertEquals((e as Dynamic).toThrowableOrNull(), e)
assertEquals((e.toJsHandle()).toThrowableOrNull(), e)
}
}