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:
parent
974657fadc
commit
5360e4d085
@ -18,9 +18,9 @@ public class MultiBlockInteractEvent extends Event implements Cancellable {
|
|||||||
|
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
private Player player;
|
private final Player player;
|
||||||
private MultiBlock multiBlock;
|
private final MultiBlock multiBlock;
|
||||||
private Block clickedBlock;
|
private final Block clickedBlock;
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
|
|
||||||
public HandlerList getHandlers() {
|
public HandlerList getHandlers() {
|
||||||
|
@ -5,6 +5,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Tag;
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -35,12 +36,14 @@ public class MultiBlock {
|
|||||||
private static final Set<Tag<Material>> SUPPORTED_TAGS = new HashSet<>();
|
private static final Set<Tag<Material>> SUPPORTED_TAGS = new HashSet<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
SUPPORTED_TAGS.add(Tag.LOGS);
|
if (SlimefunPlugin.getMinecraftVersion() != MinecraftVersion.UNIT_TEST) {
|
||||||
SUPPORTED_TAGS.add(Tag.WOODEN_TRAPDOORS);
|
SUPPORTED_TAGS.add(Tag.LOGS);
|
||||||
SUPPORTED_TAGS.add(Tag.WOODEN_SLABS);
|
SUPPORTED_TAGS.add(Tag.WOODEN_TRAPDOORS);
|
||||||
|
SUPPORTED_TAGS.add(Tag.WOODEN_SLABS);
|
||||||
|
|
||||||
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
||||||
SUPPORTED_TAGS.add(Tag.WOODEN_FENCES);
|
SUPPORTED_TAGS.add(Tag.WOODEN_FENCES);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,12 +57,17 @@ public class MultiBlock {
|
|||||||
private final boolean isSymmetric;
|
private final boolean isSymmetric;
|
||||||
|
|
||||||
public MultiBlock(SlimefunItem item, Material[] build, BlockFace trigger) {
|
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) {
|
if (trigger != BlockFace.SELF && trigger != BlockFace.UP && trigger != BlockFace.DOWN) {
|
||||||
throw new IllegalArgumentException("Multiblock Blockface must be either UP, DOWN or SELF");
|
throw new IllegalArgumentException("Multiblock Blockface must be either UP, DOWN or SELF");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.item = item;
|
||||||
this.blocks = build;
|
this.blocks = build;
|
||||||
this.trigger = trigger;
|
this.trigger = trigger;
|
||||||
this.isSymmetric = isSymmetric(build);
|
this.isSymmetric = isSymmetric(build);
|
||||||
@ -89,7 +97,7 @@ public class MultiBlock {
|
|||||||
|
|
||||||
MultiBlock mb = (MultiBlock) obj;
|
MultiBlock mb = (MultiBlock) obj;
|
||||||
|
|
||||||
if (trigger == mb.getTriggerBlock()) {
|
if (trigger == mb.getTriggerBlock() && isSymmetric == mb.isSymmetric) {
|
||||||
for (int i = 0; i < mb.getStructure().length; i++) {
|
for (int i = 0; i < mb.getStructure().length; i++) {
|
||||||
if (!compareBlocks(blocks[i], mb.getStructure()[i])) {
|
if (!compareBlocks(blocks[i], mb.getStructure()[i])) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -3,6 +3,7 @@ package io.github.thebusybiscuit.slimefun4.core.guide;
|
|||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ public class GuideHistory {
|
|||||||
* The {@link PlayerProfile} this {@link GuideHistory} was made for
|
* The {@link PlayerProfile} this {@link GuideHistory} was made for
|
||||||
*/
|
*/
|
||||||
public GuideHistory(PlayerProfile profile) {
|
public GuideHistory(PlayerProfile profile) {
|
||||||
|
Validate.notNull(profile, "Cannot create a GuideHistory without a PlayerProfile!");
|
||||||
this.profile = profile;
|
this.profile = profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,6 +79,7 @@ public class GuideHistory {
|
|||||||
* The {@link SlimefunItem} that should be added to this {@link GuideHistory}
|
* The {@link SlimefunItem} that should be added to this {@link GuideHistory}
|
||||||
*/
|
*/
|
||||||
public void add(SlimefunItem item) {
|
public void add(SlimefunItem item) {
|
||||||
|
Validate.notNull(item, "Cannot add a nonexisting SlimefunItem to the GuideHistory!");
|
||||||
queue.add(new GuideEntry<>(item, 0));
|
queue.add(new GuideEntry<>(item, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,10 +90,13 @@ public class GuideHistory {
|
|||||||
* The term that the {@link Player} searched for
|
* The term that the {@link Player} searched for
|
||||||
*/
|
*/
|
||||||
public void add(String searchTerm) {
|
public void add(String searchTerm) {
|
||||||
|
Validate.notNull(searchTerm, "Cannot add an empty Search Term to the GuideHistory!");
|
||||||
queue.add(new GuideEntry<>(searchTerm, 0));
|
queue.add(new GuideEntry<>(searchTerm, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> void refresh(T object, int page) {
|
private <T> void refresh(T object, int page) {
|
||||||
|
Validate.notNull(object, "Cannot add a null Entry to the GuideHistory!");
|
||||||
|
|
||||||
GuideEntry<?> lastEntry = getLastEntry(false);
|
GuideEntry<?> lastEntry = getLastEntry(false);
|
||||||
|
|
||||||
if (lastEntry != null && lastEntry.getIndexedObject() == object) {
|
if (lastEntry != null && lastEntry.getIndexedObject() == object) {
|
||||||
|
@ -12,6 +12,7 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.item.ImmutableItemMeta;
|
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.core.attributes.Soulbound;
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.items.altar.AncientPedestal;
|
import io.github.thebusybiscuit.slimefun4.implementation.items.altar.AncientPedestal;
|
||||||
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
|
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) {
|
public static boolean containsSimilarItem(Inventory inventory, ItemStack itemStack, boolean checkLore) {
|
||||||
if (inventory == null || itemStack == null) return false;
|
if (inventory == null || itemStack == null) return false;
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user