1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

MOOORE Unit Tests

This commit is contained in:
TheBusyBiscuit 2020-05-08 22:09:08 +02:00
parent 974657fadc
commit 5360e4d085
5 changed files with 138 additions and 10 deletions

View File

@ -18,9 +18,9 @@ public class MultiBlockInteractEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private Player player;
private MultiBlock multiBlock;
private Block clickedBlock;
private final Player player;
private final MultiBlock multiBlock;
private final Block clickedBlock;
private boolean cancelled;
public HandlerList getHandlers() {

View File

@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import org.apache.commons.lang.Validate;
import org.bukkit.Material;
import org.bukkit.Tag;
import org.bukkit.World;
@ -35,12 +36,14 @@ public class MultiBlock {
private static final Set<Tag<Material>> SUPPORTED_TAGS = new HashSet<>();
static {
SUPPORTED_TAGS.add(Tag.LOGS);
SUPPORTED_TAGS.add(Tag.WOODEN_TRAPDOORS);
SUPPORTED_TAGS.add(Tag.WOODEN_SLABS);
if (SlimefunPlugin.getMinecraftVersion() != MinecraftVersion.UNIT_TEST) {
SUPPORTED_TAGS.add(Tag.LOGS);
SUPPORTED_TAGS.add(Tag.WOODEN_TRAPDOORS);
SUPPORTED_TAGS.add(Tag.WOODEN_SLABS);
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
SUPPORTED_TAGS.add(Tag.WOODEN_FENCES);
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
SUPPORTED_TAGS.add(Tag.WOODEN_FENCES);
}
}
}
@ -54,12 +57,17 @@ public class MultiBlock {
private final boolean isSymmetric;
public MultiBlock(SlimefunItem item, Material[] build, BlockFace trigger) {
this.item = item;
Validate.notNull(item, "A MultiBlock reuquires a SlimefunItem!");
if (build == null || build.length != 9) {
throw new IllegalArgumentException("MultiBlocks must have a length of 9!");
}
if (trigger != BlockFace.SELF && trigger != BlockFace.UP && trigger != BlockFace.DOWN) {
throw new IllegalArgumentException("Multiblock Blockface must be either UP, DOWN or SELF");
}
this.item = item;
this.blocks = build;
this.trigger = trigger;
this.isSymmetric = isSymmetric(build);
@ -89,7 +97,7 @@ public class MultiBlock {
MultiBlock mb = (MultiBlock) obj;
if (trigger == mb.getTriggerBlock()) {
if (trigger == mb.getTriggerBlock() && isSymmetric == mb.isSymmetric) {
for (int i = 0; i < mb.getStructure().length; i++) {
if (!compareBlocks(blocks[i], mb.getStructure()[i])) {
return false;

View File

@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.core.guide;
import java.util.Deque;
import java.util.LinkedList;
import org.apache.commons.lang.Validate;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -32,6 +33,7 @@ public class GuideHistory {
* The {@link PlayerProfile} this {@link GuideHistory} was made for
*/
public GuideHistory(PlayerProfile profile) {
Validate.notNull(profile, "Cannot create a GuideHistory without a PlayerProfile!");
this.profile = profile;
}
@ -77,6 +79,7 @@ public class GuideHistory {
* The {@link SlimefunItem} that should be added to this {@link GuideHistory}
*/
public void add(SlimefunItem item) {
Validate.notNull(item, "Cannot add a nonexisting SlimefunItem to the GuideHistory!");
queue.add(new GuideEntry<>(item, 0));
}
@ -87,10 +90,13 @@ public class GuideHistory {
* The term that the {@link Player} searched for
*/
public void add(String searchTerm) {
Validate.notNull(searchTerm, "Cannot add an empty Search Term to the GuideHistory!");
queue.add(new GuideEntry<>(searchTerm, 0));
}
private <T> void refresh(T object, int page) {
Validate.notNull(object, "Cannot add a null Entry to the GuideHistory!");
GuideEntry<?> lastEntry = getLastEntry(false);
if (lastEntry != null && lastEntry.getIndexedObject() == object) {

View File

@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.metadata.FixedMetadataValue;
import io.github.thebusybiscuit.cscorelib2.item.ImmutableItemMeta;
import io.github.thebusybiscuit.slimefun4.core.attributes.Radioactive;
import io.github.thebusybiscuit.slimefun4.core.attributes.Soulbound;
import io.github.thebusybiscuit.slimefun4.implementation.items.altar.AncientPedestal;
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
@ -104,6 +105,18 @@ public final class SlimefunUtils {
}
}
/**
* This method checks whether the given {@link ItemStack} is radioactive.
*
* @param item
* The {@link ItemStack} to check
*
* @return Whether this {@link ItemStack} is radioactive or not
*/
public static boolean isRadioactive(ItemStack item) {
return SlimefunItem.getByItem(item) instanceof Radioactive;
}
public static boolean containsSimilarItem(Inventory inventory, ItemStack itemStack, boolean checkLore) {
if (inventory == null || itemStack == null) return false;

View File

@ -0,0 +1,101 @@
package io.github.thebusybiscuit.slimefun4.tests.multiblocks;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.slimefun4.core.MultiBlock;
import io.github.thebusybiscuit.slimefun4.mocks.SlimefunMocks;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
public class TestMultiBlocks {
@Test
public void testInvalidConstructors() {
SlimefunItem item = SlimefunMocks.mockSlimefunItem("MULTIBLOCK_TEST", new CustomItem(Material.BRICK, "&5Multiblock Test"));
Assertions.assertThrows(IllegalArgumentException.class, () -> new MultiBlock(null, null, null));
Assertions.assertThrows(IllegalArgumentException.class, () -> new MultiBlock(item, null, null));
Assertions.assertThrows(IllegalArgumentException.class, () -> new MultiBlock(item, new Material[4], null));
Assertions.assertThrows(IllegalArgumentException.class, () -> new MultiBlock(item, new Material[9], BlockFace.EAST_NORTH_EAST));
}
@Test
public void testValidConstructor() {
SlimefunItem item = SlimefunMocks.mockSlimefunItem("MULTIBLOCK_TEST", new CustomItem(Material.BRICK, "&5Multiblock Test"));
MultiBlock multiblock = new MultiBlock(item, new Material[9], BlockFace.DOWN);
Assertions.assertEquals(item, multiblock.getSlimefunItem());
Assertions.assertArrayEquals(new Material[9], multiblock.getStructure());
Assertions.assertEquals(BlockFace.DOWN, multiblock.getTriggerBlock());
}
@Test
public void testSymmetry() {
SlimefunItem item = SlimefunMocks.mockSlimefunItem("MULTIBLOCK_TEST", new CustomItem(Material.BRICK, "&5Multiblock Test"));
MultiBlock multiblock = new MultiBlock(item, new Material[] {
null, null, null,
Material.DIAMOND_BLOCK, null, Material.DIAMOND_BLOCK,
null, Material.DISPENSER, null
}, BlockFace.DOWN);
Assertions.assertTrue(multiblock.isSymmetric());
MultiBlock multiblock2 = new MultiBlock(item, new Material[] {
Material.EMERALD_BLOCK, null, null,
Material.EMERALD_BLOCK, null, Material.DIAMOND_BLOCK,
Material.EMERALD_BLOCK, Material.DISPENSER, null
}, BlockFace.DOWN);
Assertions.assertFalse(multiblock2.isSymmetric());
}
@Test
public void testEquality() {
SlimefunItem item = SlimefunMocks.mockSlimefunItem("MULTIBLOCK_TEST", new CustomItem(Material.BRICK, "&5Multiblock Test"));
MultiBlock multiblock = new MultiBlock(item, new Material[] {
Material.BIRCH_WOOD, Material.BIRCH_WOOD, Material.BIRCH_WOOD,
null, Material.CRAFTING_TABLE, null,
Material.BIRCH_WOOD, Material.DISPENSER, Material.BIRCH_WOOD
}, BlockFace.DOWN);
MultiBlock multiblock2 = new MultiBlock(item, new Material[] {
Material.BIRCH_WOOD, Material.BIRCH_WOOD, Material.BIRCH_WOOD,
null, Material.CRAFTING_TABLE, null,
Material.BIRCH_WOOD, Material.DISPENSER, Material.BIRCH_WOOD
}, BlockFace.DOWN);
MultiBlock multiblock3 = new MultiBlock(item, new Material[] {
Material.BIRCH_WOOD, Material.BIRCH_WOOD, Material.BIRCH_WOOD,
null, Material.EMERALD_BLOCK, null,
Material.BIRCH_WOOD, Material.DISPENSER, Material.BIRCH_WOOD
}, BlockFace.DOWN);
MultiBlock multiblock4 = new MultiBlock(item, new Material[] {
Material.DROPPER, Material.BIRCH_WOOD, Material.BIRCH_WOOD,
null, Material.DIAMOND_BLOCK, null,
Material.BIRCH_WOOD, Material.DISPENSER, Material.TNT
}, BlockFace.DOWN);
MultiBlock multiblock5 = new MultiBlock(item, new Material[] {
Material.BIRCH_WOOD, Material.BIRCH_WOOD, Material.BIRCH_WOOD,
null, Material.CRAFTING_TABLE, null,
Material.BIRCH_WOOD, Material.DISPENSER, Material.BIRCH_WOOD
}, BlockFace.SELF);
Assertions.assertTrue(multiblock.isSymmetric());
Assertions.assertTrue(multiblock.equals(multiblock2));
Assertions.assertFalse(multiblock.equals(null));
Assertions.assertFalse(multiblock.equals(multiblock3));
Assertions.assertFalse(multiblock.equals(multiblock4));
Assertions.assertFalse(multiblock.equals(multiblock5));
}
}