From 37c1fc8000d9a8563c17f8f325b0b2f7541c8a3e Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Sun, 29 Dec 2024 14:47:15 +0100 Subject: [PATCH] GH-44 Fix position `E` identification. (#44) --- .../commons/bukkit/position/Position.java | 9 +++++++-- .../commons/bukkit/position/PositionTest.java | 16 ++++++++-------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/eternalcode-commons-bukkit/src/main/java/com/eternalcode/commons/bukkit/position/Position.java b/eternalcode-commons-bukkit/src/main/java/com/eternalcode/commons/bukkit/position/Position.java index 34012a8..8eed1be 100644 --- a/eternalcode-commons-bukkit/src/main/java/com/eternalcode/commons/bukkit/position/Position.java +++ b/eternalcode-commons-bukkit/src/main/java/com/eternalcode/commons/bukkit/position/Position.java @@ -13,8 +13,13 @@ public record Position(double x, double y, double z, float yaw, float pitch, Str public static final String NONE_WORLD = "__NONE__"; private static final Pattern PARSE_FORMAT = Pattern.compile( - "Position\\{x=(?-?[\\d.]+), y=(?-?[\\d.]+), z=(?-?[\\d.]+), yaw=(?-?[\\d.]+), pitch=(?-?[\\d.]+), world='(?.+)'}"); - + "Position\\{x=(?-?[\\d.]+(?:[eE][-+]?\\d+)?), " + + "y=(?-?[\\d.]+(?:[eE][-+]?\\d+)?), " + + "z=(?-?[\\d.]+(?:[eE][-+]?\\d+)?), " + + "yaw=(?-?[\\d.]+(?:[eE][-+]?\\d+)?), " + + "pitch=(?-?[\\d.]+(?:[eE][-+]?\\d+)?), " + + "world='(?.+)'}"); + public Position(double x, double y, double z, String world) { this(x, y, z, 0F, 0F, world); } diff --git a/eternalcode-commons-bukkit/test/com/eternalcode/commons/bukkit/position/PositionTest.java b/eternalcode-commons-bukkit/test/com/eternalcode/commons/bukkit/position/PositionTest.java index 434cc99..bdff152 100644 --- a/eternalcode-commons-bukkit/test/com/eternalcode/commons/bukkit/position/PositionTest.java +++ b/eternalcode-commons-bukkit/test/com/eternalcode/commons/bukkit/position/PositionTest.java @@ -11,7 +11,7 @@ class PositionTest { @BeforeEach void setUp() { - position = new Position(1.0d, 2.0d, 3.0d, 4.0f, 5.0f, "world"); + position = new Position(1.0d, 2.0d, 3.0d, 90.49303f, -6.020069E-6f, "world"); } @Test @@ -36,12 +36,12 @@ void getZ() { @Test void getYaw() { - assertEquals(4.0f, position.yaw()); + assertEquals(90.49303f, position.yaw()); } @Test void getPitch() { - assertEquals(5.0f, position.pitch()); + assertEquals(-6.020069E-6f, position.pitch()); } @Test @@ -51,8 +51,8 @@ void isNoneWorld() { @Test void testEqualsAndHashCode() { - Position position2 = new Position(1.0d, 2.0d, 3.0d, 4.0f, 5.0f, "world"); - Position position3 = new Position(1.0d, 2.0d, 3.1d, 4.0f, 5.0f, "world"); + Position position2 = new Position(1.0d, 2.0d, 3.0d, 90.49303f, -6.020069E-6f, "world"); + Position position3 = new Position(1.0d, 2.0d, 3.1d, 90.49303f, -6.020069E-6f, "world"); // Reflexive test assertEquals(position, position); @@ -71,18 +71,18 @@ void testEqualsAndHashCode() { @Test void testToString() { - String expectedString = "Position{x=1.0, y=2.0, z=3.0, yaw=4.0, pitch=5.0, world='world'}"; + String expectedString = "Position{x=1.0, y=2.0, z=3.0, yaw=90.49303, pitch=-6.020069E-6, world='world'}"; assertEquals(expectedString, position.toString()); } @Test void parse() { - Position parsed = Position.parse("Position{x=1.0, y=2.0, z=3.0, yaw=4.0, pitch=5.0, world='world'}"); + Position parsed = Position.parse("Position{x=1.0, y=2.0, z=3.0, yaw=90.49303, pitch=-6.020069E-6, world='world'}"); assertEquals(position, parsed); } @Test void parseInvalid() { - assertThrows(IllegalArgumentException.class, () -> Position.parse("Invalid{x=1.0, y=2.0, z=3.0, yaw=4.0, pitch=5.0, world='world'}")); + assertThrows(IllegalArgumentException.class, () -> Position.parse("Invalid{x=1.0, y=2.0, z=3.0, yaw=90.49303, pitch=-6.020069E-6, world='world'}")); } }