mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
add unit test for new features
This commit is contained in:
parent
a0fa1e3fe2
commit
e93c2cc121
9 changed files with 145 additions and 66 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
anvil.setItem(1, null); // We clear the right slot in case something was there
|
if(afterLeft == null){
|
||||||
testPlacingItem(anvil, player,
|
anvil.setItem(1, null); // We clear the right slot in case something was there
|
||||||
0, data.expectedPriceAfterLeftPlaced(),
|
testPlacingItem(anvil, player,
|
||||||
data.leftItem(), data.expectedAfterLeftPlaced());
|
0, data.expectedPriceAfterLeftPlaced(),
|
||||||
|
data.leftItem(), null);
|
||||||
|
}
|
||||||
|
|
||||||
// Test with only the right item
|
// Test with only the right item
|
||||||
anvil.setItem(0, null); // We only want the right item. so we remove the left one
|
if(afterRight == null){
|
||||||
testPlacingItem(anvil, player,
|
anvil.setItem(0, null); // We only want the right item. so we remove the left one
|
||||||
1, data.expectedPriceAfterRightPlaced(),
|
testPlacingItem(anvil, player,
|
||||||
data.rightItem(), data.expectedAfterRightPlaced());
|
1, data.expectedPriceAfterRightPlaced(),
|
||||||
|
data.rightItem(), null);
|
||||||
|
}
|
||||||
|
|
||||||
// Test with both placed
|
// Test with both placed
|
||||||
testPlacingItem(anvil, player,
|
if(afterBoth == null){
|
||||||
0, data.expectedPriceAfterBothPlaced(),
|
anvil.setItem(0, data.leftItem());
|
||||||
data.leftItem(), data.expectedResult());
|
testPlacingItem(anvil, player,
|
||||||
|
1, data.expectedPriceAfterBothPlaced(),
|
||||||
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue