Add ConsoleDataScopeImpl.set for test onlyˆ

This commit is contained in:
Him188 2022-03-16 15:25:30 +00:00
parent 603e29d739
commit b1d66c0d20

View File

@ -15,6 +15,7 @@ import net.mamoe.mirai.console.data.AutoSavePluginDataHolder
import net.mamoe.mirai.console.data.PluginConfig import net.mamoe.mirai.console.data.PluginConfig
import net.mamoe.mirai.console.data.PluginData import net.mamoe.mirai.console.data.PluginData
import net.mamoe.mirai.console.data.PluginDataStorage import net.mamoe.mirai.console.data.PluginDataStorage
import net.mamoe.mirai.utils.TestOnly
import net.mamoe.mirai.utils.childScope import net.mamoe.mirai.utils.childScope
import net.mamoe.mirai.utils.minutesToMillis import net.mamoe.mirai.utils.minutesToMillis
import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.ConcurrentLinkedQueue
@ -45,6 +46,15 @@ internal class ConsoleDataScopeImpl(
return (data.find { type.isInstance(it) } ?: configs.find { type.isInstance(it) }) as T? return (data.find { type.isInstance(it) } ?: configs.find { type.isInstance(it) }) as T?
} }
/**
* Set and override, for tests only.
*/
@TestOnly
inline fun <reified T : PluginData> set(value: T) {
data.removeIf { value::class.isInstance(it) }
data.add(value)
}
override fun reloadAll() { override fun reloadAll() {
data.forEach { dt -> data.forEach { dt ->
dataStorage.load(dataHolder, dt) dataStorage.load(dataHolder, dt)