Adds some tests for the salvage helper
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
This commit is contained in:
31
src/test/java/net/knarcraft/blacksmith/CustomServerMock.java
Normal file
31
src/test/java/net/knarcraft/blacksmith/CustomServerMock.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user