diff --git a/src/main/java/com/github/davidmoten/rtree/geometry/internal/LineFloat.java b/src/main/java/com/github/davidmoten/rtree/geometry/internal/LineFloat.java index 0c1766b7..d1f6bc2f 100644 --- a/src/main/java/com/github/davidmoten/rtree/geometry/internal/LineFloat.java +++ b/src/main/java/com/github/davidmoten/rtree/geometry/internal/LineFloat.java @@ -17,19 +17,19 @@ */ public final class LineFloat implements Line { - private final double x1; - private final double y1; - private final double x2; - private final double y2; + private final float x1; + private final float y1; + private final float x2; + private final float y2; - private LineFloat(double x1, double y1, double x2, double y2) { + private LineFloat(float x1, float y1, float x2, float y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; } - public static LineFloat create(double x1, double y1, double x2, double y2) { + public static LineFloat create(float x1, float y1, float x2, float y2) { return new LineFloat(x1, y1, x2, y2); } diff --git a/src/test/java/com/github/davidmoten/rtree/geometry/LineTest.java b/src/test/java/com/github/davidmoten/rtree/geometry/LineTest.java index 7d7e0c52..4c86898e 100644 --- a/src/test/java/com/github/davidmoten/rtree/geometry/LineTest.java +++ b/src/test/java/com/github/davidmoten/rtree/geometry/LineTest.java @@ -9,6 +9,9 @@ import org.junit.Test; +import com.github.davidmoten.rtree.geometry.internal.LineDouble; +import com.github.davidmoten.rtree.geometry.internal.LineFloat; + public final class LineTest { private static final double PRECISION = 0.00001; @@ -222,4 +225,21 @@ public void testLineFloatIntersectsWithHorizontalLine() { } } + @Test + public void testLineFloatStoresCoordinatesAsFloatNotDouble() throws NoSuchFieldException { + // https://github.com/davidmoten/rtree/issues/89 + for (String field : new String[] { "x1", "y1", "x2", "y2" }) { + assertEquals(float.class, LineFloat.class.getDeclaredField(field).getType()); + } + for (String field : new String[] { "x1", "y1", "x2", "y2" }) { + assertEquals(double.class, LineDouble.class.getDeclaredField(field).getType()); + } + } + + @Test + public void testLineFloatIsNotDoublePrecision() { + assertFalse(Geometries.line(1f, 2f, 3f, 4f).isDoublePrecision()); + assertTrue(Geometries.line(1d, 2d, 3d, 4d).isDoublePrecision()); + } + }