(1024)
override fun onTagStart(tag: Tag) {
diff --git a/src/commonMain/kotlin/util.kt b/src/commonMain/kotlin/util.kt
index 1a54561f..7910f149 100644
--- a/src/commonMain/kotlin/util.kt
+++ b/src/commonMain/kotlin/util.kt
@@ -13,5 +13,3 @@ val Tag.br: Unit
consumer.onTagStart(tag)
consumer.onTagEnd(tag)
}
-
-expect fun currentTimeMillis(): Long
diff --git a/src/jsMain/kotlin/utilsImpl-js.kt b/src/jsMain/kotlin/utilsImpl-js.kt
deleted file mode 100644
index c39bd7e7..00000000
--- a/src/jsMain/kotlin/utilsImpl-js.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package kotlinx.html
-
-import kotlin.js.*
-
-actual fun currentTimeMillis(): Long = Date().getTime().toLong()
diff --git a/src/jvmMain/kotlin/utilsImpl-jvm.kt b/src/jvmMain/kotlin/utilsImpl-jvm.kt
deleted file mode 100644
index ba554ab6..00000000
--- a/src/jvmMain/kotlin/utilsImpl-jvm.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package kotlinx.html
-
-actual fun currentTimeMillis(): Long = System.currentTimeMillis()
diff --git a/src/jvmTest/kotlin/streaming.kt b/src/jvmTest/kotlin/streaming.kt
index 4f50d7fb..5212800f 100644
--- a/src/jvmTest/kotlin/streaming.kt
+++ b/src/jvmTest/kotlin/streaming.kt
@@ -5,6 +5,7 @@ import kotlinx.html.consumers.*
import kotlinx.html.stream.*
import java.io.*
import kotlin.test.*
+import kotlin.time.*
class TestStreaming {
@Test fun `we should be able to construct at least simple things`() {
@@ -233,29 +234,23 @@ class TestStreaming {
val count = 1000
val builder = StringBuilder(26 * (count + 1)).appendHTML(false)
- var minStart: Long
- var maxStart = 0L
- var minEnd = 0L
- var maxEnd: Long
+ val timeSource = TimeSource.Monotonic
+ val now = timeSource.markNow()
+ var measuredDuration = Duration.INFINITE
- minStart = currentTimeMillis()
- val rs = builder.measureTime().div {
- maxStart = currentTimeMillis()
+ val rs = builder.measureTime(timeSource = timeSource).div {
+ val measuredStart = timeSource.markNow()
for (i in 1..count) {
div {
p { +"node$i" }
}
}
- minEnd = currentTimeMillis()
+ measuredDuration = measuredStart.elapsedNow()
}
- maxEnd = currentTimeMillis()
+ val realDuration = now.elapsedNow()
- val maxTime = maxEnd - minStart
- val minTime = minEnd - maxStart
-
- val errorMessage = "Expected time should be between $minTime and $maxTime ms, but actual is ${rs.time} ms"
- assertTrue(errorMessage) { rs.time >= minTime }
- assertTrue(errorMessage) { rs.time <= maxTime }
+ val errorMessage = "Expected time should be between $measuredDuration and $realDuration, but actual is ${rs.duration}"
+ assertTrue(errorMessage) { rs.duration in measuredDuration..realDuration }
val expected = StringBuilder().apply {
append("")
@@ -268,7 +263,7 @@ class TestStreaming {
append("
")
}
- assertEquals(expected.toString(), rs.result.toString())
+ assertEquals(expected.toString(), rs.value.toString())
}
@Test fun `escape bad chars`() {
diff --git a/src/nativeMain/kotlin/utilNative.kt b/src/nativeMain/kotlin/utilNative.kt
deleted file mode 100644
index e4a888b4..00000000
--- a/src/nativeMain/kotlin/utilNative.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package kotlinx.html
-
-import kotlinx.cinterop.*
-import platform.posix.*
-
-@OptIn(UnsafeNumber::class, ExperimentalForeignApi::class)
-actual fun currentTimeMillis(): Long {
- memScoped {
- val timeHolder = alloc()
- time(timeHolder.ptr)
- return timeHolder.value * 1000L
- }
-}
diff --git a/src/wasmJsMain/kotlin/utilsImpl-js.kt b/src/wasmJsMain/kotlin/utilsImpl-js.kt
deleted file mode 100644
index 9c782550..00000000
--- a/src/wasmJsMain/kotlin/utilsImpl-js.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package kotlinx.html
-
-import kotlin.js.*
-
-actual fun currentTimeMillis(): Long = currentTimeMillisJs().toLong()
-
-private fun currentTimeMillisJs(): Double =
- js("new Date().getTime()")
\ No newline at end of file