aboutsummaryrefslogtreecommitdiff
path: root/src/test/kotlin
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/kotlin')
-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.kt34
-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.kt4
-rw-r--r--src/test/kotlin/util/math/ProjectionsBoxTest.kt28
-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/kotlin/util/skyblock/TabListAPITest.kt48
-rw-r--r--src/test/kotlin/util/skyblock/TimestampTest.kt28
15 files changed, 380 insertions, 116 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 17198f1..e996fc2 100644
--- a/src/test/kotlin/testutil/ItemResources.kt
+++ b/src/test/kotlin/testutil/ItemResources.kt
@@ -1,8 +1,6 @@
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
@@ -20,6 +18,7 @@ import net.minecraft.text.TextCodecs
import moe.nea.firmament.features.debug.ExportedTestConstantMeta
import moe.nea.firmament.test.FirmTestBootstrap
import moe.nea.firmament.util.MC
+import moe.nea.firmament.util.mc.MCTabListAPI
object ItemResources {
init {
@@ -36,11 +35,12 @@ object ItemResources {
fun loadSNbt(path: String): NbtCompound {
return StringNbtReader.readCompound(loadString(path))
}
+
fun getNbtOps(): RegistryOps<NbtElement> = MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE)
fun tryMigrateNbt(
nbtCompound: NbtCompound,
- typ: DSL.TypeReference,
+ typ: DSL.TypeReference?,
): NbtElement {
val source = nbtCompound.get("source", ExportedTestConstantMeta.CODEC)
nbtCompound.remove("source")
@@ -49,21 +49,33 @@ object ItemResources {
// 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())
+ .toString()
+ )
} else {
nbtCompound
}
- return Schemas.getFixer()
- .update(
- typ,
- Dynamic(NbtOps.INSTANCE, wrappedNbtSource),
- source.get().dataVersion,
- SharedConstants.getGameVersion().saveVersion.id
- ).value
+ if (typ != null) {
+ return Schemas.getFixer()
+ .update(
+ typ,
+ Dynamic(NbtOps.INSTANCE, wrappedNbtSource),
+ source.get().dataVersion,
+ SharedConstants.getGameVersion().saveVersion.id
+ ).value
+ } else {
+ wrappedNbtSource
+ }
}
return nbtCompound
}
+ fun loadTablist(name: String): MCTabListAPI.CurrentTabList {
+ return MCTabListAPI.CurrentTabList.CODEC.parse(
+ getNbtOps(),
+ tryMigrateNbt(loadSNbt("testdata/tablist/$name.snbt"), null),
+ ).getOrThrow { IllegalStateException("Could not load tablist '$name': $it") }
+ }
+
fun loadText(name: String): Text {
return TextCodecs.CODEC.parse(
getNbtOps(),
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
index 502bd9e..380ea5c 100644
--- a/src/test/kotlin/util/math/GChainReconciliationTest.kt
+++ b/src/test/kotlin/util/math/GChainReconciliationTest.kt
@@ -1,12 +1,12 @@
package moe.nea.firmament.test.util.math
-import io.kotest.core.spec.style.AnnotationSpec
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 : AnnotationSpec() {
+class GChainReconciliationTest {
fun <T> assertEqualCycles(
expected: List<T>,
diff --git a/src/test/kotlin/util/math/ProjectionsBoxTest.kt b/src/test/kotlin/util/math/ProjectionsBoxTest.kt
new file mode 100644
index 0000000..04720a3
--- /dev/null
+++ b/src/test/kotlin/util/math/ProjectionsBoxTest.kt
@@ -0,0 +1,28 @@
+package moe.nea.firmament.test.util.math
+
+import java.util.stream.Stream
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.DynamicTest
+import org.junit.jupiter.api.TestFactory
+import kotlin.streams.asStream
+import net.minecraft.util.math.Vec2f
+import moe.nea.firmament.util.math.Projections
+
+class ProjectionsBoxTest {
+ val Double.degrees get() = Math.toRadians(this)
+
+ @TestFactory
+ fun testProjections(): Stream<DynamicTest> {
+ return sequenceOf(
+ 0.0.degrees to Vec2f(1F, 0F),
+ 63.4349.degrees to Vec2f(0.5F, 1F),
+ ).map { (angle, expected) ->
+ DynamicTest.dynamicTest("ProjectionsBoxTest::projectAngleOntoUnitBox(${angle})") {
+ val actual = Projections.Two.projectAngleOntoUnitBox(angle)
+ fun msg() = "Expected (${expected.x}, ${expected.y}) got (${actual.x}, ${actual.y})"
+ Assertions.assertEquals(expected.x, actual.x, 0.0001F, ::msg)
+ Assertions.assertEquals(expected.y, actual.y, 0.0001F, ::msg)
+ }
+ }.asStream()
+ }
+}
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/kotlin/util/skyblock/TabListAPITest.kt b/src/test/kotlin/util/skyblock/TabListAPITest.kt
new file mode 100644
index 0000000..26eafe0
--- /dev/null
+++ b/src/test/kotlin/util/skyblock/TabListAPITest.kt
@@ -0,0 +1,48 @@
+package moe.nea.firmament.test.util.skyblock
+
+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.TabListAPI
+
+class TabListAPITest {
+ val tablist = ItemResources.loadTablist("dungeon_hub")
+
+ @Test
+ fun checkWithTitle() {
+ Assertions.assertEquals(
+ listOf(
+ "Profile: Strawberry",
+ " SB Level: [210] 26/100 XP",
+ " Bank: 1.4B",
+ " Interest: 12 Hours (689.1k)",
+ ),
+ TabListAPI.getWidgetLines(TabListAPI.WidgetName.PROFILE, includeTitle = true, from = tablist).map { it.string })
+ }
+
+ @Test
+ fun checkEndOfColumn() {
+ Assertions.assertEquals(
+ listOf(
+ " Bonzo IV: 110/150",
+ " Scarf II: 25/50",
+ " The Professor IV: 141/150",
+ " Thorn I: 29/50",
+ " Livid II: 91/100",
+ " Sadan V: 388/500",
+ " Necron VI: 531/750",
+ ),
+ TabListAPI.getWidgetLines(TabListAPI.WidgetName.COLLECTION, from = tablist).map { it.string }
+ )
+ }
+
+ @Test
+ fun checkWithoutTitle() {
+ Assertions.assertEquals(
+ listOf(
+ " Undead: 1,907",
+ " Wither: 318",
+ ),
+ TabListAPI.getWidgetLines(TabListAPI.WidgetName.ESSENCE, from = tablist).map { it.string })
+ }
+}
diff --git a/src/test/kotlin/util/skyblock/TimestampTest.kt b/src/test/kotlin/util/skyblock/TimestampTest.kt
new file mode 100644
index 0000000..b960cb9
--- /dev/null
+++ b/src/test/kotlin/util/skyblock/TimestampTest.kt
@@ -0,0 +1,28 @@
+package moe.nea.firmament.test.util.skyblock
+
+import java.time.Instant
+import java.time.ZonedDateTime
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import moe.nea.firmament.test.testutil.ItemResources
+import moe.nea.firmament.util.SBData
+import moe.nea.firmament.util.timestamp
+
+class TimestampTest {
+
+ @Test
+ fun testLongTimestamp() {
+ Assertions.assertEquals(
+ Instant.ofEpochSecond(1658091600),
+ ItemResources.loadItem("hyperion").timestamp
+ )
+ }
+
+ @Test
+ fun testStringTimestamp() {
+ Assertions.assertEquals(
+ ZonedDateTime.of(2021, 10, 11, 15, 39, 0, 0, SBData.hypixelTimeZone).toInstant(),
+ ItemResources.loadItem("backpack-in-menu").timestamp
+ )
+ }
+}