Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/imagery/Shape.java
r17727 r18341 86 86 } 87 87 88 /** 89 * Check if the coordinates are inside this shape. 90 * @see Polygon#contains(int, int) 91 * @param latlon The latlon to look for 92 * @return {@code true} if the LatLon is inside the shape. 93 */ 88 94 public boolean contains(LatLon latlon) { 89 95 return coords.contains( … … 115 121 116 122 coords.addPoint( 117 (int) (lon * LatLon.MAX_SERVER_INV_PRECISION),118 (int) (lat * LatLon.MAX_SERVER_INV_PRECISION));123 (int) Math.round((lon * LatLon.MAX_SERVER_INV_PRECISION)), 124 (int) Math.round((lat * LatLon.MAX_SERVER_INV_PRECISION))); 119 125 } 120 126 -
trunk/test/unit/org/openstreetmap/josm/data/imagery/ShapeTest.java
r17275 r18341 2 2 package org.openstreetmap.josm.data.imagery; 3 3 4 import static org.junit.jupiter.api.Assertions.assertAll; 4 5 import static org.junit.jupiter.api.Assertions.assertEquals; 5 6 … … 7 8 8 9 import org.junit.jupiter.api.Test; 10 import org.junit.jupiter.params.ParameterizedTest; 11 import org.junit.jupiter.params.provider.ValueSource; 9 12 10 13 /** … … 29 32 assertEquals("47.1,11.1,47.2,11.2,47.3,11.3;47.1,11.1,47.2,11.2,47.3,11.3", Shape.encodeAsString(Arrays.asList(shape, shape))); 30 33 } 34 35 /** 36 * Check double edge cases 37 * @param coordinate the coordinate to check 38 */ 39 @ParameterizedTest 40 @ValueSource(doubles = { 41 // The double representation of 0.2575799 * 1e7 is 2575798.9999999995. Directly casting to int will round down. 42 0.2575799, 43 // Check that 2575798.0000000005 is rounded down 44 0.2575798 45 }) 46 void testDoubleEdgeCases(final double coordinate) { 47 final Shape shape = new Shape(); 48 shape.addPoint(Double.toString(1), Double.toString(coordinate)); 49 shape.addPoint(Double.toString(coordinate), Double.toString(1)); 50 shape.addPoint(Double.toString(coordinate), Double.toString(coordinate)); 51 assertAll("Coordinates are not properly rounded on entry", 52 () -> assertEquals(coordinate, shape.getPoints().get(0).getLon()), 53 () -> assertEquals(coordinate, shape.getPoints().get(1).getLat())); 54 } 31 55 }
Note:
See TracChangeset
for help on using the changeset viewer.