mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-25 04:50:26 +08:00
[core] Move StructureToStringTransformer to mirai-core-utils, and use legacy implementation as fallback. close #2097.
This commit is contained in:
parent
fea1d28488
commit
965ab57aaa
mirai-core-utils/src
commonMain/kotlin/debug
jvmBaseMain/kotlin/debug
nativeMain/kotlin/debug
mirai-core/src
commonMain/kotlin
contact
message
image
protocol
source
network
pipeline
utils
commonTest/kotlin/message
jvmBaseTest
kotlin/utils
resources/META-INF/services
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
@file:JvmName("StructureToStringTransformerKt_common")
|
||||
|
||||
package net.mamoe.mirai.utils.debug
|
||||
|
||||
import net.mamoe.mirai.utils.loadService
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
public interface StructureToStringTransformer {
|
||||
public fun transform(any: Any?): String
|
||||
|
||||
public fun transformAndDesensitize(any: Any?): String
|
||||
|
||||
public companion object {
|
||||
private class ObjectToStringStructureToStringTransformer : StructureToStringTransformer {
|
||||
override fun transform(any: Any?): String = any.toString()
|
||||
override fun transformAndDesensitize(any: Any?): String = any.toString()
|
||||
}
|
||||
|
||||
public val instance: StructureToStringTransformer by lazy {
|
||||
loadService(StructureToStringTransformer::class) {
|
||||
getPlatformDefaultStructureToStringTransformer()
|
||||
?: ObjectToStringStructureToStringTransformer()
|
||||
}
|
||||
}
|
||||
|
||||
public val available: Boolean = instance !is ObjectToStringStructureToStringTransformer
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal expect fun getPlatformDefaultStructureToStringTransformer(): StructureToStringTransformer?
|
||||
|
||||
/**
|
||||
* Do not call this inside [Any.toString]. `StackOverflowError` may happen.
|
||||
*/
|
||||
public fun Any?.structureToString(): String = StructureToStringTransformer.instance.transform(this)
|
||||
public fun Any?.structureToStringIfAvailable(): String? {
|
||||
return if (StructureToStringTransformer.available) {
|
||||
StructureToStringTransformer.instance.transform(this)
|
||||
} else null
|
||||
}
|
||||
|
||||
|
||||
public fun Any?.structureToStringAndDesensitize(): String =
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
|
||||
public fun Any?.structureToStringAndDesensitizeIfAvailable(): String? {
|
||||
return if (StructureToStringTransformer.available) {
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
} else null
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.utils.debug
|
||||
|
||||
internal actual fun getPlatformDefaultStructureToStringTransformer(): StructureToStringTransformer? {
|
||||
return StructureToStringTransformerLegacy()
|
||||
}
|
@ -7,10 +7,9 @@
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.internal.utils
|
||||
package net.mamoe.mirai.utils.debug
|
||||
|
||||
import kotlinx.serialization.Transient
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||
import net.mamoe.mirai.utils.toUHexString
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.reflect.KClass
|
||||
@ -19,9 +18,10 @@ import kotlin.reflect.KProperty1
|
||||
import kotlin.reflect.full.hasAnnotation
|
||||
import kotlin.reflect.jvm.javaField
|
||||
|
||||
internal class StructureToStringTransformerLegacy : StructureToStringTransformer {
|
||||
|
||||
public class StructureToStringTransformerLegacy : StructureToStringTransformer {
|
||||
override fun transform(any: Any?): String = any._miraiContentToString()
|
||||
override fun transformAndDesensitize(any: Any?): String = Desensitizer.desensitize(any._miraiContentToString())
|
||||
override fun transformAndDesensitize(any: Any?): String = transform(any) // desensitization not supported
|
||||
|
||||
private val indent: String = " ".repeat(4)
|
||||
|
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.utils.debug
|
||||
|
||||
internal actual fun getPlatformDefaultStructureToStringTransformer(): StructureToStringTransformer? {
|
||||
return null
|
||||
}
|
@ -37,10 +37,10 @@ import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn
|
||||
import net.mamoe.mirai.internal.utils.AtomicIntSeq
|
||||
import net.mamoe.mirai.internal.utils.C2CPkgMsgParsingCache
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import kotlin.contracts.contract
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
|
@ -17,9 +17,9 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImgExtPbResvAttrCommon
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.NotOnlineImageExtPb
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.data.Image
|
||||
import net.mamoe.mirai.message.data.ImageType
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import net.mamoe.mirai.utils.generateImageId
|
||||
import net.mamoe.mirai.utils.generateImageIdFromResourceId
|
||||
|
||||
|
@ -39,13 +39,13 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.internal.pipeline.ProcessResult
|
||||
import net.mamoe.mirai.internal.utils.runCoroutineInPlace
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.MessageSerializers
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import net.mamoe.mirai.message.data.visitor.RecursiveMessageVisitor
|
||||
import net.mamoe.mirai.message.data.visitor.accept
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
internal interface MessageProtocolFacade {
|
||||
|
@ -14,10 +14,10 @@ import net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderContext.Co
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.internal.pipeline.*
|
||||
import net.mamoe.mirai.internal.utils.structureToStringAndDesensitizeIfAvailable
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageSourceKind
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToStringAndDesensitizeIfAvailable
|
||||
import kotlin.coroutines.RestrictsSuspension
|
||||
|
||||
internal interface MessageDecoderPipeline :
|
||||
|
@ -31,13 +31,13 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.SourceMsg
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.toByteArray
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.MessageSource
|
||||
import net.mamoe.mirai.message.data.MessageSourceKind
|
||||
import net.mamoe.mirai.message.data.OnlineMessageSource
|
||||
import net.mamoe.mirai.message.data.visitor.MessageVisitor
|
||||
import net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import net.mamoe.mirai.utils.encodeBase64
|
||||
import net.mamoe.mirai.utils.mapToIntArray
|
||||
|
||||
|
@ -20,8 +20,8 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.MsgOnlinePush
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.OnlinePushTrans
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Structmsg
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.chat.NewContact
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
internal class UnconsumedNoticesAlerter(
|
||||
logger: MiraiLogger,
|
||||
|
@ -29,8 +29,8 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x27
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.TroopTips0x857
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.parseToMessageDataList
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
internal class GroupNotificationProcessor(
|
||||
|
@ -33,10 +33,10 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.Structmsg
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x44
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.parseToMessageDataList
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.internal.utils.toMemberInfo
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.context
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import net.mamoe.mirai.utils.read
|
||||
|
||||
|
||||
|
@ -35,8 +35,8 @@ import net.mamoe.mirai.internal.network.protocol.packet.chat.NewContact
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList.GetFriendGroupList
|
||||
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
/**
|
||||
* All [FriendEvent] except [FriendMessageEvent]
|
||||
|
@ -32,10 +32,10 @@ import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPushStatus
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.SubMsgType0x7
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.data.PlainText
|
||||
import net.mamoe.mirai.message.data.buildMessageChain
|
||||
import net.mamoe.mirai.utils.context
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
/**
|
||||
* @see OtherClientOnlineEvent
|
||||
|
@ -18,8 +18,8 @@ import net.mamoe.mirai.internal.utils.io.NestedStructure
|
||||
import net.mamoe.mirai.internal.utils.io.NestedStructureDesensitizer
|
||||
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.structureToStringIfAvailable
|
||||
import net.mamoe.mirai.utils.EMPTY_BYTE_ARRAY
|
||||
import net.mamoe.mirai.utils.debug.structureToStringIfAvailable
|
||||
import net.mamoe.mirai.utils.inflate
|
||||
import net.mamoe.mirai.utils.isSameType
|
||||
import kotlin.jvm.JvmField
|
||||
|
@ -22,7 +22,7 @@ import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import net.mamoe.mirai.utils.md5
|
||||
|
||||
internal class MessageValidationData(
|
||||
|
@ -42,8 +42,8 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.StatSvcSimpleGet
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.*
|
||||
import net.mamoe.mirai.internal.utils.NetworkType
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.*
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
@Suppress("EnumEntryName", "unused")
|
||||
internal enum class RegPushReason {
|
||||
|
@ -24,8 +24,8 @@ import net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.analysisTl
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.orEmpty
|
||||
import net.mamoe.mirai.internal.utils.crypto.TEA
|
||||
import net.mamoe.mirai.internal.utils.printStructure
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
internal class WtLogin {
|
||||
/**
|
||||
|
@ -13,8 +13,8 @@ import io.ktor.utils.io.core.*
|
||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext
|
||||
import net.mamoe.mirai.internal.network.components.NoticeProcessor
|
||||
import net.mamoe.mirai.internal.utils.structureToStringAndDesensitizeIfAvailable
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.debug.structureToStringAndDesensitizeIfAvailable
|
||||
import kotlin.jvm.JvmInline
|
||||
|
||||
internal interface Processor<C : ProcessorPipelineContext<D, *>, D> : PipelineConsumptionMarker {
|
||||
|
@ -1,68 +0,0 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE", "unused", "NO_REFLECTION_IN_CLASS_PATH")
|
||||
|
||||
package net.mamoe.mirai.internal.utils
|
||||
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.debug
|
||||
import net.mamoe.mirai.utils.loadService
|
||||
|
||||
|
||||
/**
|
||||
* Do not call this inside [Any.toString]. [StackOverflowError] may happen. Call [structureToStringIfAvailable] instead.
|
||||
*/
|
||||
internal fun Any?.structureToString(): String = StructureToStringTransformer.instance.transform(this)
|
||||
internal fun Any?.structureToStringIfAvailable(): String? {
|
||||
return if (StructureToStringTransformer.available) {
|
||||
StructureToStringTransformer.instance.transform(this)
|
||||
} else null
|
||||
}
|
||||
|
||||
|
||||
internal fun Any?.structureToStringAndDesensitize(): String =
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
|
||||
internal fun Any?.structureToStringAndDesensitizeIfAvailable(): String? {
|
||||
return if (StructureToStringTransformer.available) {
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
} else null
|
||||
}
|
||||
|
||||
private val SoutvLogger: MiraiLogger by lazy {
|
||||
MiraiLogger.Factory.create(
|
||||
StructureToStringTransformer::class,
|
||||
"printStructurally"
|
||||
)
|
||||
}
|
||||
|
||||
internal fun Any?.printStructure(name: String = "unnamed") {
|
||||
return SoutvLogger.debug { "$name = ${this.structureToString()}" }
|
||||
}
|
||||
|
||||
internal interface StructureToStringTransformer {
|
||||
fun transform(any: Any?): String
|
||||
|
||||
fun transformAndDesensitize(any: Any?): String
|
||||
|
||||
companion object {
|
||||
private class ObjectToStringStructureToStringTransformer : StructureToStringTransformer {
|
||||
override fun transform(any: Any?): String = any.toString()
|
||||
override fun transformAndDesensitize(any: Any?): String = any.toString()
|
||||
}
|
||||
|
||||
val instance by lazy {
|
||||
loadService(StructureToStringTransformer::class) { ObjectToStringStructureToStringTransformer() }
|
||||
}
|
||||
|
||||
val available = instance !is ObjectToStringStructureToStringTransformer
|
||||
}
|
||||
}
|
||||
|
29
mirai-core/src/commonMain/kotlin/utils/printStructure.kt
Normal file
29
mirai-core/src/commonMain/kotlin/utils/printStructure.kt
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/dev/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE", "unused")
|
||||
|
||||
package net.mamoe.mirai.internal.utils
|
||||
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.debug
|
||||
import net.mamoe.mirai.utils.debug.StructureToStringTransformer
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
|
||||
|
||||
private val SoutvLogger: MiraiLogger by lazy {
|
||||
MiraiLogger.Factory.create(
|
||||
StructureToStringTransformer::class,
|
||||
"printStructurally"
|
||||
)
|
||||
}
|
||||
|
||||
internal fun Any?.printStructure(name: String = "unnamed") {
|
||||
return SoutvLogger.debug { "$name = ${this.structureToString()}" }
|
||||
}
|
@ -15,8 +15,8 @@ import net.mamoe.mirai.internal.MockBot
|
||||
import net.mamoe.mirai.internal.message.DeepMessageRefiner.refineDeep
|
||||
import net.mamoe.mirai.internal.message.SimpleRefineContext
|
||||
import net.mamoe.mirai.internal.test.runBlockingUnit
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
@ -17,10 +17,10 @@ import kotlinx.serialization.serializer
|
||||
import net.mamoe.mirai.Mirai
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.test.AbstractTest
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.message.MessageSerializers
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import net.mamoe.mirai.utils.cast
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import net.mamoe.mirai.utils.mapToByteArray
|
||||
import kotlin.test.*
|
||||
|
||||
|
@ -12,11 +12,11 @@ package net.mamoe.mirai.internal.message.protocol.impl
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.json.Json
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.utils.structureToStringIfAvailable
|
||||
import net.mamoe.mirai.message.MessageSerializers
|
||||
import net.mamoe.mirai.message.data.MessageChain.Companion.serializeToJsonString
|
||||
import net.mamoe.mirai.message.data.SingleMessage
|
||||
import net.mamoe.mirai.message.data.messageChainOf
|
||||
import net.mamoe.mirai.utils.debug.structureToStringIfAvailable
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.asserter
|
||||
|
||||
|
@ -17,6 +17,8 @@ import net.mamoe.mirai.internal.testFramework.codegen.visitors.OptimizeByteArray
|
||||
import net.mamoe.mirai.internal.testFramework.codegen.visitors.renderToString
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.DesensitizationVisitor
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||
import net.mamoe.mirai.utils.debug.StructureToStringTransformer
|
||||
import net.mamoe.mirai.utils.debug.StructureToStringTransformerLegacy
|
||||
|
||||
internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
||||
private val legacy = StructureToStringTransformerLegacy()
|
||||
|
@ -10,9 +10,12 @@
|
||||
package net.mamoe.mirai.internal.utils.test
|
||||
|
||||
import net.mamoe.mirai.internal.test.AbstractTest
|
||||
import net.mamoe.mirai.internal.utils.structureToString
|
||||
import net.mamoe.mirai.internal.utils.StructureToStringTransformerNew
|
||||
import net.mamoe.mirai.utils.debug.StructureToStringTransformer
|
||||
import net.mamoe.mirai.utils.debug.structureToString
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertIs
|
||||
|
||||
internal class StructureToStringTransformerNewTest : AbstractTest() {
|
||||
|
||||
@ -22,6 +25,11 @@ internal class StructureToStringTransformerNewTest : AbstractTest() {
|
||||
|
||||
@Test
|
||||
fun `can load service`() {
|
||||
assertIs<StructureToStringTransformerNew>(StructureToStringTransformer.instance)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `can use`() {
|
||||
assertEquals(
|
||||
"""
|
||||
${MyClass::class.qualifiedName}(
|
||||
|
Loading…
Reference in New Issue
Block a user