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 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() {
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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