add unit test for new features

This commit is contained in:
alexcrea 2025-07-05 23:04:42 +02:00
parent a0fa1e3fe2
commit e93c2cc121
Signed by: alexcrea
GPG key ID: E346CD16413450E3
9 changed files with 145 additions and 66 deletions

View file

@ -88,16 +88,16 @@ public class EnchantmentUtilTests extends ConfigResetCustomAnvilTest {
); );
// Test with no permission // Test with no permission
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData2); nullResultData2.executeTest(anvil, player);
// Add permission // Add permission
PermissionAttachment attachment = player.addAttachment(plugin); PermissionAttachment attachment = player.addAttachment(plugin);
attachment.setPermission(permission, true); attachment.setPermission(permission, true);
// Test with new permission // Test with new permission
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); legalResultData2.executeTest(anvil, player);
} }
@Test @Test
@ -161,24 +161,24 @@ public class EnchantmentUtilTests extends ConfigResetCustomAnvilTest {
); );
// Test failing result first // Test failing result first
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData2); nullResultData2.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData3); nullResultData3.executeTest(anvil, player);
// Test working sharpness 2 // Test working sharpness 2
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
// Set merge limit to 2 & test // Set merge limit to 2 & test
ConfigHolder.DEFAULT_CONFIG.getConfig().set("disable-merge-over.minecraft:sharpness", 1); ConfigHolder.DEFAULT_CONFIG.getConfig().set("disable-merge-over.minecraft:sharpness", 1);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
// Add permission // Add permission
PermissionAttachment attachment = player.addAttachment(plugin); PermissionAttachment attachment = player.addAttachment(plugin);
attachment.setPermission(permission, true); attachment.setPermission(permission, true);
// Test working sharpness 2 // Test working sharpness 2
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); legalResultData2.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData3); legalResultData3.executeTest(anvil, player);
} }
} }

View file

@ -67,7 +67,7 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
5 5
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, data); data.executeTest(anvil, player);
} }
@Test @Test
@ -87,7 +87,7 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
5 5
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, data); data.executeTest(anvil, player);
} }
@Test @Test
@ -101,7 +101,7 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
null null
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, data); data.executeTest(anvil, player);
} }
// Note: currently anvil can only have null name. maybe handle differently later // Note: currently anvil can only have null name. maybe handle differently later
@ -117,10 +117,10 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
AnvilFuseTestData data = new AnvilFuseTestData( AnvilFuseTestData data = new AnvilFuseTestData(
base, null, base, null,
expected, expected, null, expected, expected, null,
1, 1, null 1, null, 1
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, data); data.executeTest(anvil, player);
} }
} }

View file

