| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /*
- * 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.mock.test
- import com.google.common.jimfs.Configuration
- import com.google.common.jimfs.Jimfs
- import net.mamoe.mirai.mock.resserver.MockServerFileDisk
- import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
- import org.junit.jupiter.api.AfterEach
- import org.junit.jupiter.api.Test
- import java.nio.file.Files
- import kotlin.test.assertEquals
- import kotlin.test.assertFails
- import kotlin.test.assertFalse
- import kotlin.test.assertTrue
- internal class TxFsDiskTest {
- val tmpfs = Jimfs.newFileSystem(Configuration.unix())
- val disk = MockServerFileDisk.newFileDisk(tmpfs.getPath("/disk"))
- private fun splitLine() = println("==================================================================")
- @AfterEach
- fun release() {
- println("===================[ FILE SYSTEM STRUCT DUMP ]========================")
- Files.walk(tmpfs.getPath("/")).use { s ->
- s.forEach { pt ->
- println(pt)
- }
- }
- println("===================[ ]========================")
- tmpfs.close()
- }
- @Test
- fun testDisk() {
- val system = disk.newFsSystem()
- val root = system.root
- println(root)
- println(root.fileInfo)
- splitLine()
- kotlin.run {
- val subdir = root.mksubdir("a-dir", 0)
- println(subdir)
- println(subdir.fileInfo)
- assertEquals("/a-dir", subdir.path)
- assertFails { root.moveTo(subdir) }
- val children = root.listFiles()!!.onEach { println(it) }.toList()
- assertEquals(1, children.size)
- assertEquals(subdir, children[0])
- assertEquals(root, subdir.parent)
- subdir.delete()
- println(subdir)
- assertFalse { subdir.exists }
- assertFalse { subdir.isFile }
- assertFalse { subdir.isDirectory }
- assertTrue { subdir.toString().startsWith("<not exists>") }
- assertFails { subdir.fileInfo }
- }
- splitLine()
- kotlin.run {
- val newFile = root.uploadFile(
- "test.txt",
- """A""".toByteArray().toExternalResource().toAutoCloseable(),
- 5
- )
- val newFileInfo = newFile.fileInfo
- assertEquals(5, newFileInfo.creator)
- assertEquals(root, newFile.parent)
- assertEquals("test.txt", newFile.name)
- assertEquals("/test.txt", newFile.path)
- newFile.rename("hello world.bin")
- assertEquals("hello world.bin", newFile.name)
- val children = root.listFiles()!!.onEach { println(it) }.toList()
- assertEquals(1, children.size)
- assertEquals(children[0], newFile)
- val subdir = root.mksubdir("1", 3)
- newFile.moveTo(subdir)
- assertEquals("/1/hello world.bin", newFile.path)
- assertEquals(subdir, newFile.parent)
- val children1 = subdir.listFiles()!!.toList()
- assertEquals(1, children1.size)
- assertEquals(newFile, children1[0])
- val children2 = root.listFiles()!!.toList()
- assertEquals(1, children2.size)
- assertEquals(subdir, children2[0])
- assertEquals(newFile, system.findByPath("/1/hello world.bin").firstOrNull())
- println("TEST SUB DIR: $subdir")
- // TODO: Download content
- }
- }
- }
|