aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/geopoint/GeopointTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/cgeo/geocaching/geopoint/GeopointTest.java')
-rw-r--r--tests/src/cgeo/geocaching/geopoint/GeopointTest.java180
1 files changed, 180 insertions, 0 deletions
diff --git a/tests/src/cgeo/geocaching/geopoint/GeopointTest.java b/tests/src/cgeo/geocaching/geopoint/GeopointTest.java
index 63cc0b5..894b046 100644
--- a/tests/src/cgeo/geocaching/geopoint/GeopointTest.java
+++ b/tests/src/cgeo/geocaching/geopoint/GeopointTest.java
@@ -1,5 +1,9 @@
package cgeo.geocaching.geopoint;
+import cgeo.geocaching.geopoint.Geopoint.DDD;
+import cgeo.geocaching.geopoint.Geopoint.DMM;
+import cgeo.geocaching.geopoint.Geopoint.DMS;
+
import android.test.AndroidTestCase;
import junit.framework.Assert;
@@ -63,4 +67,180 @@ public class GeopointTest extends AndroidTestCase {
Assert.assertEquals(107.715, gp2.bearingTo(gp1), 1e-3);
}
+ public static void testDDD() {
+ // case 1
+ final Geopoint gp1 = new Geopoint(51.3d, 13.8d);
+ DDD ddd1 = gp1.asDDD();
+
+ checkDDD(ddd1, 'N', 51, 30000, 'E', 13, 80000);
+
+ Geopoint gp1a = DDD.createGeopoint(String.valueOf(ddd1.latDir), String.valueOf(ddd1.latDeg), String.valueOf(ddd1.latDegFrac),
+ String.valueOf(ddd1.lonDir), String.valueOf(ddd1.lonDeg), String.valueOf(ddd1.lonDegFrac));
+
+ Assert.assertTrue(gp1a.isEqualTo(gp1));
+
+ // case 2
+ final Geopoint gp2 = new Geopoint(51.34567d, 13.87654d);
+ DDD ddd2 = gp2.asDDD();
+
+ checkDDD(ddd2, 'N', 51, 34567, 'E', 13, 87654);
+
+ Geopoint gp2a = DDD.createGeopoint(String.valueOf(ddd2.latDir), String.valueOf(ddd2.latDeg), String.valueOf(ddd2.latDegFrac),
+ String.valueOf(ddd2.lonDir), String.valueOf(ddd2.lonDeg), String.valueOf(ddd2.lonDegFrac));
+
+ Assert.assertTrue(gp2a.isEqualTo(gp2));
+
+ // case 3
+ final Geopoint gp3 = new Geopoint(51.29999833333333d, 13.8d);
+ DDD ddd3 = gp3.asDDD();
+
+ checkDDD(ddd3, 'N', 51, 30000, 'E', 13, 80000);
+
+ Geopoint gp3a = DDD.createGeopoint(String.valueOf(ddd3.latDir), String.valueOf(ddd3.latDeg), String.valueOf(ddd3.latDegFrac),
+ String.valueOf(ddd3.lonDir), String.valueOf(ddd3.lonDeg), String.valueOf(ddd3.lonDegFrac));
+
+ checkTolerance(gp3, gp3a, 5e-5);
+
+ // case 4
+ final Geopoint gp4 = new Geopoint(51.00012d, 13.00089d);
+ DDD ddd4 = gp4.asDDD();
+
+ checkDDD(ddd4, 'N', 51, 12, 'E', 13, 89);
+
+ Geopoint gp4a = DDD.createGeopoint(String.valueOf(ddd4.latDir), String.valueOf(ddd4.latDeg), String.valueOf(ddd4.latDegFrac),
+ String.valueOf(ddd4.lonDir), String.valueOf(ddd4.lonDeg), String.valueOf(ddd4.lonDegFrac));
+
+ checkTolerance(gp4, gp4a, 5e-5);
+ }
+
+ private static void checkDDD(DDD ddd, char latDir, int latDeg, int latDegFrac, char lonDir, int lonDeg, int lonDegFrac) {
+ Assert.assertEquals(latDir, ddd.latDir);
+ Assert.assertEquals(latDeg, ddd.latDeg);
+ Assert.assertEquals(latDegFrac, ddd.latDegFrac);
+ Assert.assertEquals(lonDir, ddd.lonDir);
+ Assert.assertEquals(lonDeg, ddd.lonDeg);
+ Assert.assertEquals(lonDegFrac, ddd.lonDegFrac);
+ }
+
+ private static void checkTolerance(Geopoint gp1, Geopoint gp2, double tolerance) {
+ Assert.assertTrue(Math.abs(gp1.getLatitude() - gp2.getLatitude()) <= tolerance);
+ Assert.assertTrue(Math.abs(gp1.getLongitude() - gp2.getLongitude()) <= tolerance);
+ }
+
+ public static void testDMM() {
+ // case 1
+ final Geopoint gp1 = new Geopoint(51.3d, 13.8d);
+ DMM dmm1 = gp1.asDMM();
+
+ checkDMM(dmm1, 'N', 51, 18, 0, 'E', 13, 48, 0);
+
+ Geopoint gp1a = DMM.createGeopoint(String.valueOf(dmm1.latDir), String.valueOf(dmm1.latDeg), String.valueOf(dmm1.latMin), String.valueOf(dmm1.latMinFrac),
+ String.valueOf(dmm1.lonDir), String.valueOf(dmm1.lonDeg), String.valueOf(dmm1.lonMin), String.valueOf(dmm1.lonMinFrac));
+
+ Assert.assertTrue(gp1a.isEqualTo(gp1));
+
+ // case 2
+ final Geopoint gp2 = new Geopoint(51.34567d, 13.87654d);
+ DMM dmm2 = gp2.asDMM();
+
+ checkDMM(dmm2, 'N', 51, 20, 740, 'E', 13, 52, 592);
+
+ Geopoint gp2a = DMM.createGeopoint(String.valueOf(dmm2.latDir), String.valueOf(dmm2.latDeg), String.valueOf(dmm2.latMin), String.valueOf(dmm2.latMinFrac),
+ String.valueOf(dmm2.lonDir), String.valueOf(dmm2.lonDeg), String.valueOf(dmm2.lonMin), String.valueOf(dmm2.lonMinFrac));
+
+ checkTolerance(gp2, gp2a, 5e-5);
+
+ // case 3
+ final Geopoint gp3 = new Geopoint(51.29999833333333d, 13.8d);
+ DMM dmm3 = gp3.asDMM();
+
+ checkDMM(dmm3, 'N', 51, 18, 0, 'E', 13, 48, 0);
+
+ Geopoint gp3a = DMM.createGeopoint(String.valueOf(dmm3.latDir), String.valueOf(dmm3.latDeg), String.valueOf(dmm3.latMin), String.valueOf(dmm3.latMinFrac),
+ String.valueOf(dmm3.lonDir), String.valueOf(dmm3.lonDeg), String.valueOf(dmm3.lonMin), String.valueOf(dmm3.lonMinFrac));
+
+ checkTolerance(gp3, gp3a, 5e-5);
+
+ // case 4
+ final Geopoint gp4 = new Geopoint(51.00012d, 13.00089d);
+ DMM dmm4 = gp4.asDMM();
+
+ checkDMM(dmm4, 'N', 51, 0, 7, 'E', 13, 0, 53);
+
+ Geopoint gp4a = DMM.createGeopoint(String.valueOf(dmm4.latDir), String.valueOf(dmm4.latDeg), String.valueOf(dmm4.latMin), String.valueOf(dmm4.latMinFrac),
+ String.valueOf(dmm4.lonDir), String.valueOf(dmm4.lonDeg), String.valueOf(dmm4.lonMin), String.valueOf(dmm4.lonMinFrac));
+
+ checkTolerance(gp4, gp4a, 5e-5);
+ }
+
+ private static void checkDMM(DMM dmm, char latDir, int latDeg, int latMin, int latMinFrac, char lonDir, int lonDeg, int lonMin, int lonMinFrac) {
+ Assert.assertEquals(latDir, dmm.latDir);
+ Assert.assertEquals(latDeg, dmm.latDeg);
+ Assert.assertEquals(latMin, dmm.latMin);
+ Assert.assertEquals(latMinFrac, dmm.latMinFrac);
+ Assert.assertEquals(lonDir, dmm.lonDir);
+ Assert.assertEquals(lonDeg, dmm.lonDeg);
+ Assert.assertEquals(lonMin, dmm.lonMin);
+ Assert.assertEquals(lonMinFrac, dmm.lonMinFrac);
+ }
+
+ public static void testDMS() {
+ // case 1
+ final Geopoint gp1 = new Geopoint(51.3d, 13.8d);
+ DMS dms1 = gp1.asDMS();
+
+ checkDMS(dms1, 'N', 51, 18, 0, 0, 'E', 13, 48, 0, 0);
+
+ Geopoint gp1a = DMS.createGeopoint(String.valueOf(dms1.latDir), String.valueOf(dms1.latDeg), String.valueOf(dms1.latMin), String.valueOf(dms1.latSec), String.valueOf(dms1.latSecFrac),
+ String.valueOf(dms1.lonDir), String.valueOf(dms1.lonDeg), String.valueOf(dms1.lonMin), String.valueOf(dms1.lonSec), String.valueOf(dms1.lonSecFrac));
+
+ Assert.assertTrue(gp1a.isEqualTo(gp1));
+
+ // case 2
+ final Geopoint gp2 = new Geopoint(51.34567d, 13.87654d);
+ DMS dms2 = gp2.asDMS();
+
+ checkDMS(dms2, 'N', 51, 20, 44, 412, 'E', 13, 52, 35, 544);
+
+ Geopoint gp2a = DMS.createGeopoint(String.valueOf(dms2.latDir), String.valueOf(dms2.latDeg), String.valueOf(dms2.latMin), String.valueOf(dms2.latSec), String.valueOf(dms2.latSecFrac),
+ String.valueOf(dms2.lonDir), String.valueOf(dms2.lonDeg), String.valueOf(dms2.lonMin), String.valueOf(dms2.lonSec), String.valueOf(dms2.lonSecFrac));
+
+ checkTolerance(gp2, gp2a, 5e-6);
+
+ // case 3
+ final Geopoint gp3 = new Geopoint(51.29999833333333d, 13.8d);
+ DMS dms3 = gp3.asDMS();
+
+ checkDMS(dms3, 'N', 51, 17, 59, 994, 'E', 13, 48, 0, 0);
+
+ Geopoint gp3a = DMS.createGeopoint(String.valueOf(dms3.latDir), String.valueOf(dms3.latDeg), String.valueOf(dms3.latMin), String.valueOf(dms3.latSec), String.valueOf(dms3.latSecFrac),
+ String.valueOf(dms3.lonDir), String.valueOf(dms3.lonDeg), String.valueOf(dms3.lonMin), String.valueOf(dms3.lonSec), String.valueOf(dms3.lonSecFrac));
+
+ checkTolerance(gp3, gp3a, 5e-6);
+
+ // case 4
+ final Geopoint gp4 = new Geopoint(51.00012d, 13.00089d);
+ DMS dms4 = gp4.asDMS();
+
+ checkDMS(dms4, 'N', 51, 0, 0, 432, 'E', 13, 0, 3, 204);
+
+ Geopoint gp4a = DMS.createGeopoint(String.valueOf(dms4.latDir), String.valueOf(dms4.latDeg), String.valueOf(dms4.latMin), String.valueOf(dms4.latSec), String.valueOf(dms4.latSecFrac),
+ String.valueOf(dms4.lonDir), String.valueOf(dms4.lonDeg), String.valueOf(dms4.lonMin), String.valueOf(dms4.lonSec), String.valueOf(dms4.lonSecFrac));
+
+ checkTolerance(gp4, gp4a, 5e-6);
+ }
+
+ private static void checkDMS(DMS dms, char latDir, int latDeg, int latMin, int latSec, int latSecFrac, char lonDir, int lonDeg, int lonMin, int lonSec, int lonSecFrac) {
+ Assert.assertEquals(latDir, dms.latDir);
+ Assert.assertEquals(latDeg, dms.latDeg);
+ Assert.assertEquals(latMin, dms.latMin);
+ Assert.assertEquals(latSec, dms.latSec);
+ Assert.assertEquals(latSecFrac, dms.latSecFrac);
+ Assert.assertEquals(lonDir, dms.lonDir);
+ Assert.assertEquals(lonDeg, dms.lonDeg);
+ Assert.assertEquals(lonMin, dms.lonMin);
+ Assert.assertEquals(lonSec, dms.lonSec);
+ Assert.assertEquals(lonSecFrac, dms.lonSecFrac);
+ }
+
}