1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.data.coor;
|
---|
3 |
|
---|
4 | import static org.junit.Assert.assertEquals;
|
---|
5 |
|
---|
6 | import org.junit.Test;
|
---|
7 |
|
---|
8 | /**
|
---|
9 | * @author Vincent
|
---|
10 | *
|
---|
11 | */
|
---|
12 | public class LatLonTest {
|
---|
13 |
|
---|
14 | protected static final double[] sampleValues = new double[]{
|
---|
15 | -180.0, -179.9, -179.6, -179.5, -179.4, -179.1, -179.0, -100.0, -99.9, -10.0, -9.9, -1.0, -0.1,
|
---|
16 | 180.0, 179.9, 179.6, 179.5, 179.4, 179.1, 179.0, 100.0, 99.9, 10.0, 9.9, 1.0, 0.1,
|
---|
17 | 0.12, 0.123, 0.1234, 0.12345, 0.123456, 0.1234567,
|
---|
18 | 1.12, 1.123, 1.1234, 1.12345, 1.123456, 1.1234567,
|
---|
19 | 10.12, 10.123, 10.1234, 10.12345, 10.123456, 10.1234567,
|
---|
20 | 100.12, 100.123, 100.1234, 100.12345, 100.123456, 100.1234567
|
---|
21 | };
|
---|
22 |
|
---|
23 | @Test
|
---|
24 | public void roundingTests() {
|
---|
25 |
|
---|
26 | for (double value : sampleValues) {
|
---|
27 | assertEquals(LatLon.roundToOsmPrecisionStrict(value), value, 0);
|
---|
28 | }
|
---|
29 |
|
---|
30 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.0), 0.0, 0);
|
---|
31 | assertEquals(LatLon.roundToOsmPrecisionStrict(-0.0), 0.0, 0);
|
---|
32 |
|
---|
33 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.12345678), 0.1234568, 0);
|
---|
34 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.123456789), 0.1234568, 0);
|
---|
35 |
|
---|
36 | assertEquals(LatLon.roundToOsmPrecisionStrict(1.12345678), 1.1234568, 0);
|
---|
37 | assertEquals(LatLon.roundToOsmPrecisionStrict(1.123456789), 1.1234568, 0);
|
---|
38 |
|
---|
39 | assertEquals(LatLon.roundToOsmPrecisionStrict(10.12345678), 10.1234568, 0);
|
---|
40 | assertEquals(LatLon.roundToOsmPrecisionStrict(10.123456789), 10.1234568, 0);
|
---|
41 |
|
---|
42 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.12345678), 100.1234568, 0);
|
---|
43 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.123456789), 100.1234568, 0);
|
---|
44 |
|
---|
45 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000001), 100.0000000, 0);
|
---|
46 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000001), 100.0000000, 0);
|
---|
47 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000001), 100.0000000, 0);
|
---|
48 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000001), 100.0000000, 0);
|
---|
49 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000001), 100.0000000, 0);
|
---|
50 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000001), 100.0000000, 0);
|
---|
51 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000001), 100.0000000, 0);
|
---|
52 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000000001), 100.0000000, 0);
|
---|
53 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000000001), 100.0000000, 0);
|
---|
54 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000000001), 100.0000000, 0);
|
---|
55 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000000000001), 100.0000000, 0);
|
---|
56 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000000000001), 100.0000000, 0);
|
---|
57 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000000000001), 100.0000000, 0);
|
---|
58 |
|
---|
59 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999999999), 100.0000000, 0);
|
---|
60 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999999999), 100.0000000, 0);
|
---|
61 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999999999), 100.0000000, 0);
|
---|
62 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999999), 100.0000000, 0);
|
---|
63 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999999), 100.0000000, 0);
|
---|
64 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999999), 100.0000000, 0);
|
---|
65 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999), 100.0000000, 0);
|
---|
66 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999), 100.0000000, 0);
|
---|
67 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999), 100.0000000, 0);
|
---|
68 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999), 100.0000000, 0);
|
---|
69 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999), 100.0000000, 0);
|
---|
70 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999), 100.0000000, 0);
|
---|
71 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999), 100.0000000, 0);
|
---|
72 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999), 100.0000000, 0);
|
---|
73 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999), 99.9999999, 0);
|
---|
74 | }
|
---|
75 |
|
---|
76 | @Test
|
---|
77 | public void toIntervalLonTests() {
|
---|
78 | assertEquals(-180.0, LatLon.toIntervalLon(-180.0), 0);
|
---|
79 | assertEquals(0.0, LatLon.toIntervalLon(0.0), 0);
|
---|
80 | assertEquals(180.0, LatLon.toIntervalLon(180.0), 0);
|
---|
81 |
|
---|
82 | assertEquals(179.0, LatLon.toIntervalLon(-181.0), 0);
|
---|
83 | assertEquals(-179.0, LatLon.toIntervalLon(181.0), 0);
|
---|
84 |
|
---|
85 | assertEquals(-1.0, LatLon.toIntervalLon(359.0), 0);
|
---|
86 | assertEquals(1.0, LatLon.toIntervalLon(-359.0), 0);
|
---|
87 |
|
---|
88 | assertEquals(1.0, LatLon.toIntervalLon(361.0), 0);
|
---|
89 | assertEquals(-1.0, LatLon.toIntervalLon(-361.0), 0);
|
---|
90 |
|
---|
91 | assertEquals(179.0, LatLon.toIntervalLon(539.0), 0);
|
---|
92 | assertEquals(-179.0, LatLon.toIntervalLon(-539.0), 0);
|
---|
93 |
|
---|
94 | assertEquals(-179.0, LatLon.toIntervalLon(541.0), 0);
|
---|
95 | assertEquals(179.0, LatLon.toIntervalLon(-541.0), 0);
|
---|
96 | }
|
---|
97 | }
|
---|