]> gitweb.fperrin.net Git - GpsPrune.git/blob - test/tim/prune/function/olc/OlcDecoderTest.java
Version 20.4, May 2021
[GpsPrune.git] / test / tim / prune / function / olc / OlcDecoderTest.java
1 package tim.prune.function.olc;
2
3 import static org.junit.jupiter.api.Assertions.*;
4
5 import org.junit.jupiter.api.Test;
6
7 /**
8  * JUnit tests for decoding of Open Location Codes (Pluscodes)
9  */
10 class OlcDecoderTest
11 {
12
13         @Test
14         void testDecodeStringsTooShort()
15         {
16                 OlcArea area = OlcDecoder.decode(null);
17                 assertEquals(area, null, "Decoding null gives null");
18                 area = OlcDecoder.decode("");
19                 assertEquals(area, null, "Decoding \"\" gives null");
20                 area = OlcDecoder.decode("9");
21                 assertEquals(area, null, "Decoding \"9\" gives null");
22                 area = OlcDecoder.decode("9999999");
23                 assertEquals(area, null, "Decoding \"9999999\" gives null");
24         }
25
26         @Test
27         void testDecodeStringsInvalid()
28         {
29                 OlcArea area = OlcDecoder.decode("11111111");
30                 assertEquals(area, null, "Decoding lots of 1s gives null");
31                 area = OlcDecoder.decode("99999991");
32                 assertEquals(area, null, "Decoding with a single 1 gives null");
33                 area = OlcDecoder.decode("99999999");
34                 assertNotEquals(area, null, "Decoding with all 9s gives non-null");
35                 area = OlcDecoder.decode("00000000");
36                 assertEquals(area, null, "Decoding with all padding gives null");
37                 area = OlcDecoder.decode("99000000");
38                 assertNotEquals(area, null, "Decoding with some padding gives non-null");
39         }
40
41         @Test
42         void testDecodeZeroes()
43         {
44                 OlcArea area = OlcDecoder.decode("22000000");
45                 assertNotEquals(area, null, "Decoding with padding gives non-null");
46                 assertEquals(-90.0, area.minLat, 0.0, "South 90");
47                 assertEquals(-70.0, area.maxLat, 0.0, "South 70");
48                 assertEquals(-180.0, area.minLon, 0.0, "West 180");
49                 assertEquals(-160.0, area.maxLon, 0.0, "West 160");
50         }
51
52         @Test
53         void testDecodeZeroes2()
54         {
55                 OlcArea area = OlcDecoder.decode("22220000");
56                 assertNotEquals(area, null, "Decoding with padding gives non-null");
57                 assertEquals(-90.0, area.minLat, 0.0, "South 90");
58                 assertEquals(-89.0, area.maxLat, 0.0, "South 89");
59                 assertEquals(-180.0, area.minLon, 0.0, "West 180");
60                 assertEquals(-179.0, area.maxLon, 0.0, "West 179");
61         }
62
63         @Test
64         void testMountainView()
65         {
66                 OlcArea area = OlcDecoder.decode("6PH57VP3+PR6");
67                 assertNotEquals(area, null, "Decoding with separator gives non-null");
68                 System.out.println("Min lat: " + area.minLat);
69                 System.out.println("Max lat: " + area.maxLat);
70                 System.out.println("Min lon: " + area.minLon);
71                 System.out.println("Max lon: " + area.maxLon);
72                 assertTrue(area.maxLat > area.minLat, "latitude range");
73                 assertTrue(area.maxLon > area.minLon, "longitude range");
74         }
75 }