@ -71,7 +71,7 @@ public class ConflictApiTests extends ConfigResetCustomAnvilTest {
Assertions.assertNotNull(sharpness); Assertions.assertNotNull(sharpness);
// Testing default conflict (illegal item should not be produced) // Testing default conflict (illegal item should not be produced)
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
// Try to find & remove conflict // Try to find & remove conflict
EnchantConflictGroup conflict = findGroup("sword_enchant_conflict"); EnchantConflictGroup conflict = findGroup("sword_enchant_conflict");
@ -79,7 +79,7 @@ public class ConflictApiTests extends ConfigResetCustomAnvilTest {
// Test what happen when we remove the conflict (illegal item should be allowed) // Test what happen when we remove the conflict (illegal item should be allowed)
ConflictAPI.removeConflict(conflict); ConflictAPI.removeConflict(conflict);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
// We create and add a new conflict // We create and add a new conflict
ConflictBuilder builder = new ConflictBuilder("sword_enchant_conflict"); ConflictBuilder builder = new ConflictBuilder("sword_enchant_conflict");
@ -88,11 +88,11 @@ public class ConflictApiTests extends ConfigResetCustomAnvilTest {
// Nothing should change as it is not new: it was previously deleted // Nothing should change as it is not new: it was previously deleted
Assertions.assertFalse(builder.registerIfNew()); Assertions.assertFalse(builder.registerIfNew());
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
// Now the conflict should be registered and conflict should exist // Now the conflict should be registered and conflict should exist
Assertions.assertTrue(builder.registerIfAbsent()); Assertions.assertTrue(builder.registerIfAbsent());
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
} }
@Test @Test

View file

@ -1,6 +1,7 @@
package xyz.alexcrea.cuanvil.api; package xyz.alexcrea.cuanvil.api;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.event.Event;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -11,10 +12,11 @@ import org.junit.jupiter.api.Test;
import org.mockbukkit.mockbukkit.entity.PlayerMock; import org.mockbukkit.mockbukkit.entity.PlayerMock;
import org.mockbukkit.mockbukkit.inventory.ItemStackMock; import org.mockbukkit.mockbukkit.inventory.ItemStackMock;
import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.data.AnvilClickTestData;
import xyz.alexcrea.cuanvil.data.TestDataContainer;
import xyz.alexcrea.cuanvil.recipe.AnvilCustomRecipe; import xyz.alexcrea.cuanvil.recipe.AnvilCustomRecipe;
import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest; import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest;
import xyz.alexcrea.cuanvil.data.AnvilFuseTestData; import xyz.alexcrea.cuanvil.data.AnvilFuseTestData;
import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
@ -57,14 +59,14 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
); );
// Testing default conflict (no recipe exist) // Testing default conflict (no recipe exist)
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
// Add and test recipe // Add and test recipe
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName); AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(true).setLeftItem(stick).setResultItem(stick).setLevelCostPerCraft(2); builder.setExactCount(true).setLeftItem(stick).setResultItem(stick).setLevelCostPerCraft(2);
assertTrue(builder.registerIfAbsent()); assertTrue(builder.registerIfAbsent());
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
AnvilCustomRecipe recipe = getByName(recipeName); AnvilCustomRecipe recipe = getByName(recipeName);
assertNotNull(recipe); assertNotNull(recipe);
@ -72,21 +74,21 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
// Remove recipe // Remove recipe
assertTrue(CustomAnvilRecipeApi.removeRecipe(recipe)); assertTrue(CustomAnvilRecipeApi.removeRecipe(recipe));
assertFalse(CustomAnvilRecipeApi.removeRecipe(recipe)); assertFalse(CustomAnvilRecipeApi.removeRecipe(recipe));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
recipe = getByName(recipeName); recipe = getByName(recipeName);
assertNull(recipe); assertNull(recipe);
// Try to add deleted recipe with no override (should not add) // Try to add deleted recipe with no override (should not add)
assertFalse(CustomAnvilRecipeApi.addRecipe(builder, false)); assertFalse(CustomAnvilRecipeApi.addRecipe(builder, false));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
recipe = getByName(recipeName); recipe = getByName(recipeName);
assertNull(recipe); assertNull(recipe);
// Try to add deleted recipe with override (should add) // Try to add deleted recipe with override (should add)
assertTrue(CustomAnvilRecipeApi.addRecipe(builder, true)); assertTrue(CustomAnvilRecipeApi.addRecipe(builder, true));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
recipe = getByName(recipeName); recipe = getByName(recipeName);
assertNotNull(recipe); assertNotNull(recipe);
@ -119,7 +121,7 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
null, null null, null
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName); AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(false) builder.setExactCount(false)
@ -130,8 +132,8 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
assertTrue(builder.registerIfAbsent()); assertTrue(builder.registerIfAbsent());
// Now working test // Now working test
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData1); legalResultData1.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); legalResultData2.executeTest(anvil, player);
} }
@Test @Test
@ -142,26 +144,37 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
ItemStack stick5 = new ItemStackMock(Material.STICK, 5); ItemStack stick5 = new ItemStackMock(Material.STICK, 5);
ItemStack stick10 = new ItemStackMock(Material.STICK, 10); ItemStack stick10 = new ItemStackMock(Material.STICK, 10);
AnvilFuseTestData nullResultData = new AnvilFuseTestData( AnvilFuseTestData nullResultData = new AnvilFuseTestData(
stick, stick, stick, stick,
null null
); );
AnvilFuseTestData legalResultData1 = new AnvilFuseTestData( TestDataContainer legalResultData1 = new TestDataContainer(new AnvilFuseTestData(
stick, stick, stick, stick,
null, stick2, null, null, stick2, null,
1, 1,
null, null null, null
); ), new AnvilClickTestData(
null, null, null, stick2,
1,
Event.Result.DENY, true, Event.Result.DENY
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData( ));
TestDataContainer legalResultData2 = new TestDataContainer(new AnvilFuseTestData(
stick5, stick, stick5, stick,
null, stick10, null, null, stick10, null,
4, 4,
null, null null, null
); ), new AnvilClickTestData(
null, null, null, stick10,
4,
Event.Result.DENY, true, Event.Result.DENY
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); ));
nullResultData.executeTest(anvil, player);
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName); AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(false) builder.setExactCount(false)
@ -173,8 +186,8 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
assertTrue(builder.registerIfAbsent()); assertTrue(builder.registerIfAbsent());
// Now working test // Now working test
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData1); legalResultData1.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); legalResultData2.executeTest(anvil, player);
} }
@Test @Test
@ -190,21 +203,30 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
null null
); );
AnvilFuseTestData legalResultData1 = new AnvilFuseTestData( TestDataContainer legalResultData1 = new TestDataContainer(new AnvilFuseTestData(
stick, stick, stick, stick,
null, stick2, null, null, stick2, null,
2, 2,
null, null null, null
); ), new AnvilClickTestData(
null, null, null, stick2,
2,
Event.Result.DENY, true, Event.Result.DENY
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData( ));
TestDataContainer legalResultData2 = new TestDataContainer(new AnvilFuseTestData(
stick5, stick, stick5, stick,
null, stick10, null, null, stick10, null,
5, 5,
null, null null, null
); ), new AnvilClickTestData(
null, null, null, stick10,
5,
Event.Result.DENY, true, Event.Result.DENY
));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName); AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(false) builder.setExactCount(false)
@ -216,14 +238,17 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
assertTrue(builder.registerIfAbsent()); assertTrue(builder.registerIfAbsent());
// Now working test // Now working test
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData1); legalResultData1.executeTest(anvil, player);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); //TODO check exp ?
System.out.printf(String.valueOf(player.getExp()));
legalResultData2.executeTest(anvil, player);
//TODO check exp ?
} }
@Nullable @Nullable
public static AnvilCustomRecipe getByName(String name){ public static AnvilCustomRecipe getByName(String name) {
for (AnvilCustomRecipe registeredRecipe : CustomAnvilRecipeApi.getRegisteredRecipes()) { for (AnvilCustomRecipe registeredRecipe : CustomAnvilRecipeApi.getRegisteredRecipes()) {
if(registeredRecipe.getName().contentEquals(name)){ if (registeredRecipe.getName().contentEquals(name)) {
return registeredRecipe; return registeredRecipe;
} }
} }

View file

@ -58,7 +58,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest {
2 2
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
} }
@Test @Test
@ -76,7 +76,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest {
// Remove unit repair // Remove unit repair
assertTrue(UnitRepairApi.removeUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE)); assertTrue(UnitRepairApi.removeUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
// see override // see override
assertFalse(UnitRepairApi.addUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE, 0.25)); assertFalse(UnitRepairApi.addUnitRepair(Material.DIAMOND, Material.DIAMOND_PICKAXE, 0.25));
@ -107,12 +107,12 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest {
2 2
); );
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData); nullResultData.executeTest(anvil, player);
// Add unit repair // Add unit repair
assertTrue(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE)); assertTrue(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE));
assertFalse(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE)); assertFalse(UnitRepairApi.addUnitRepair(Material.STICK, Material.DIAMOND_PICKAXE));
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData); legalResultData.executeTest(anvil, player);
} }
} }

