package toadmess.explosives; import static org.junit.Assert.fail; import org.bukkit.Location; import org.bukkit.util.config.Configuration; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import toadmess.explosives.messymocks.MockBukkitWorld; public class BoundsTest { private final Location locAllZero = new Location(new MockBukkitWorld(""), 0D, 0D, 0D); private final Location locPositive = new Location(new MockBukkitWorld(""), 10D, 10D, 10D); private final Location locNegative = new Location(new MockBukkitWorld(""), -10D, -10D, -10D); private final Location locFarAway = new Location(new MockBukkitWorld(""), 100D, 0D, 0D); private Configuration conf; @Before public void setup() { conf = new Configuration(null); } @Test public void testEmpty() { final Bounds b = new Bounds(conf, ""); Assert.assertNull(b.getMaxX()); Assert.assertNull(b.getMinX()); Assert.assertNull(b.getMaxY()); Assert.assertNull(b.getMinY()); Assert.assertNull(b.getMaxZ()); Assert.assertNull(b.getMinZ()); // Any old bounds are allowed Assert.assertTrue(b.isWithinBounds(locAllZero)); Assert.assertTrue(b.isWithinBounds(locPositive)); Assert.assertTrue(b.isWithinBounds(locNegative)); Assert.assertTrue(b.isWithinBounds(locFarAway)); checkToString_DoesNotThrowUp(b); } @Test public void testConfPath_DefaultBounds() { testConfPath(HEMain.CONF_ENTITIES+".Creeper"); } private void testConfPath(final String path) { conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MAX+".x", 23D); Bounds b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertNull(b.getMinX()); Assert.assertNull(b.getMaxY()); Assert.assertNull(b.getMinY()); Assert.assertNull(b.getMaxZ()); Assert.assertNull(b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(new MockBukkitWorld(""), 22D, 0, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 24D, 0, 0))); checkToString_DoesNotThrowUp(b); conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MAX+".y", 24D); b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertNull(b.getMinX()); Assert.assertTrue(24D == b.getMaxY()); Assert.assertNull(b.getMinY()); Assert.assertNull(b.getMaxZ()); Assert.assertNull(b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(null, 0, 23D, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, 25D, 0))); checkToString_DoesNotThrowUp(b); conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MAX+".z", 25D); b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertNull(b.getMinX()); Assert.assertTrue(24D == b.getMaxY()); Assert.assertNull(b.getMinY()); Assert.assertTrue(25D == b.getMaxZ()); Assert.assertNull(b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(null, 0, 0, 24D))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, 0, 26D))); checkToString_DoesNotThrowUp(b); conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MIN+".x", -26D); b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertTrue(-26D == b.getMinX()); Assert.assertTrue(24D == b.getMaxY()); Assert.assertNull(b.getMinY()); Assert.assertTrue(25D == b.getMaxZ()); Assert.assertNull(b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(null, -25D, 23D, 24D))); Assert.assertTrue(b.isWithinBounds(new Location(null, -25D, 23D, 24D))); Assert.assertTrue(b.isWithinBounds(new Location(null, -25D, -200D, 24D))); Assert.assertFalse(b.isWithinBounds(new Location(null, -27D, -200D, 24D))); Assert.assertFalse(b.isWithinBounds(new Location(null, -27D, 0, 200D))); Assert.assertFalse(b.isWithinBounds(new Location(null, -27D, 0, 0D))); checkToString_DoesNotThrowUp(b); conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MIN+".y", -27D); b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertTrue(-26.0 == b.getMinX()); Assert.assertTrue(24D == b.getMaxY()); Assert.assertTrue(-27D == b.getMinY()); Assert.assertTrue(25D == b.getMaxZ()); Assert.assertNull(b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(null, 0, -26D, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, -28D, 0))); checkToString_DoesNotThrowUp(b); conf.setProperty(path+"."+HEMain.CONF_BOUNDS+"."+HEMain.CONF_BOUNDS_MIN+".z", -28D); b = new Bounds(conf, path); Assert.assertTrue(23D == b.getMaxX()); Assert.assertTrue(-26D == b.getMinX()); Assert.assertTrue(24D == b.getMaxY()); Assert.assertTrue(-27D == b.getMinY()); Assert.assertTrue(25D == b.getMaxZ()); Assert.assertTrue(-28D == b.getMinZ()); Assert.assertTrue(b.isWithinBounds(new Location(null, 0, 0, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, 0, -100))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, 0, 100))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, -100, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 0, 100, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, -100, 0, 0))); Assert.assertFalse(b.isWithinBounds(new Location(null, 100, 0, 0))); checkToString_DoesNotThrowUp(b); } public void checkToString_DoesNotThrowUp(final Bounds b) { try { b.toString(); } catch(final Throwable t) { fail("toString threw " + t); } } @Test public void checkBounds_NullLocation() { final Bounds b = new Bounds(conf, ""); Assert.assertFalse(b.isWithinBounds(null)); } }