From eeb89c3c3b202246093c65588d329342d023916c Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 6 Feb 2021 10:48:30 +0100 Subject: [PATCH] Some very basic unit tests --- .../auto_crafters/AbstractAutoCrafter.java | 2 +- .../auto_crafters/AbstractRecipe.java | 2 +- .../auto_crafters/TestAbstractRecipe.java | 90 +++++++++++++++++++ .../researches/TestResearchUnlocking.java | 1 - 4 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/auto_crafters/TestAbstractRecipe.java diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractAutoCrafter.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractAutoCrafter.java index fc6589dd6..42648ba3b 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractAutoCrafter.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractAutoCrafter.java @@ -267,7 +267,7 @@ public abstract class AbstractAutoCrafter extends SlimefunItem implements Energy if (inv.firstEmpty() != -1) { Map itemQuantities = new HashMap<>(); - for (Predicate predicate : recipe.getInputs()) { + for (Predicate predicate : recipe.getIngredients()) { // Check if any Item matches the Predicate if (!matchesAny(inv, itemQuantities, predicate)) { return false; diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractRecipe.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractRecipe.java index 0b25a6052..d74c9d665 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractRecipe.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/electric/machines/auto_crafters/AbstractRecipe.java @@ -33,7 +33,7 @@ public abstract class AbstractRecipe { } @Nonnull - public Collection> getInputs() { + public Collection> getIngredients() { return inputs; } diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/auto_crafters/TestAbstractRecipe.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/auto_crafters/TestAbstractRecipe.java new file mode 100644 index 000000000..a83c16407 --- /dev/null +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/items/auto_crafters/TestAbstractRecipe.java @@ -0,0 +1,90 @@ +package io.github.thebusybiscuit.slimefun4.testing.tests.items.auto_crafters; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.Tag; +import org.bukkit.inventory.FurnaceRecipe; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.RecipeChoice.MaterialChoice; +import org.bukkit.inventory.ShapedRecipe; +import org.bukkit.inventory.ShapelessRecipe; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import be.seeseemelk.mockbukkit.MockBukkit; +import io.github.thebusybiscuit.cscorelib2.item.CustomItem; +import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin; +import io.github.thebusybiscuit.slimefun4.implementation.items.electric.machines.auto_crafters.AbstractRecipe; + +class TestAbstractRecipe { + + private static SlimefunPlugin plugin; + + @BeforeAll + public static void load() { + MockBukkit.mock(); + plugin = MockBukkit.load(SlimefunPlugin.class); + } + + @AfterAll + public static void unload() { + MockBukkit.unmock(); + } + + @Test + @DisplayName("Test ShapelessRecipe as AbstractRecipe") + void testShapelessRecipe() { + NamespacedKey key = new NamespacedKey(plugin, "shapeless_recipe_test"); + ItemStack result = new CustomItem(Material.DIAMOND, "&6Special Diamond :o"); + + ShapelessRecipe recipe = new ShapelessRecipe(key, result); + recipe.addIngredient(new MaterialChoice(Material.IRON_NUGGET, Material.GOLD_NUGGET)); + + AbstractRecipe abstractRecipe = AbstractRecipe.of(recipe); + + Assertions.assertNotNull(abstractRecipe); + Assertions.assertEquals(result, abstractRecipe.getResult()); + Assertions.assertIterableEquals(recipe.getChoiceList(), abstractRecipe.getIngredients()); + Assertions.assertEquals(key.toString(), abstractRecipe.toString()); + } + + @Test + @DisplayName("Test ShapedRecipe as AbstractRecipe") + void testShapedRecipe() { + NamespacedKey key = new NamespacedKey(plugin, "shaped_recipe_test"); + ItemStack result = new CustomItem(Material.EMERALD, "&6Special Emerald :o"); + + ShapedRecipe recipe = new ShapedRecipe(key, result); + recipe.shape("OXO", " X ", "OXO"); + + List choices = Arrays.asList(new MaterialChoice(Material.IRON_NUGGET), new MaterialChoice(Tag.PLANKS)); + recipe.setIngredient('X', choices.get(0)); + recipe.setIngredient('O', choices.get(1)); + + AbstractRecipe abstractRecipe = AbstractRecipe.of(recipe); + + Assertions.assertNotNull(abstractRecipe); + Assertions.assertEquals(result, abstractRecipe.getResult()); + Assertions.assertEquals(new HashSet<>(choices), new HashSet<>(abstractRecipe.getIngredients())); + Assertions.assertEquals(key.toString(), abstractRecipe.toString()); + } + + @Test + @DisplayName("Test invalid recipes as AbstractRecipe") + void testInvalidRecipes() { + NamespacedKey key = new NamespacedKey(plugin, "furnace_recipe_test"); + ItemStack result = new CustomItem(Material.COAL, "&6Special Coal :o"); + FurnaceRecipe recipe = new FurnaceRecipe(key, result, Material.COAL, 1, 1); + + Assertions.assertNull(AbstractRecipe.of(recipe)); + Assertions.assertNull(AbstractRecipe.of((ShapedRecipe) null)); + } + +} diff --git a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchUnlocking.java b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchUnlocking.java index ac539f4fc..9f4f88bac 100644 --- a/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchUnlocking.java +++ b/src/test/java/io/github/thebusybiscuit/slimefun4/testing/tests/researches/TestResearchUnlocking.java @@ -10,7 +10,6 @@ import org.bukkit.entity.Player; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource;