From b0f695e0ed3f36847e913dbe7e353107f4f59e53 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:03:37 +0100 Subject: [PATCH] Add unit repair api test --- .../cuanvil/api/UnitRepairApiTest.java | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTest.java diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTest.java b/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTest.java new file mode 100644 index 0000000..56028af --- /dev/null +++ b/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTest.java @@ -0,0 +1,119 @@ +package xyz.alexcrea.cuanvil.api; + +import org.bukkit.Material; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.AnvilInventory; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.Repairable; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockbukkit.mockbukkit.entity.PlayerMock; +import org.mockbukkit.mockbukkit.inventory.ItemStackMock; +import xyz.alexcrea.cuanvil.config.ConfigHolder; +import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest; +import xyz.alexcrea.cuanvil.util.AnvilFuseTestData; +import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil; + +import static org.junit.jupiter.api.Assertions.*; + +public class UnitRepairApiTest extends ConfigResetCustomAnvilTest { + + private AnvilInventory anvil; + private PlayerMock player; + + @Override + @BeforeEach + public void setUp() { + super.setUp(); + // Mock used player & open anvil + player = server.addPlayer(); + + Inventory anvil = server.createInventory(player, InventoryType.ANVIL); + + this.anvil = (AnvilInventory) anvil; + player.openInventory(anvil); + + ConfigHolder.DEFAULT_CONFIG.getConfig().set("debug_log", true); + ConfigHolder.DEFAULT_CONFIG.getConfig().set("debug_log_verbose", true); + } + + @Test + void vanillaUnitRepair(){ + ItemStack damagedPickaxe = new ItemStackMock(Material.DIAMOND_PICKAXE); + damagedPickaxe.setDurability((short) (Material.DIAMOND_PICKAXE.getMaxDurability() -1)); + + ItemStack resultPickaxe = new ItemStackMock(Material.DIAMOND_PICKAXE); + resultPickaxe.setDurability((short) (Material.DIAMOND_PICKAXE.getMaxDurability()/2)); + ItemMeta meta = resultPickaxe.getItemMeta(); + ((Repairable) meta).setRepairCost(1); + + ItemStack diamond2 = new ItemStackMock(Material.DIAMOND, 2); + + AnvilFuseTestData legalResultData = new AnvilFuseTestData( + damagedPickaxe, diamond2, + resultPickaxe, + // TODO add expected price + null + ); + + AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData); + } + + @Test + void removeUnitRepair(){ + ItemStack damagedPickaxe = new ItemStackMock(Material.DIAMOND_PICKAXE); + damagedPickaxe.setDurability((short) (Material.DIAMOND_PICKAXE.getMaxDurability() -1)); + + ItemStack diamond2 = new ItemStackMock(Material.DIAMOND, 2); + + AnvilFuseTestData nullResultData = new AnvilFuseTestData( + damagedPickaxe, diamond2, + null + ); + + // Remove unit repair + assertTrue(UnitRepairApi.removeUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE)); + + AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData); + + // see override + assertFalse(UnitRepairApi.addUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE, 0.25)); + assertTrue(UnitRepairApi.addUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE, 0.25, true)); + } + + + @Test + void addUnitRepair(){ + ItemStack damagedPickaxe = new ItemStackMock(Material.DIAMOND_PICKAXE); + damagedPickaxe.setDurability((short) (Material.DIAMOND_PICKAXE.getMaxDurability() -1)); + + ItemStack resultPickaxe = new ItemStackMock(Material.DIAMOND_PICKAXE); + resultPickaxe.setDurability((short) (Material.DIAMOND_PICKAXE.getMaxDurability()/2)); + ItemMeta meta = resultPickaxe.getItemMeta(); + ((Repairable) meta).setRepairCost(1); + + ItemStack stick2 = new ItemStackMock(Material.STICK, 2); + + AnvilFuseTestData nullResultData = new AnvilFuseTestData( + damagedPickaxe, stick2, + null + ); + AnvilFuseTestData legalResultData = new AnvilFuseTestData( + damagedPickaxe, stick2, + resultPickaxe, + // TODO add expected price + null + ); + + AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData); + + // Add unit repair + assertTrue(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE)); + assertFalse(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE)); + AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData); + } + +}