diff --git a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt index 675a82384..b06a9619f 100644 --- a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt @@ -89,7 +89,11 @@ data class NodeInfo( /// return the position if it is valid, else null val validPosition: Position? get() { - return position?.takeIf { it.latitude != 0.0 || it.longitude != 0.0 } + return position?.takeIf { + (it.latitude <= 90.0 && it.latitude >= -90) && // If GPS gives a crap position don't crash our app + it.latitude != 0.0 && + it.longitude != 0.0 + } } /// @return distance in meters to some other node (or null if unknown) diff --git a/app/src/test/java/com/geeksville/mesh/PositionTest.kt b/app/src/test/java/com/geeksville/mesh/PositionTest.kt new file mode 100644 index 000000000..f2053928a --- /dev/null +++ b/app/src/test/java/com/geeksville/mesh/PositionTest.kt @@ -0,0 +1,18 @@ +package com.geeksville.mesh + + +import org.junit.Assert +import org.junit.Test + +class PositionTest { + @Test + fun degGood() { + Assert.assertEquals(Position.degI(89.0), 890000000) + Assert.assertEquals(Position.degI(-89.0), -890000000) + + Assert.assertEquals(Position.degD(Position.degI(89.0)), 89.0, 0.01) + Assert.assertEquals(Position.degD(Position.degI(-89.0)), -89.0, 0.01) + } + + +}