Files
KSLog/kslog/test@jvm/CallbackKSLogTest.kt
T

58 lines
1.7 KiB
Kotlin

package dev.inmo.kslog.common
import dev.inmo.kslog.common.filter.filtered
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertSame
import kotlin.test.assertTrue
class CallbackKSLogTest {
@Test
fun forwardsExactArguments() {
val expectedThrowable = IllegalStateException("boom")
var observedLevel: LogLevel? = null
var observedTag: String? = null
var observedMessage: Any? = null
var observedThrowable: Throwable? = null
val logger = KSLog { level, tag, message, throwable ->
observedLevel = level
observedTag = tag
observedMessage = message
observedThrowable = throwable
}
logger.performLog(LogLevel.WARNING, "network", "retrying", expectedThrowable)
assertEquals(LogLevel.WARNING, observedLevel)
assertEquals("network", observedTag)
assertEquals("retrying", observedMessage)
assertSame(expectedThrowable, observedThrowable)
}
@Test
fun filteredLoggerDoesNotBuildRejectedLazyMessage() {
var callbackInvoked = false
var messageBuilt = false
val logger = KSLog { _, _, _, _ -> callbackInvoked = true }
.filtered { level, _, _ -> level >= LogLevel.INFO }
logger.performLog(LogLevel.DEBUG, "test", null) {
messageBuilt = true
"expensive"
}
assertFalse(callbackInvoked)
assertFalse(messageBuilt)
logger.performLog(LogLevel.ERROR, "test", null) {
messageBuilt = true
"needed"
}
assertTrue(callbackInvoked)
assertTrue(messageBuilt)
}
}