aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/kotlin/io/github/moulberry/notenoughupdates/util/PetLevelingTest.kt403
1 files changed, 403 insertions, 0 deletions
diff --git a/src/test/kotlin/io/github/moulberry/notenoughupdates/util/PetLevelingTest.kt b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/PetLevelingTest.kt
new file mode 100644
index 00000000..43a0e3fd
--- /dev/null
+++ b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/PetLevelingTest.kt
@@ -0,0 +1,403 @@
+/*
+ * Copyright (C) 2022 NotEnoughUpdates contributors
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.util
+
+import com.google.gson.Gson
+import com.google.gson.JsonObject
+import io.github.moulberry.notenoughupdates.miscfeatures.PetInfoOverlay
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+
+internal class PetLevelingTest {
+
+ val testJsonString = """
+ {
+ "pet_rarity_offset": {
+ "COMMON": 0,
+ "UNCOMMON": 6,
+ "RARE": 11,
+ "EPIC": 16,
+ "LEGENDARY": 20,
+ "MYTHIC": 20
+ },
+ "pet_levels": [
+ 100,
+ 110,
+ 120,
+ 130,
+ 145,
+ 160,
+ 175,
+ 190,
+ 210,
+ 230,
+ 250,
+ 275,
+ 300,
+ 330,
+ 360,
+ 400,
+ 440,
+ 490,
+ 540,
+ 600,
+ 660,
+ 730,
+ 800,
+ 880,
+ 960,
+ 1050,
+ 1150,
+ 1260,
+ 1380,
+ 1510,
+ 1650,
+ 1800,
+ 1960,
+ 2130,
+ 2310,
+ 2500,
+ 2700,
+ 2920,
+ 3160,
+ 3420,
+ 3700,
+ 4000,
+ 4350,
+ 4750,
+ 5200,
+ 5700,
+ 6300,
+ 7000,
+ 7800,
+ 8700,
+ 9700,
+ 10800,
+ 12000,
+ 13300,
+ 14700,
+ 16200,
+ 17800,
+ 19500,
+ 21300,
+ 23200,
+ 25200,
+ 27400,
+ 29800,
+ 32400,
+ 35200,
+ 38200,
+ 41400,
+ 44800,
+ 48400,
+ 52200,
+ 56200,
+ 60400,
+ 64800,
+ 69400,
+ 74200,
+ 79200,
+ 84700,
+ 90700,
+ 97200,
+ 104200,
+ 111700,
+ 119700,
+ 128200,
+ 137200,
+ 146700,
+ 156700,
+ 167700,
+ 179700,
+ 192700,
+ 206700,
+ 221700,
+ 237700,
+ 254700,
+ 272700,
+ 291700,
+ 311700,
+ 333700,
+ 357700,
+ 383700,
+ 411700,
+ 441700,
+ 476700,
+ 516700,
+ 561700,
+ 611700,
+ 666700,
+ 726700,
+ 791700,
+ 861700,
+ 936700,
+ 1016700,
+ 1101700,
+ 1191700,
+ 1286700,
+ 1386700,
+ 1496700,
+ 1616700,
+ 1746700,
+ 1886700
+ ],
+ "custom_pet_leveling": {
+ "GOLDEN_DRAGON": {
+ "type": 1,
+ "pet_levels": [
+ 0,
+ 5555,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700,
+ 1886700
+ ],
+ "max_level": 200
+ }
+ },
+ "pet_types": {
+ "ROCK": "MINING",
+ "BAT": "MINING",
+ "MITHRIL_GOLEM": "MINING",
+ "WITHER_SKELETON": "MINING",
+ "SILVERFISH": "MINING",
+ "ENDERMITE": "MINING",
+ "BEE": "FARMING",
+ "CHICKEN": "FARMING",
+ "PIG": "FARMING",
+ "RABBIT": "FARMING",
+ "ELEPHANT": "FARMING",
+ "BLUE_WHALE": "FISHING",
+ "DOLPHIN": "FISHING",
+ "FLYING_FISH": "FISHING",
+ "BABY_YETI": "FISHING",
+ "MEGALODON": "FISHING",
+ "SQUID": "FISHING",
+ "JELLYFISH": "ALCHEMY",
+ "SHEEP": "ALCHEMY",
+ "PARROT": "ALCHEMY",
+ "MONKEY": "FORAGING",
+ "GIRAFFE": "FORAGING",
+ "LION": "FORAGING",
+ "OCELOT": "FORAGING",
+ "BLACK_CAT": "COMBAT",
+ "BLAZE": "COMBAT",
+ "ENDER_DRAGON": "COMBAT",
+ "ENDERMAN": "COMBAT",
+ "GHOUL": "COMBAT",
+ "GOLEM": "COMBAT",
+ "GRIFFIN": "COMBAT",
+ "HORSE": "COMBAT",
+ "HOUND": "COMBAT",
+ "JERRY": "COMBAT",
+ "MAGMA_CUBE": "COMBAT",
+ "PHOENIX": "COMBAT",
+ "PIGMAN": "COMBAT",
+ "SKELETON": "COMBAT",
+ "SKELETON_HORSE": "COMBAT",
+ "SNOWMAN": "COMBAT",
+ "SPIDER": "COMBAT",
+ "SPIRIT": "COMBAT",
+ "TARANTULA": "COMBAT",
+ "TURTLE": "COMBAT",
+ "TIGER": "COMBAT",
+ "ZOMBIE": "COMBAT",
+ "WOLF": "COMBAT",
+ "GUARDIAN": "ENCHANTING",
+ "GRANDMA_WOLF": "COMBAT",
+ "ARMADILLO": "MINING",
+ "BAL": "COMBAT",
+ "GOLDEN_DRAGON": "COMBAT",
+ "RAT": "COMBAT",
+ "SCATHA": "MINING",
+ "AMMONITE": "FISHING",
+ "SNAIL": "MINING",
+ "MOOSHROOM_COW": "FARMING",
+ "KUUDRA": "COMBAT"
+ }
+ }
+ """
+
+ val testJson = Gson().fromJson(testJsonString, JsonObject::class.java)
+
+ @BeforeEach
+ fun setup() {
+ PetLeveling.petConstants = testJson
+ }
+
+ @Test
+ fun testPetLevelGrandmaWolf() {
+ val leveling = PetLeveling.getPetLevelingForPet0("GRANDMA_WOLF", PetInfoOverlay.Rarity.LEGENDARY)
+ val level = leveling.getPetLevel(22_500_000.0)
+ Assertions.assertEquals(98, level.currentLevel)
+ Assertions.assertEquals(1746700, level.expRequiredForNextLevel)
+ Assertions.assertEquals(780170.0F, level.expInCurrentLevel, 0.5F)
+ }
+
+ @Test
+ fun testPetLevelCommon() {
+ val leveling = PetLeveling.getPetLevelingForPet0("BEE", PetInfoOverlay.Rarity.COMMON)
+ val level = leveling.getPetLevel(197806.0385900295)
+ Assertions.assertEquals(58, level.currentLevel)
+ Assertions.assertEquals(19500, level.expRequiredForNextLevel)
+ Assertions.assertEquals(5321.0F, level.expInCurrentLevel, 0.5F)
+ }
+
+ @Test
+ fun testGoldenDragon() {
+ val leveling = PetLeveling.getPetLevelingForPet0("GOLDEN_DRAGON", PetInfoOverlay.Rarity.LEGENDARY)
+ val level = leveling.getPetLevel(95179565.04472463)
+ Assertions.assertEquals(139, level.currentLevel)
+ Assertions.assertEquals(1886700, level.expRequiredForNextLevel)
+ Assertions.assertEquals(12828.0F, level.expInCurrentLevel, 0.5F)
+ }
+
+ @Test
+ fun testEpicRabbit() {
+ val leveling = PetLeveling.getPetLevelingForPet0("RABBIT", PetInfoOverlay.Rarity.EPIC)
+ val level = leveling.getPetLevel(2864013.5452096704)
+ Assertions.assertEquals(74, level.currentLevel)
+ Assertions.assertEquals(206700, level.expRequiredForNextLevel)
+ Assertions.assertEquals(114713.0F, level.expInCurrentLevel, 0.5F)
+ }
+
+ @Test
+ fun testPetLevelEndermite() {
+ val leveling = PetLeveling.getPetLevelingForPet0("ENDERMITE", PetInfoOverlay.Rarity.LEGENDARY)
+ val level = leveling.getPetLevel(1_206_848.0)
+ Assertions.assertEquals(59, level.currentLevel)
+ Assertions.assertEquals(97200, level.expRequiredForNextLevel)
+ Assertions.assertEquals(1318.0F, level.expInCurrentLevel, 0.5F)
+ }
+ @Test
+ fun testLevel109GoldenDragon() {
+ val leveling = PetLeveling.getPetLevelingForPet0("GOLDEN_DRAGON", PetInfoOverlay.Rarity.LEGENDARY)
+ val level = leveling.getPetLevel(3.947913361545298E7)
+ Assertions.assertEquals(109, level.currentLevel)
+ Assertions.assertEquals(913448.0F, level.expInCurrentLevel, 0.5F)
+ }
+
+ @Test
+ fun testExpRequiredForLevel140() {
+ val leveling = PetLeveling.getPetLevelingForPet0("GOLDEN_DRAGON", PetInfoOverlay.Rarity.LEGENDARY)
+ val petExpForLevel = leveling.getPetExpForLevel(140)
+ val level = leveling.getPetLevel(petExpForLevel.toDouble())
+ Assertions.assertEquals(97053440, petExpForLevel)
+ Assertions.assertEquals(140, level.currentLevel)
+ Assertions.assertEquals(0.0F, level.expInCurrentLevel, 1.0F)
+ Assertions.assertEquals(0.0F, level.percentageToNextLevel, 1.0F)
+ }
+
+}