Ignore:
Timestamp:
2021-12-20T17:10:59+01:00 (2 years ago)
Author:
Don-vip
Message:

fix #21646 - Round new points in imagery.Shape (patch by taylor.smock)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/imagery/ShapeTest.java

    r17275 r18341  
    22package org.openstreetmap.josm.data.imagery;
    33
     4import static org.junit.jupiter.api.Assertions.assertAll;
    45import static org.junit.jupiter.api.Assertions.assertEquals;
    56
     
    78
    89import org.junit.jupiter.api.Test;
     10import org.junit.jupiter.params.ParameterizedTest;
     11import org.junit.jupiter.params.provider.ValueSource;
    912
    1013/**
     
    2932        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)));
    3033    }
     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    }
    3155}
Note: See TracChangeset for help on using the changeset viewer.