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 | public class LatLonTest {
|
---|
9 |
|
---|
10 | public static final double[] SAMPLE_VALUES = new double[]{
|
---|
11 | -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,
|
---|
12 | 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,
|
---|
13 | 0.12, 0.123, 0.1234, 0.12345, 0.123456, 0.1234567,
|
---|
14 | 1.12, 1.123, 1.1234, 1.12345, 1.123456, 1.1234567,
|
---|
15 | 10.12, 10.123, 10.1234, 10.12345, 10.123456, 10.1234567,
|
---|
16 | 100.12, 100.123, 100.1234, 100.12345, 100.123456, 100.1234567
|
---|
17 | };
|
---|
18 |
|
---|
19 | /**
|
---|
20 | * Test of {@link LatLon#roundToOsmPrecisionStrict}
|
---|
21 | */
|
---|
22 | @Test
|
---|
23 | public void testRoundToOsmPrecisionStrict() {
|
---|
24 |
|
---|
25 | for (double value : SAMPLE_VALUES) {
|
---|
26 | assertEquals(LatLon.roundToOsmPrecisionStrict(value), value, 0);
|
---|
27 | }
|
---|
28 |
|
---|
29 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.0), 0.0, 0);
|
---|
30 | assertEquals(LatLon.roundToOsmPrecisionStrict(-0.0), 0.0, 0);
|
---|
31 |
|
---|
32 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.12345678), 0.1234568, 0);
|
---|
33 | assertEquals(LatLon.roundToOsmPrecisionStrict(0.123456789), 0.1234568, 0);
|
---|
34 |
|
---|
35 | assertEquals(LatLon.roundToOsmPrecisionStrict(1.12345678), 1.1234568, 0);
|
---|
36 | assertEquals(LatLon.roundToOsmPrecisionStrict(1.123456789), 1.1234568, 0);
|
---|
37 |
|
---|
38 | assertEquals(LatLon.roundToOsmPrecisionStrict(10.12345678), 10.1234568, 0);
|
---|
39 | assertEquals(LatLon.roundToOsmPrecisionStrict(10.123456789), 10.1234568, 0);
|
---|
40 |
|
---|
41 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.12345678), 100.1234568, 0);
|
---|
42 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.123456789), 100.1234568, 0);
|
---|
43 |
|
---|
44 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000001), 100.0000000, 0);
|
---|
45 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000001), 100.0000000, 0);
|
---|
46 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000001), 100.0000000, 0);
|
---|
47 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000001), 100.0000000, 0);
|
---|
48 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000001), 100.0000000, 0);
|
---|
49 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000001), 100.0000000, 0);
|
---|
50 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000001), 100.0000000, 0);
|
---|
51 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000000001), 100.0000000, 0);
|
---|
52 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000000001), 100.0000000, 0);
|
---|
53 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000000001), 100.0000000, 0);
|
---|
54 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.000000000000000001), 100.0000000, 0);
|
---|
55 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.0000000000000000001), 100.0000000, 0);
|
---|
56 | assertEquals(LatLon.roundToOsmPrecisionStrict(100.00000000000000000001), 100.0000000, 0);
|
---|
57 |
|
---|
58 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999999999), 100.0000000, 0);
|
---|
59 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999999999), 100.0000000, 0);
|
---|
60 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999999999), 100.0000000, 0);
|
---|
61 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999999), 100.0000000, 0);
|
---|
62 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999999), 100.0000000, 0);
|
---|
63 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999999), 100.0000000, 0);
|
---|
64 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999999), 100.0000000, 0);
|
---|
65 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999999), 100.0000000, 0);
|
---|
66 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999999), 100.0000000, 0);
|
---|
67 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999999), 100.0000000, 0);
|
---|
68 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999999), 100.0000000, 0);
|
---|
69 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999999), 100.0000000, 0);
|
---|
70 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.999999999), 100.0000000, 0);
|
---|
71 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.99999999), 100.0000000, 0);
|
---|
72 | assertEquals(LatLon.roundToOsmPrecisionStrict(99.9999999), 99.9999999, 0);
|
---|
73 | }
|
---|
74 |
|
---|
75 | /**
|
---|
76 | * Test of {@link LatLon#toIntervalLon}
|
---|
77 | */
|
---|
78 | @Test
|
---|
79 | public void testToIntervalLon() {
|
---|
80 | assertEquals(-180.0, LatLon.toIntervalLon(-180.0), 0);
|
---|
81 | assertEquals(0.0, LatLon.toIntervalLon(0.0), 0);
|
---|
82 | assertEquals(180.0, LatLon.toIntervalLon(180.0), 0);
|
---|
83 |
|
---|
84 | assertEquals(179.0, LatLon.toIntervalLon(-181.0), 0);
|
---|
85 | assertEquals(-179.0, LatLon.toIntervalLon(181.0), 0);
|
---|
86 |
|
---|
87 | assertEquals(-1.0, LatLon.toIntervalLon(359.0), 0);
|
---|
88 | assertEquals(1.0, LatLon.toIntervalLon(-359.0), 0);
|
---|
89 |
|
---|
90 | assertEquals(1.0, LatLon.toIntervalLon(361.0), 0);
|
---|
91 | assertEquals(-1.0, LatLon.toIntervalLon(-361.0), 0);
|
---|
92 |
|
---|
93 | assertEquals(179.0, LatLon.toIntervalLon(539.0), 0);
|
---|
94 | assertEquals(-179.0, LatLon.toIntervalLon(-539.0), 0);
|
---|
95 |
|
---|
96 | assertEquals(-179.0, LatLon.toIntervalLon(541.0), 0);
|
---|
97 | assertEquals(179.0, LatLon.toIntervalLon(-541.0), 0);
|
---|
98 | }
|
---|
99 |
|
---|
100 | /**
|
---|
101 | * Test of {@link LatLon#equals}
|
---|
102 | */
|
---|
103 | @Test
|
---|
104 | public void testEquals() {
|
---|
105 | for (int i = 1; i < SAMPLE_VALUES.length; i++) {
|
---|
106 | LatLon a = new LatLon(SAMPLE_VALUES[i-1], SAMPLE_VALUES[i]);
|
---|
107 | LatLon b = new LatLon(SAMPLE_VALUES[i-1], SAMPLE_VALUES[i]);
|
---|
108 | assertEquals(a, b);
|
---|
109 | }
|
---|
110 | }
|
---|
111 |
|
---|
112 | /**
|
---|
113 | * Test of {@link LatLon#hashCode}
|
---|
114 | */
|
---|
115 | @Test
|
---|
116 | public void testHashCode() {
|
---|
117 | for (int i = 1; i < SAMPLE_VALUES.length; i++) {
|
---|
118 | LatLon a = new LatLon(SAMPLE_VALUES[i-1], SAMPLE_VALUES[i]);
|
---|
119 | LatLon b = new LatLon(SAMPLE_VALUES[i-1], SAMPLE_VALUES[i]);
|
---|
120 | assertEquals(a.hashCode(), b.hashCode());
|
---|
121 | }
|
---|
122 | }
|
---|
123 | }
|
---|