85 lines
4.1 KiB
Java
85 lines
4.1 KiB
Java
package dev.marcospaulo.canalhandia;
|
|
|
|
import org.bukkit.event.entity.EntityDamageEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.util.List;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class VoidProtectionTest {
|
|
|
|
@Test
|
|
void identifiesVoidDeathByCause() {
|
|
assertTrue(VoidProtection.isVoidDeath(100.0, -64.0, EntityDamageEvent.DamageCause.VOID));
|
|
assertTrue(VoidProtection.isVoidDeath(-70.0, -64.0, EntityDamageEvent.DamageCause.VOID));
|
|
}
|
|
|
|
@Test
|
|
void identifiesVoidDeathByCoordinatesBelowMinHeight() {
|
|
assertTrue(VoidProtection.isVoidDeath(-65.0, -64.0, EntityDamageEvent.DamageCause.FALL));
|
|
assertTrue(VoidProtection.isVoidDeath(-100.0, 0.0, EntityDamageEvent.DamageCause.CUSTOM));
|
|
assertFalse(VoidProtection.isVoidDeath(50.0, -64.0, EntityDamageEvent.DamageCause.FALL));
|
|
assertFalse(VoidProtection.isVoidDeath(10.0, 0.0, EntityDamageEvent.DamageCause.LAVA));
|
|
}
|
|
|
|
@Test
|
|
void handlesNullWorldOrLocationsGracefully() {
|
|
assertNull(VoidProtection.findSafeChestLocation(null, null, 10));
|
|
assertNull(VoidProtection.findSafeChestLocation(null, null, 0));
|
|
assertFalse(VoidProtection.rescueToChest(null, null));
|
|
assertFalse(VoidProtection.rescueToChest(List.of(), null));
|
|
}
|
|
|
|
@Test
|
|
void validatesSafeGroundMaterials() {
|
|
assertTrue(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.STONE));
|
|
assertTrue(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.GRASS_BLOCK));
|
|
assertTrue(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.DIRT));
|
|
assertTrue(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.OBSIDIAN));
|
|
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(null));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.AIR));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.LAVA));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.FIRE));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.SOUL_FIRE));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.CACTUS));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.MAGMA_BLOCK));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.SWEET_BERRY_BUSH));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.WITHER_ROSE));
|
|
assertFalse(VoidProtection.isSafeGroundMaterial(org.bukkit.Material.POWDER_SNOW));
|
|
}
|
|
|
|
@Test
|
|
void validatesReplaceableMaterials() {
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.AIR));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.CAVE_AIR));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.VOID_AIR));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.SHORT_GRASS));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.TALL_GRASS));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.SNOW));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.FERN));
|
|
assertTrue(VoidProtection.isReplaceableMaterial(org.bukkit.Material.LARGE_FERN));
|
|
|
|
assertFalse(VoidProtection.isReplaceableMaterial(null));
|
|
assertFalse(VoidProtection.isReplaceableMaterial(org.bukkit.Material.STONE));
|
|
assertFalse(VoidProtection.isReplaceableMaterial(org.bukkit.Material.CHEST));
|
|
assertFalse(VoidProtection.isReplaceableMaterial(org.bukkit.Material.OBSIDIAN));
|
|
}
|
|
|
|
@Test
|
|
void nullBlocksAreNeitherSafeNorReplaceable() {
|
|
assertFalse(VoidProtection.isSafeGround(null));
|
|
assertFalse(VoidProtection.isReplaceable(null));
|
|
}
|
|
|
|
@Test
|
|
void calculatesRequiredSlotsAndChestFit() {
|
|
assertEquals(0, VoidProtection.calculateRequiredSlots(null));
|
|
assertEquals(0, VoidProtection.calculateRequiredSlots(List.of()));
|
|
assertTrue(VoidProtection.canFitInSingleChest(List.of()));
|
|
assertTrue(VoidProtection.canFitInDoubleChest(List.of()));
|
|
}
|
|
}
|