X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=test%2Ftim%2Fprune%2Ffunction%2Folc%2FOlcDecoderTest.java;fp=test%2Ftim%2Fprune%2Ffunction%2Folc%2FOlcDecoderTest.java;h=951a0819b48864c325550099f05e4409a2c420a6;hp=0000000000000000000000000000000000000000;hb=cd5dd0c207b676067e85e0885b90f05445b7e229;hpb=1db53356139320890a8d10e982865a1899e11b81 diff --git a/test/tim/prune/function/olc/OlcDecoderTest.java b/test/tim/prune/function/olc/OlcDecoderTest.java new file mode 100644 index 0000000..951a081 --- /dev/null +++ b/test/tim/prune/function/olc/OlcDecoderTest.java @@ -0,0 +1,75 @@ +package tim.prune.function.olc; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +/** + * JUnit tests for decoding of Open Location Codes (Pluscodes) + */ +class OlcDecoderTest +{ + + @Test + void testDecodeStringsTooShort() + { + OlcArea area = OlcDecoder.decode(null); + assertEquals(area, null, "Decoding null gives null"); + area = OlcDecoder.decode(""); + assertEquals(area, null, "Decoding \"\" gives null"); + area = OlcDecoder.decode("9"); + assertEquals(area, null, "Decoding \"9\" gives null"); + area = OlcDecoder.decode("9999999"); + assertEquals(area, null, "Decoding \"9999999\" gives null"); + } + + @Test + void testDecodeStringsInvalid() + { + OlcArea area = OlcDecoder.decode("11111111"); + assertEquals(area, null, "Decoding lots of 1s gives null"); + area = OlcDecoder.decode("99999991"); + assertEquals(area, null, "Decoding with a single 1 gives null"); + area = OlcDecoder.decode("99999999"); + assertNotEquals(area, null, "Decoding with all 9s gives non-null"); + area = OlcDecoder.decode("00000000"); + assertEquals(area, null, "Decoding with all padding gives null"); + area = OlcDecoder.decode("99000000"); + assertNotEquals(area, null, "Decoding with some padding gives non-null"); + } + + @Test + void testDecodeZeroes() + { + OlcArea area = OlcDecoder.decode("22000000"); + assertNotEquals(area, null, "Decoding with padding gives non-null"); + assertEquals(-90.0, area.minLat, 0.0, "South 90"); + assertEquals(-70.0, area.maxLat, 0.0, "South 70"); + assertEquals(-180.0, area.minLon, 0.0, "West 180"); + assertEquals(-160.0, area.maxLon, 0.0, "West 160"); + } + + @Test + void testDecodeZeroes2() + { + OlcArea area = OlcDecoder.decode("22220000"); + assertNotEquals(area, null, "Decoding with padding gives non-null"); + assertEquals(-90.0, area.minLat, 0.0, "South 90"); + assertEquals(-89.0, area.maxLat, 0.0, "South 89"); + assertEquals(-180.0, area.minLon, 0.0, "West 180"); + assertEquals(-179.0, area.maxLon, 0.0, "West 179"); + } + + @Test + void testMountainView() + { + OlcArea area = OlcDecoder.decode("6PH57VP3+PR6"); + assertNotEquals(area, null, "Decoding with separator gives non-null"); + System.out.println("Min lat: " + area.minLat); + System.out.println("Max lat: " + area.maxLat); + System.out.println("Min lon: " + area.minLon); + System.out.println("Max lon: " + area.maxLon); + assertTrue(area.maxLat > area.minLat, "latitude range"); + assertTrue(area.maxLon > area.minLon, "longitude range"); + } +}