Coverage Summary for Class: TestMokokiSerializationLogger (com.javiersc.mokoki.serialization)

Class Class, % Method, % Branch, % Line, % Instruction, %
TestMokokiSerializationLogger 100% (1/1) 100% (3/3) 100% (5/5) 100% (36/36)


 package com.javiersc.mokoki.serialization
 
 import com.javiersc.mokoki.Priority
 import io.kotest.matchers.shouldBe
 import kotlin.reflect.KClass
 import kotlin.reflect.KType
 
 internal class TestMokokiSerializationLogger(
     minPriority: Priority,
 ) : PrintSerializableMokokiLogger(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 lines: List<String> = buildLines(serializer(kType, message), priority, tag, message)
         lastMessage = lines.joinToString("\n")
     }
 }
 
 internal fun TestMokokiSerializationLogger.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)
 }
 
 private val Char.shouldDrop: Boolean
     get() = this != '┌' && this != '│' && this != '├' && this != '└'
 
 private val Char.shouldDropLast: Boolean
     get() = this != '┐' && this != '│' && this != '┤' && this != '┘'