Adds some tests for the salvage helper
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good

This commit is contained in:
2023-01-14 15:10:40 +01:00
parent 8e5d4c7a61
commit 7cc2aef9d4
8 changed files with 173 additions and 25 deletions

View File

@ -0,0 +1,31 @@
package net.knarcraft.blacksmith;
import be.seeseemelk.mockbukkit.ServerMock;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* A custom server mock specifically for making the SalvageHelperTest work
*/
public class CustomServerMock extends ServerMock {
public @NotNull List<Recipe> getRecipesFor(@NotNull ItemStack itemStack) {
List<Recipe> validRecipes = new ArrayList<>();
if (itemStack.getType() == Material.DIAMOND_PICKAXE) {
ShapedRecipe recipe = new ShapedRecipe(NamespacedKey.minecraft("diamond_pickaxe"), itemStack);
recipe.shape("ddd", "asa", "asa");
recipe.setIngredient('d', Material.DIAMOND);
recipe.setIngredient('s', Material.STICK);
validRecipes.add(recipe);
}
return validRecipes;
}
}

View File

@ -0,0 +1,76 @@
package net.knarcraft.blacksmith.util;
import be.seeseemelk.mockbukkit.MockBukkit;
import net.knarcraft.blacksmith.CustomServerMock;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
/**
* A test class to test salvaging
*/
public class SalvageHelperTest {
private static Server server;
@BeforeAll
public static void setUp() {
server = MockBukkit.mock(new CustomServerMock());
}
@Test
public void getNullForInvalidItemTest() {
//Assert that a non-reforge-able item will return null
assertNull(SalvageHelper.getSalvage(server, new ItemStack(Material.POTATO, 1), null));
}
@Test
public void getNullForLessThanOneItemTest() {
//Assert that 0 or 1 items will return null
assertNull(SalvageHelper.getSalvage(server, new ItemStack(Material.IRON_AXE, 0), null));
assertNull(SalvageHelper.getSalvage(server, new ItemStack(Material.IRON_SWORD, -1), null));
}
@Test
public void getFullSalvageTest() {
Set<ItemStack> expectedSalvage = new HashSet<>();
expectedSalvage.add(new ItemStack(Material.DIAMOND, 3));
expectedSalvage.add(new ItemStack(Material.STICK, 2));
ItemStack itemToSalvage = new ItemStack(Material.DIAMOND_PICKAXE, 1);
//Note: Conversion to sets makes sure the order doesn't matter
assertEquals(expectedSalvage, new HashSet<>(SalvageHelper.getSalvage(server, itemToSalvage, null)));
}
@Test
public void getNonFullSalvageTest() {
List<ItemStack> expectedSalvage = new ArrayList<>();
expectedSalvage.add(new ItemStack(Material.DIAMOND, 3));
expectedSalvage.add(new ItemStack(Material.STICK, 2));
ItemStack itemToSalvage = new ItemStack(Material.DIAMOND_PICKAXE, 1);
ItemMeta meta = itemToSalvage.getItemMeta();
Damageable damageable = (Damageable) meta;
if (damageable != null) {
damageable.setDamage(100);
}
itemToSalvage.setItemMeta(meta);
List<ItemStack> salvage = SalvageHelper.getSalvage(server, itemToSalvage, null);
//Assert that some items are given
assertNotEquals(salvage, new ArrayList<>());
//Assert that a damaged item won't give full salvage
assertNotEquals(expectedSalvage, salvage);
}
}