aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/kotlin/MixinTest.kt34
-rw-r--r--src/test/kotlin/features/macros/KeyComboTrieCreation.kt103
-rw-r--r--src/test/kotlin/root.kt1
-rw-r--r--src/test/kotlin/testutil/AutoBootstrapExtension.kt14
-rw-r--r--src/test/kotlin/testutil/ItemResources.kt53
-rw-r--r--src/test/kotlin/testutil/KotestPlugin.kt16
-rw-r--r--src/test/kotlin/util/ColorCodeTest.kt100
-rw-r--r--src/test/kotlin/util/TextUtilText.kt10
-rw-r--r--src/test/kotlin/util/math/GChainReconciliationTest.kt75
-rw-r--r--src/test/kotlin/util/skyblock/AbilityUtilsTest.kt32
-rw-r--r--src/test/kotlin/util/skyblock/ItemTypeTest.kt40
-rw-r--r--src/test/kotlin/util/skyblock/SackUtilTest.kt4
-rw-r--r--src/test/resources/testdata/chat/all-chat.snbt3
-rw-r--r--src/test/resources/testdata/chat/sacks/gain-and-lose-regular.snbt3
-rw-r--r--src/test/resources/testdata/chat/sacks/gain-rotten-flesh.snbt3
-rw-r--r--src/test/resources/testdata/items/aspect-of-the-void.snbt3
-rw-r--r--src/test/resources/testdata/items/books/feather_falling.snbt3
-rw-r--r--src/test/resources/testdata/items/diamond-pickaxe.snbt3
-rw-r--r--src/test/resources/testdata/items/gemstone-gauntlet.snbt3
-rw-r--r--src/test/resources/testdata/items/hyperion.snbt3
-rw-r--r--src/test/resources/testdata/items/implosion-belt.snbt3
-rw-r--r--src/test/resources/testdata/items/necron-boots.snbt3
-rw-r--r--src/test/resources/testdata/items/pets/lion-item.snbt3
-rw-r--r--src/test/resources/testdata/items/pets/mithril-golem-not-selected.snbt3
-rw-r--r--src/test/resources/testdata/items/pets/rabbit-selected.snbt3
-rw-r--r--src/test/resources/testdata/items/rune-in-sack.snbt3
-rw-r--r--src/test/resources/testdata/items/titanium-drill.snbt3
27 files changed, 418 insertions, 109 deletions
diff --git a/src/test/kotlin/MixinTest.kt b/src/test/kotlin/MixinTest.kt
new file mode 100644
index 0000000..55aa7c2
--- /dev/null
+++ b/src/test/kotlin/MixinTest.kt
@@ -0,0 +1,34 @@
+package moe.nea.firmament.test
+
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import org.spongepowered.asm.mixin.MixinEnvironment
+import org.spongepowered.asm.mixin.transformer.IMixinTransformer
+import moe.nea.firmament.init.MixinPlugin
+
+class MixinTest {
+ @Test
+ fun mixinAudit() {
+ FirmTestBootstrap.bootstrapMinecraft()
+ MixinEnvironment.getCurrentEnvironment().audit()
+ val mp = MixinPlugin.instances.single()
+ Assertions.assertEquals(
+ mp.expectedFullPathMixins,
+ mp.appliedFullPathMixins,
+ )
+ Assertions.assertNotEquals(
+ 0,
+ mp.mixins.size
+ )
+
+ }
+
+ @Test
+ fun hasInstalledMixinTransformer() {
+ Assertions.assertInstanceOf(
+ IMixinTransformer::class.java,
+ MixinEnvironment.getCurrentEnvironment().activeTransformer
+ )
+ }
+}
+
diff --git a/src/test/kotlin/features/macros/KeyComboTrieCreation.kt b/src/test/kotlin/features/macros/KeyComboTrieCreation.kt
new file mode 100644
index 0000000..f0e7a1b
--- /dev/null
+++ b/src/test/kotlin/features/macros/KeyComboTrieCreation.kt
@@ -0,0 +1,103 @@
+package moe.nea.firmament.test.features.macros
+
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import net.minecraft.client.util.InputUtil
+import moe.nea.firmament.features.macros.Branch
+import moe.nea.firmament.features.macros.ComboKeyAction
+import moe.nea.firmament.features.macros.CommandAction
+import moe.nea.firmament.features.macros.KeyComboTrie
+import moe.nea.firmament.features.macros.Leaf
+import moe.nea.firmament.keybindings.SavedKeyBinding
+
+class KeyComboTrieCreation {
+ val basicAction = CommandAction("ac Hello")
+ val aPress = SavedKeyBinding(InputUtil.GLFW_KEY_A)
+ val bPress = SavedKeyBinding(InputUtil.GLFW_KEY_B)
+ val cPress = SavedKeyBinding(InputUtil.GLFW_KEY_C)
+
+ @Test
+ fun testValidShortTrie() {
+ val actions = listOf(
+ ComboKeyAction(basicAction, listOf(aPress)),
+ ComboKeyAction(basicAction, listOf(bPress)),
+ ComboKeyAction(basicAction, listOf(cPress)),
+ )
+ Assertions.assertEquals(
+ Branch(
+ mapOf(
+ aPress to Leaf(basicAction),
+ bPress to Leaf(basicAction),
+ cPress to Leaf(basicAction),
+ ),
+ ), KeyComboTrie.fromComboList(actions)
+ )
+ }
+
+ @Test
+ fun testOverlappingLeafs() {
+ Assertions.assertThrows(IllegalStateException::class.java) {
+ KeyComboTrie.fromComboList(
+ listOf(
+ ComboKeyAction(basicAction, listOf(aPress, aPress)),
+ ComboKeyAction(basicAction, listOf(aPress, aPress)),
+ )
+ )
+ }
+ Assertions.assertThrows(IllegalStateException::class.java) {
+ KeyComboTrie.fromComboList(
+ listOf(
+ ComboKeyAction(basicAction, listOf(aPress)),
+ ComboKeyAction(basicAction, listOf(aPress)),
+ )
+ )
+ }
+ }
+
+ @Test
+ fun testBranchOverlappingLeaf() {
+ Assertions.assertThrows(IllegalStateException::class.java) {
+ KeyComboTrie.fromComboList(
+ listOf(
+ ComboKeyAction(basicAction, listOf(aPress)),
+ ComboKeyAction(basicAction, listOf(aPress, aPress)),
+ )
+ )
+ }
+ }
+ @Test
+ fun testLeafOverlappingBranch() {
+ Assertions.assertThrows(IllegalStateException::class.java) {
+ KeyComboTrie.fromComboList(
+ listOf(
+ ComboKeyAction(basicAction, listOf(aPress, aPress)),
+ ComboKeyAction(basicAction, listOf(aPress)),
+ )
+ )
+ }
+ }
+
+
+ @Test
+ fun testValidNestedTrie() {
+ val actions = listOf(
+ ComboKeyAction(basicAction, listOf(aPress, aPress)),
+ ComboKeyAction(basicAction, listOf(aPress, bPress)),
+ ComboKeyAction(basicAction, listOf(cPress)),
+ )
+ Assertions.assertEquals(
+ Branch(
+ mapOf(
+ aPress to Branch(
+ mapOf(
+ aPress to Leaf(basicAction),
+ bPress to Leaf(basicAction),
+ )
+ ),
+ cPress to Leaf(basicAction),
+ ),
+ ), KeyComboTrie.fromComboList(actions)
+ )
+ }
+
+}
diff --git a/src/test/kotlin/root.kt b/src/test/kotlin/root.kt
index 045fdd5..000ddda 100644
--- a/src/test/kotlin/root.kt
+++ b/src/test/kotlin/root.kt
@@ -24,6 +24,7 @@ object FirmTestBootstrap {
println("Bootstrap completed at $loadEnd after $loadDuration")
}
+ @JvmStatic
fun bootstrapMinecraft() {
}
}
diff --git a/src/test/kotlin/testutil/AutoBootstrapExtension.kt b/src/test/kotlin/testutil/AutoBootstrapExtension.kt
new file mode 100644
index 0000000..6f225a0
--- /dev/null
+++ b/src/test/kotlin/testutil/AutoBootstrapExtension.kt
@@ -0,0 +1,14 @@
+package moe.nea.firmament.test.testutil
+
+import com.google.auto.service.AutoService
+import org.junit.jupiter.api.extension.BeforeAllCallback
+import org.junit.jupiter.api.extension.Extension
+import org.junit.jupiter.api.extension.ExtensionContext
+import moe.nea.firmament.test.FirmTestBootstrap
+
+@AutoService(Extension::class)
+class AutoBootstrapExtension : Extension, BeforeAllCallback {
+ override fun beforeAll(p0: ExtensionContext) {
+ FirmTestBootstrap.bootstrapMinecraft()
+ }
+}
diff --git a/src/test/kotlin/testutil/ItemResources.kt b/src/test/kotlin/testutil/ItemResources.kt
index 107b565..17198f1 100644
--- a/src/test/kotlin/testutil/ItemResources.kt
+++ b/src/test/kotlin/testutil/ItemResources.kt
@@ -1,13 +1,23 @@
package moe.nea.firmament.test.testutil
+import com.mojang.datafixers.DSL
+import com.mojang.datafixers.DataFixUtils
+import com.mojang.datafixers.types.templates.Named
+import com.mojang.serialization.Dynamic
+import com.mojang.serialization.JsonOps
+import net.minecraft.SharedConstants
+import net.minecraft.datafixer.Schemas
+import net.minecraft.datafixer.TypeReferences
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtElement
import net.minecraft.nbt.NbtOps
+import net.minecraft.nbt.NbtString
import net.minecraft.nbt.StringNbtReader
import net.minecraft.registry.RegistryOps
import net.minecraft.text.Text
import net.minecraft.text.TextCodecs
+import moe.nea.firmament.features.debug.ExportedTestConstantMeta
import moe.nea.firmament.test.FirmTestBootstrap
import moe.nea.firmament.util.MC
@@ -24,18 +34,49 @@ object ItemResources {
}
fun loadSNbt(path: String): NbtCompound {
- return StringNbtReader.parse(loadString(path))
+ return StringNbtReader.readCompound(loadString(path))
}
fun getNbtOps(): RegistryOps<NbtElement> = MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE)
+ fun tryMigrateNbt(
+ nbtCompound: NbtCompound,
+ typ: DSL.TypeReference,
+ ): NbtElement {
+ val source = nbtCompound.get("source", ExportedTestConstantMeta.CODEC)
+ nbtCompound.remove("source")
+ if (source.isPresent) {
+ val wrappedNbtSource = if (typ == TypeReferences.TEXT_COMPONENT && source.get().dataVersion < 4325) {
+ // Per 1.21.5 text components are wrapped in a string, which firmament unwrapped in the snbt files
+ NbtString.of(
+ NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbtCompound)
+ .toString())
+ } else {
+ nbtCompound
+ }
+ return Schemas.getFixer()
+ .update(
+ typ,
+ Dynamic(NbtOps.INSTANCE, wrappedNbtSource),
+ source.get().dataVersion,
+ SharedConstants.getGameVersion().saveVersion.id
+ ).value
+ }
+ return nbtCompound
+ }
+
fun loadText(name: String): Text {
- return TextCodecs.CODEC.parse(getNbtOps(), loadSNbt("testdata/chat/$name.snbt"))
- .getOrThrow { IllegalStateException("Could not load test chat '$name': $it") }
+ return TextCodecs.CODEC.parse(
+ getNbtOps(),
+ tryMigrateNbt(loadSNbt("testdata/chat/$name.snbt"), TypeReferences.TEXT_COMPONENT)
+ ).getOrThrow { IllegalStateException("Could not load test chat '$name': $it") }
}
fun loadItem(name: String): ItemStack {
- // TODO: make the load work with enchantments
- return ItemStack.CODEC.parse(getNbtOps(), loadSNbt("testdata/items/$name.snbt"))
- .getOrThrow { IllegalStateException("Could not load test item '$name': $it") }
+ try {
+ val itemNbt = loadSNbt("testdata/items/$name.snbt")
+ return ItemStack.CODEC.parse(getNbtOps(), tryMigrateNbt(itemNbt, TypeReferences.ITEM_STACK)).orThrow
+ } catch (ex: Exception) {
+ throw RuntimeException("Could not load item resource '$name'", ex)
+ }
}
}
diff --git a/src/test/kotlin/testutil/KotestPlugin.kt b/src/test/kotlin/testutil/KotestPlugin.kt
deleted file mode 100644
index 6db50fb..0000000
--- a/src/test/kotlin/testutil/KotestPlugin.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package moe.nea.firmament.test.testutil
-
-import io.kotest.core.config.AbstractProjectConfig
-import io.kotest.core.extensions.Extension
-import moe.nea.firmament.test.FirmTestBootstrap
-
-class KotestPlugin : AbstractProjectConfig() {
- override fun extensions(): List<Extension> {
- return listOf()
- }
-
- override suspend fun beforeProject() {
- FirmTestBootstrap.bootstrapMinecraft()
- super.beforeProject()
- }
-}
diff --git a/src/test/kotlin/util/ColorCodeTest.kt b/src/test/kotlin/util/ColorCodeTest.kt
index 949749e..7c581c5 100644
--- a/src/test/kotlin/util/ColorCodeTest.kt
+++ b/src/test/kotlin/util/ColorCodeTest.kt
@@ -1,57 +1,57 @@
package moe.nea.firmament.test.util
-import io.kotest.core.spec.style.AnnotationSpec
import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
import moe.nea.firmament.util.removeColorCodes
-class ColorCodeTest : AnnotationSpec() {
- @Test
- fun testWhatever() {
- Assertions.assertEquals("", "".removeColorCodes())
- Assertions.assertEquals("", "§".removeColorCodes())
- Assertions.assertEquals("", "§a".removeColorCodes())
- Assertions.assertEquals("ab", "a§ab".removeColorCodes())
- Assertions.assertEquals("ab", "a§ab§§".removeColorCodes())
- Assertions.assertEquals("abc", "a§ab§§c".removeColorCodes())
- Assertions.assertEquals("bc", "§ab§§c".removeColorCodes())
- Assertions.assertEquals("b§lc", "§ab§l§§c".removeColorCodes(true))
- Assertions.assertEquals("b§lc§l", "§ab§l§§c§l".removeColorCodes(true))
- Assertions.assertEquals("§lb§lc", "§l§ab§l§§c".removeColorCodes(true))
- }
-
- @Test
- fun testEdging() {
- Assertions.assertEquals("", "§".removeColorCodes())
- Assertions.assertEquals("a", "a§".removeColorCodes())
- Assertions.assertEquals("b", "§ab§".removeColorCodes())
- }
-
- @Test
- fun `testDouble§`() {
- Assertions.assertEquals("1", "§§1".removeColorCodes())
- }
-
- @Test
- fun testKeepNonColor() {
- Assertions.assertEquals("§k§l§m§n§o§r", "§k§l§m§f§n§o§r".removeColorCodes(true))
- }
-
- @Test
- fun testPlainString() {
- Assertions.assertEquals("bcdefgp", "bcdefgp".removeColorCodes())
- Assertions.assertEquals("", "".removeColorCodes())
- }
-
- @Test
- fun testSomeNormalTestCases() {
- Assertions.assertEquals(
- "You are not currently in a party.",
- "§r§cYou are not currently in a party.§r".removeColorCodes()
- )
- Assertions.assertEquals(
- "Ancient Necron's Chestplate ✪✪✪✪",
- "§dAncient Necron's Chestplate §6✪§6✪§6✪§6✪".removeColorCodes()
- )
- }
+class ColorCodeTest {
+ @Test
+ fun testWhatever() {
+ Assertions.assertEquals("", "".removeColorCodes())
+ Assertions.assertEquals("", "§".removeColorCodes())
+ Assertions.assertEquals("", "§a".removeColorCodes())
+ Assertions.assertEquals("ab", "a§ab".removeColorCodes())
+ Assertions.assertEquals("ab", "a§ab§§".removeColorCodes())
+ Assertions.assertEquals("abc", "a§ab§§c".removeColorCodes())
+ Assertions.assertEquals("bc", "§ab§§c".removeColorCodes())
+ Assertions.assertEquals("b§lc", "§ab§l§§c".removeColorCodes(true))
+ Assertions.assertEquals("b§lc§l", "§ab§l§§c§l".removeColorCodes(true))
+ Assertions.assertEquals("§lb§lc", "§l§ab§l§§c".removeColorCodes(true))
+ }
+
+ @Test
+ fun testEdging() {
+ Assertions.assertEquals("", "§".removeColorCodes())
+ Assertions.assertEquals("a", "a§".removeColorCodes())
+ Assertions.assertEquals("b", "§ab§".removeColorCodes())
+ }
+
+ @Test
+ fun `testDouble§`() {
+ Assertions.assertEquals("1", "§§1".removeColorCodes())
+ }
+
+ @Test
+ fun testKeepNonColor() {
+ Assertions.assertEquals("§k§l§m§n§o§r", "§k§l§m§f§n§o§r".removeColorCodes(true))
+ }
+
+ @Test
+ fun testPlainString() {
+ Assertions.assertEquals("bcdefgp", "bcdefgp".removeColorCodes())
+ Assertions.assertEquals("", "".removeColorCodes())
+ }
+
+ @Test
+ fun testSomeNormalTestCases() {
+ Assertions.assertEquals(
+ "You are not currently in a party.",
+ "§r§cYou are not currently in a party.§r".removeColorCodes()
+ )
+ Assertions.assertEquals(
+ "Ancient Necron's Chestplate ✪✪✪✪",
+ "§dAncient Necron's Chestplate §6✪§6✪§6✪§6✪".removeColorCodes()
+ )
+ }
}
diff --git a/src/test/kotlin/util/TextUtilText.kt b/src/test/kotlin/util/TextUtilText.kt
index 46ed3b4..94ab222 100644
--- a/src/test/kotlin/util/TextUtilText.kt
+++ b/src/test/kotlin/util/TextUtilText.kt
@@ -1,16 +1,18 @@
package moe.nea.firmament.test.util
-import io.kotest.core.spec.style.AnnotationSpec
import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
import moe.nea.firmament.test.testutil.ItemResources
import moe.nea.firmament.util.getLegacyFormatString
-class TextUtilText : AnnotationSpec() {
+class TextUtilText {
@Test
fun testThing() {
// TODO: add more tests that are directly validated with 1.8.9 code
val text = ItemResources.loadText("all-chat")
- Assertions.assertEquals("§r§r§8[§r§9302§r§8] §r§6♫ §r§b[MVP§r§d+§r§b] lrg89§r§f: test§r",
- text.getLegacyFormatString())
+ Assertions.assertEquals(
+ "§r§r§8[§r§9302§r§8] §r§6♫ §r§b[MVP§r§d+§r§b] lrg89§r§f: test§r",
+ text.getLegacyFormatString()
+ )
}
}
diff --git a/src/test/kotlin/util/math/GChainReconciliationTest.kt b/src/test/kotlin/util/math/GChainReconciliationTest.kt
new file mode 100644
index 0000000..380ea5c
--- /dev/null
+++ b/src/test/kotlin/util/math/GChainReconciliationTest.kt
@@ -0,0 +1,75 @@
+package moe.nea.firmament.test.util.math
+
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.Test
+import moe.nea.firmament.util.math.GChainReconciliation
+import moe.nea.firmament.util.math.GChainReconciliation.rotated
+
+class GChainReconciliationTest {
+
+ fun <T> assertEqualCycles(
+ expected: List<T>,
+ actual: List<T>
+ ) {
+ for (offset in expected.indices) {
+ val rotated = expected.rotated(offset)
+ val matchesAtRotation = run {
+ for ((i, v) in actual.withIndex()) {
+ if (rotated[i % rotated.size] != v)
+ return@run false
+ }
+ true
+ }
+ if (matchesAtRotation)
+ return
+ }
+ assertEquals(expected, actual, "Expected arrays to be cycle equivalent")
+ }
+
+ @Test
+ fun testUnfixableCycleNotBeingModified() {
+ assertEquals(
+ listOf(1, 2, 3, 4, 6, 1, 2, 3, 4, 6),
+ GChainReconciliation.reconcileCycles(
+ listOf(1, 2, 3, 4, 6, 1, 2, 3, 4, 6),
+ listOf(2, 3, 4, 5, 1, 2, 3, 4, 5, 1)
+ )
+ )
+ }
+
+ @Test
+ fun testMultipleIndependentHoles() {
+ assertEqualCycles(
+ listOf(1, 2, 3, 4, 5, 6),
+ GChainReconciliation.reconcileCycles(
+ listOf(1, 3, 4, 5, 6, 1, 3, 4, 5, 6),
+ listOf(2, 3, 4, 5, 1, 2, 3, 4, 5, 1)
+ )
+ )
+
+ }
+
+ @Test
+ fun testBigHole() {
+ assertEqualCycles(
+ listOf(1, 2, 3, 4, 5, 6),
+ GChainReconciliation.reconcileCycles(
+ listOf(1, 4, 5, 6, 1, 4, 5, 6),
+ listOf(2, 3, 4, 5, 1, 2, 3, 4, 5, 1)
+ )
+ )
+
+ }
+
+ @Test
+ fun testOneMissingBeingDetected() {
+ assertEqualCycles(
+ listOf(1, 2, 3, 4, 5, 6),
+ GChainReconciliation.reconcileCycles(
+ listOf(1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6),
+ listOf(2, 3, 4, 5, 1, 2, 3, 4, 5, 1)
+ )
+ )
+ }
+}
diff --git a/src/test/kotlin/util/skyblock/AbilityUtilsTest.kt b/src/test/kotlin/util/skyblock/AbilityUtilsTest.kt
index 206a357..9d25aad 100644
--- a/src/test/kotlin/util/skyblock/AbilityUtilsTest.kt
+++ b/src/test/kotlin/util/skyblock/AbilityUtilsTest.kt
@@ -1,7 +1,7 @@
package moe.nea.firmament.test.util.skyblock
-import io.kotest.core.spec.style.AnnotationSpec
import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
import net.minecraft.text.Text
@@ -9,7 +9,7 @@ import moe.nea.firmament.test.testutil.ItemResources
import moe.nea.firmament.util.skyblock.AbilityUtils
import moe.nea.firmament.util.unformattedString
-class AbilityUtilsTest : AnnotationSpec() {
+class AbilityUtilsTest {
fun List<AbilityUtils.ItemAbility>.stripDescriptions() = map {
it.copy(descriptionLines = it.descriptionLines.map { Text.literal(it.unformattedString) })
@@ -24,9 +24,11 @@ class AbilityUtilsTest : AnnotationSpec() {
false,
AbilityUtils.AbilityActivation.RIGHT_CLICK,
null,
- listOf("Throw your pickaxe to create an",
- "explosion mining all ores in a 3 block",
- "radius.").map(Text::literal),
+ listOf(
+ "Throw your pickaxe to create an",
+ "explosion mining all ores in a 3 block",
+ "radius."
+ ).map(Text::literal),
48.seconds
)
),
@@ -43,8 +45,10 @@ class AbilityUtilsTest : AnnotationSpec() {
true,
AbilityUtils.AbilityActivation.RIGHT_CLICK,
null,
- listOf("Grants +200% ⸕ Mining Speed for",
- "10s.").map(Text::literal),
+ listOf(
+ "Grants +200% ⸕ Mining Speed for",
+ "10s."
+ ).map(Text::literal),
2.minutes
)
),
@@ -58,8 +62,10 @@ class AbilityUtilsTest : AnnotationSpec() {
listOf(
AbilityUtils.ItemAbility(
"Instant Transmission", true, AbilityUtils.AbilityActivation.RIGHT_CLICK, 23,
- listOf("Teleport 12 blocks ahead of you and",
- "gain +50 ✦ Speed for 3 seconds.").map(Text::literal),
+ listOf(
+ "Teleport 12 blocks ahead of you and",
+ "gain +50 ✦ Speed for 3 seconds."
+ ).map(Text::literal),
null
),
AbilityUtils.ItemAbility(
@@ -67,9 +73,11 @@ class AbilityUtilsTest : AnnotationSpec() {
false,
AbilityUtils.AbilityActivation.SNEAK_RIGHT_CLICK,
90,
- listOf("Teleport to your targeted block up",
- "to 61 blocks away.",
- "Soulflow Cost: 1").map(Text::literal),
+ listOf(
+ "Teleport to your targeted block up",
+ "to 61 blocks away.",
+ "Soulflow Cost: 1"
+ ).map(Text::literal),
null
)
),
diff --git a/src/test/kotlin/util/skyblock/ItemTypeTest.kt b/src/test/kotlin/util/skyblock/ItemTypeTest.kt
index cca3d13..c0ef2a3 100644
--- a/src/test/kotlin/util/skyblock/ItemTypeTest.kt
+++ b/src/test/kotlin/util/skyblock/ItemTypeTest.kt
@@ -1,26 +1,28 @@
package moe.nea.firmament.test.util.skyblock
-import io.kotest.core.spec.style.ShouldSpec
-import io.kotest.matchers.shouldBe
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.DynamicTest
+import org.junit.jupiter.api.TestFactory
import moe.nea.firmament.test.testutil.ItemResources
import moe.nea.firmament.util.skyblock.ItemType
-class ItemTypeTest
- : ShouldSpec(
- {
- context("ItemType.fromItemstack") {
- listOf(
- "pets/lion-item" to ItemType.PET,
- "pets/rabbit-selected" to ItemType.PET,
- "pets/mithril-golem-not-selected" to ItemType.PET,
- "aspect-of-the-void" to ItemType.SWORD,
- "titanium-drill" to ItemType.DRILL,
- "diamond-pickaxe" to ItemType.PICKAXE,
- "gemstone-gauntlet" to ItemType.GAUNTLET,
- ).forEach { (name, typ) ->
- should("return $typ for $name") {
- ItemType.fromItemStack(ItemResources.loadItem(name)) shouldBe typ
- }
+class ItemTypeTest {
+ @TestFactory
+ fun fromItemstack() =
+ listOf(
+ "pets/lion-item" to ItemType.PET,
+ "pets/rabbit-selected" to ItemType.PET,
+ "pets/mithril-golem-not-selected" to ItemType.PET,
+ "aspect-of-the-void" to ItemType.SWORD,
+ "titanium-drill" to ItemType.DRILL,
+ "diamond-pickaxe" to ItemType.PICKAXE,
+ "gemstone-gauntlet" to ItemType.GAUNTLET,
+ ).map { (name, typ) ->
+ DynamicTest.dynamicTest("return $typ for $name") {
+ Assertions.assertEquals(
+ typ,
+ ItemType.fromItemStack(ItemResources.loadItem(name))
+ )
}
}
- })
+}
diff --git a/src/test/kotlin/util/skyblock/SackUtilTest.kt b/src/test/kotlin/util/skyblock/SackUtilTest.kt
index f93cd2b..e0e3e63 100644
--- a/src/test/kotlin/util/skyblock/SackUtilTest.kt
+++ b/src/test/kotlin/util/skyblock/SackUtilTest.kt
@@ -1,12 +1,12 @@
package moe.nea.firmament.test.util.skyblock
-import io.kotest.core.spec.style.AnnotationSpec
import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
import moe.nea.firmament.test.testutil.ItemResources
import moe.nea.firmament.util.skyblock.SackUtil
import moe.nea.firmament.util.skyblock.SkyBlockItems
-class SackUtilTest : AnnotationSpec() {
+class SackUtilTest {
@Test
fun testOneRottenFlesh() {
Assertions.assertEquals(
diff --git a/src/test/resources/testdata/chat/all-chat.snbt b/src/test/resources/testdata/chat/all-chat.snbt
index 15cc2de..386194b 100644
--- a/src/test/resources/testdata/chat/all-chat.snbt
+++ b/src/test/resources/testdata/chat/all-chat.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
extra: [
{
bold: 0b,
diff --git a/src/test/resources/testdata/chat/sacks/gain-and-lose-regular.snbt b/src/test/resources/testdata/chat/sacks/gain-and-lose-regular.snbt
index 924a558..d7b8b90 100644
--- a/src/test/resources/testdata/chat/sacks/gain-and-lose-regular.snbt
+++ b/src/test/resources/testdata/chat/sacks/gain-and-lose-regular.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
color: "#FFAA00",
extra: [
{
diff --git a/src/test/resources/testdata/chat/sacks/gain-rotten-flesh.snbt b/src/test/resources/testdata/chat/sacks/gain-rotten-flesh.snbt
index 924a558..d7b8b90 100644
--- a/src/test/resources/testdata/chat/sacks/gain-rotten-flesh.snbt
+++ b/src/test/resources/testdata/chat/sacks/gain-rotten-flesh.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
color: "#FFAA00",
extra: [
{
diff --git a/src/test/resources/testdata/items/aspect-of-the-void.snbt b/src/test/resources/testdata/items/aspect-of-the-void.snbt
index 180c069..9ffd385 100644
--- a/src/test/resources/testdata/items/aspect-of-the-void.snbt
+++ b/src/test/resources/testdata/items/aspect-of-the-void.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/books/feather_falling.snbt b/src/test/resources/testdata/items/books/feather_falling.snbt
index 1de4632..4a0b7c6 100644
--- a/src/test/resources/testdata/items/books/feather_falling.snbt
+++ b/src/test/resources/testdata/items/books/feather_falling.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/diamond-pickaxe.snbt b/src/test/resources/testdata/items/diamond-pickaxe.snbt
index cce12f9..aa5e590 100644
--- a/src/test/resources/testdata/items/diamond-pickaxe.snbt
+++ b/src/test/resources/testdata/items/diamond-pickaxe.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/gemstone-gauntlet.snbt b/src/test/resources/testdata/items/gemstone-gauntlet.snbt
index 92ce739..92bb806 100644
--- a/src/test/resources/testdata/items/gemstone-gauntlet.snbt
+++ b/src/test/resources/testdata/items/gemstone-gauntlet.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/hyperion.snbt b/src/test/resources/testdata/items/hyperion.snbt
index c57d457..f0025b9 100644
--- a/src/test/resources/testdata/items/hyperion.snbt
+++ b/src/test/resources/testdata/items/hyperion.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/implosion-belt.snbt b/src/test/resources/testdata/items/implosion-belt.snbt
index b73542d..875047d 100644
--- a/src/test/resources/testdata/items/implosion-belt.snbt
+++ b/src/test/resources/testdata/items/implosion-belt.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/necron-boots.snbt b/src/test/resources/testdata/items/necron-boots.snbt
index 35f8cf0..fd740ce 100644
--- a/src/test/resources/testdata/items/necron-boots.snbt
+++ b/src/test/resources/testdata/items/necron-boots.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/pets/lion-item.snbt b/src/test/resources/testdata/items/pets/lion-item.snbt
index 6e92685..c364032 100644
--- a/src/test/resources/testdata/items/pets/lion-item.snbt
+++ b/src/test/resources/testdata/items/pets/lion-item.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [
diff --git a/src/test/resources/testdata/items/pets/mithril-golem-not-selected.snbt b/src/test/resources/testdata/items/pets/mithril-golem-not-selected.snbt
index c0ef585..79f32c9 100644
--- a/src/test/resources/testdata/items/pets/mithril-golem-not-selected.snbt
+++ b/src/test/resources/testdata/items/pets/mithril-golem-not-selected.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:custom_data": {
id: "PET",
diff --git a/src/test/resources/testdata/items/pets/rabbit-selected.snbt b/src/test/resources/testdata/items/pets/rabbit-selected.snbt
index 48a6f6f..d4c7235 100644
--- a/src/test/resources/testdata/items/pets/rabbit-selected.snbt
+++ b/src/test/resources/testdata/items/pets/rabbit-selected.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:custom_data": {
id: "PET",
diff --git a/src/test/resources/testdata/items/rune-in-sack.snbt b/src/test/resources/testdata/items/rune-in-sack.snbt
index b15488a..4624c0f 100644
--- a/src/test/resources/testdata/items/rune-in-sack.snbt
+++ b/src/test/resources/testdata/items/rune-in-sack.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:custom_data": {
},
diff --git a/src/test/resources/testdata/items/titanium-drill.snbt b/src/test/resources/testdata/items/titanium-drill.snbt
index e3b6819..e49c6b0 100644
--- a/src/test/resources/testdata/items/titanium-drill.snbt
+++ b/src/test/resources/testdata/items/titanium-drill.snbt
@@ -1,4 +1,7 @@
{
+ source: {
+ dataVersion: 4189,
+ },
components: {
"minecraft:attribute_modifiers": {
modifiers: [