diff --git a/game/src/main/org/apollo/game/model/Position.java b/game/src/main/org/apollo/game/model/Position.java index 4ddbaf1f..45f3c9fc 100644 --- a/game/src/main/org/apollo/game/model/Position.java +++ b/game/src/main/org/apollo/game/model/Position.java @@ -14,7 +14,7 @@ import com.google.common.base.Preconditions; public final class Position { /** - * The number of height levels. + * The number of height levels, (0, 3] inclusive. */ public static final int HEIGHT_LEVELS = 4; @@ -46,7 +46,7 @@ public final class Position { * @param height The height. */ public Position(int x, int y, int height) { - Preconditions.checkArgument(height >= 0 && height < HEIGHT_LEVELS, "Height level out of bounds."); + Preconditions.checkElementIndex(height, HEIGHT_LEVELS, "Height must be [0, 3), received " + height + "."); packed = height << 30 | (y & 0x7FFF) << 15 | x & 0x7FFF; } diff --git a/game/src/test/org/apollo/game/model/TestPosition.java b/game/src/test/org/apollo/game/model/TestPosition.java new file mode 100644 index 00000000..8147aed9 --- /dev/null +++ b/game/src/test/org/apollo/game/model/TestPosition.java @@ -0,0 +1,38 @@ +package org.apollo.game.model; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests the {@link Position} class. + * + * @author Ryley + */ +public final class TestPosition { + + /** + * Tests the {@link Position#getHeight()} method. + */ + @Test + public void testGetHeight() { + Position position = new Position(3222, 3222, 3); + Assert.assertEquals(3, position.getHeight()); + } + + /** + * Tests the creation of an invalid {@link Position}. + */ + @Test(expected = IndexOutOfBoundsException.class) + public void testCreateNegativePosition() { + new Position(3222, 3222, -1); + } + + /** + * Tests the creation of an invalid {@link Position}. + */ + @Test(expected = IndexOutOfBoundsException.class) + public void testCreateOutOfBoundsPosition() { + new Position(3222, 3222, 4); + } + +} \ No newline at end of file