View file

@ -1,8 +1,11 @@
package xyz.alexcrea.cuanvil.data; package xyz.alexcrea.cuanvil.data;
import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil;
public record AnvilClickTestData( public record AnvilClickTestData(
@Nullable ItemStack leftItem, @Nullable ItemStack leftItem,
@ -47,4 +50,8 @@ public record AnvilClickTestData(
int levelCost) { int levelCost) {
this(expectedCursor, levelCost, null); this(expectedCursor, levelCost, null);
} }
public void executeTest(AnvilInventory anvil, Player player){
AnvilFuseTestUtil.executeAnvilClickTest(anvil, player, this);
}
} }

View file

@ -1,7 +1,10 @@
package xyz.alexcrea.cuanvil.data; package xyz.alexcrea.cuanvil.data;
import org.bukkit.entity.HumanEntity;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xyz.alexcrea.cuanvil.util.AnvilFuseTestUtil;
public record AnvilFuseTestData( public record AnvilFuseTestData(
@Nullable ItemStack leftItem, @Nullable ItemStack leftItem,
@ -51,4 +54,8 @@ public record AnvilFuseTestData(
); );
} }
public void executeTest(AnvilInventory anvil, HumanEntity player){
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, this);
}
} }

View file

@ -16,17 +16,17 @@ public record TestDataContainer(
) { ) {
public void executeTest(AnvilInventory anvil, Player player) { public void executeTest(AnvilInventory anvil, Player player) {
executeFuseTest(anvil, player); fuseData.executeTest(anvil, player);
if (clickData != null) executeClickTest(anvil, player); if (clickData != null) clickData.executeTest(anvil, player);
} }
public void executeFuseTest(AnvilInventory anvil, HumanEntity player) { public void executeFuseTest(AnvilInventory anvil, HumanEntity player) {
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, fuseData); fuseData.executeTest(anvil, player);
} }
public void executeClickTest(AnvilInventory anvil, Player player) { public void executeClickTest(AnvilInventory anvil, Player player) {
Assertions.assertNotNull(clickData); Assertions.assertNotNull(clickData);
AnvilFuseTestUtil.executeAnvilClickTest(anvil, player, clickData); clickData.executeTest(anvil, player);
} }
public @NotNull TestDataContainer nullifyResult() { public @NotNull TestDataContainer nullifyResult() {

View file

@ -110,22 +110,60 @@ public class AnvilFuseTestUtil {
Assertions.assertEquals(player.getOpenInventory().getTopInventory(), anvil, Assertions.assertEquals(player.getOpenInventory().getTopInventory(), anvil,
"Openned inventory is not anvil"); "Openned inventory is not anvil");
ItemStack afterLeft = data.expectedAfterLeftPlaced();
ItemStack afterRight = data.expectedAfterRightPlaced();
ItemStack afterBoth = data.expectedResult();
// Fist, test null result(s)
// Test with only the left item // Test with only the left item
if(afterLeft == null){
anvil.setItem(1, null); // We clear the right slot in case something was there anvil.setItem(1, null); // We clear the right slot in case something was there
testPlacingItem(anvil, player, testPlacingItem(anvil, player,
0, data.expectedPriceAfterLeftPlaced(), 0, data.expectedPriceAfterLeftPlaced(),
data.leftItem(), data.expectedAfterLeftPlaced()); data.leftItem(), null);
}
// Test with only the right item // Test with only the right item
if(afterRight == null){
anvil.setItem(0, null); // We only want the right item. so we remove the left one anvil.setItem(0, null); // We only want the right item. so we remove the left one
testPlacingItem(anvil, player, testPlacingItem(anvil, player,
1, data.expectedPriceAfterRightPlaced(), 1, data.expectedPriceAfterRightPlaced(),
data.rightItem(), data.expectedAfterRightPlaced()); data.rightItem(), null);
}
// Test with both placed // Test with both placed
if(afterBoth == null){
anvil.setItem(0, data.leftItem());
testPlacingItem(anvil, player, testPlacingItem(anvil, player,
0, data.expectedPriceAfterBothPlaced(), 1, data.expectedPriceAfterBothPlaced(),
data.leftItem(), data.expectedResult()); data.rightItem(), data.expectedResult());
}
// Then, test non null result(s)
// Test with only the left item
if(afterLeft != null){
anvil.setItem(1, null); // We clear the right slot in case something was there
testPlacingItem(anvil, player,
0, data.expectedPriceAfterLeftPlaced(),
data.leftItem(), afterLeft);
}
// Test with only the right item
if(afterRight != null){
anvil.setItem(0, null); // We only want the right item. so we remove the left one
testPlacingItem(anvil, player,
1, data.expectedPriceAfterRightPlaced(),
data.rightItem(), afterRight);
}
// Test with both placed
if(afterBoth != null){
anvil.setItem(0, data.leftItem());
testPlacingItem(anvil, player,
1, data.expectedPriceAfterBothPlaced(),
data.rightItem(), afterBoth);
}
} }
public static void executeAnvilClickTest( public static void executeAnvilClickTest(
@ -139,6 +177,7 @@ public class AnvilFuseTestUtil {
ItemStack result = anvil.getResult(); ItemStack result = anvil.getResult();
player.setLevel(0); player.setLevel(0);
player.setExp(0);
player.setItemOnCursor(null); player.setItemOnCursor(null);
// Do a test with not enough level // Do a test with not enough level
@ -151,6 +190,7 @@ public class AnvilFuseTestUtil {
assertEqual(null, player.getItemOnCursor()); assertEqual(null, player.getItemOnCursor());
} }
player.setLevel(data.levelCost()); player.setLevel(data.levelCost());
player.setExp(0);
player.setItemOnCursor(null); player.setItemOnCursor(null);
simulateClick(anvil, player, data.expectedResult()); simulateClick(anvil, player, data.expectedResult());
@ -208,7 +248,7 @@ public class AnvilFuseTestUtil {
public static void assertEqual(@Nullable ItemStack expected, @Nullable ItemStack other) { public static void assertEqual(@Nullable ItemStack expected, @Nullable ItemStack other) {
boolean secondIsAir = isAir(other); boolean secondIsAir = isAir(other);
if (isAir(expected)) if (isAir(expected))
Assertions.assertTrue(secondIsAir, "Item " + other + " was not air but was expected to be"); Assertions.assertTrue(secondIsAir, "Item " + other + " was not air but was expected to be.");
else { else {
Assertions.assertFalse(secondIsAir, "Item " + other + " is air but was expected to be " + expected); Assertions.assertFalse(secondIsAir, "Item " + other + " is air but was expected to be " + expected);
@ -225,7 +265,7 @@ public class AnvilFuseTestUtil {
public static void assertPriceEqual(Integer expectedPrice, int price) { public static void assertPriceEqual(Integer expectedPrice, int price) {
if (expectedPrice == null) return; if (expectedPrice == null) return;
Assertions.assertEquals(expectedPrice, price); Assertions.assertEquals(expectedPrice, price, "Price of anvil fuse was wrong");
} }
} }