Coverage Summary for Class: TestMokokiLogger (com.javiersc.mokoki)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
TestMokokiLogger |
100%
(3/3)
|
|
100%
(6/6)
|
100%
(50/50)
|
TestMokokiLogger$log$lambda-0$$inlined$ansiColor$1 |
0%
(0/1)
|
|
Total |
75%
(3/4)
|
|
100%
(6/6)
|
100%
(50/50)
|
package com.javiersc.mokoki
import com.javiersc.kotlin.stdlib.ansiColor
import com.javiersc.mokoki.internal.buildMokokiMessage
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import kotlin.reflect.KClass
import kotlin.reflect.KType
class TestMokokiLogger(minPriority: Priority) : PrintMokokiLogger(minPriority) {
var lastMessage: String? = null
private set
override fun <T : Any> log(
priority: Priority,
tag: String?,
kClass: KClass<T>,
kType: KType,
message: T
) {
super.log(priority, tag, kClass, kType, message)
val mokokiMessageLines: List<String> =
buildMokokiMessage(priority, tag, message).map { it.ansiColor(priority.ansiColor) }
lastMessage = mokokiMessageLines.joinToString("\n")
}
}
fun TestMokokiLogger.assert(message: String) {
val expect =
"\n" +
(message
.lines()
.filter(String::isNotBlank)
.map { it.dropWhile { char -> char.shouldDrop } }
.map { it.dropLastWhile { char -> char.shouldDropLast } }
.joinToString("\n"))
val actual =
"\n" +
(lastMessage!!
.lines()
.filter(String::isNotBlank)
.map { it.dropWhile { char -> char.shouldDrop } }
.map { it.dropLastWhile { char -> char.shouldDropLast } }
.joinToString("\n"))
actual.shouldBe(expect)
}
fun TestMokokiLogger.assertContains(message: String) {
val expect =
"\n" +
(message
.lines()
.filter(String::isNotBlank)
.map { it.dropWhile { char -> char.shouldDrop } }
.map { it.dropLastWhile { char -> char.shouldDropLast } }
.joinToString("\n"))
val actual =
"\n" +
(lastMessage!!
.lines()
.filter(String::isNotBlank)
.map { it.dropWhile { char -> char.shouldDrop } }
.map { it.dropLastWhile { char -> char.shouldDropLast } }
.joinToString("\n"))
actual.shouldContain(expect)
}
private val Char.shouldDrop: Boolean
get() = this != '┌' && this != '│' && this != '├' && this != '└'
private val Char.shouldDropLast: Boolean
get() = this != '┐' && this != '│' && this != '┤' && this != '┘'