From b09d0e98541edc7122d992e85547741ffd57f72a Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Sat, 26 Nov 2016 19:33:54 +0700 Subject: Implement polyline geofence --- .../org/traccar/geofence/GeofencePolylineTest.java | 54 ++++++++++++++++++++++ .../org/traccar/helper/DistanceCalculatorTest.java | 9 ++++ 2 files changed, 63 insertions(+) create mode 100644 test/org/traccar/geofence/GeofencePolylineTest.java (limited to 'test/org') diff --git a/test/org/traccar/geofence/GeofencePolylineTest.java b/test/org/traccar/geofence/GeofencePolylineTest.java new file mode 100644 index 000000000..df939d8ba --- /dev/null +++ b/test/org/traccar/geofence/GeofencePolylineTest.java @@ -0,0 +1,54 @@ +package org.traccar.geofence; + +import java.text.ParseException; + +import org.junit.Assert; +import org.junit.Test; + +public class GeofencePolylineTest { + + @Test + public void testPolylineWKT() { + String test = "LINESTRING (55.75474 37.61823, 55.75513 37.61888, 55.7535 37.6222, 55.75315 37.62165)"; + GeofenceGeometry geofenceGeometry = new GeofencePolyline(); + try { + geofenceGeometry.fromWkt(test); + } catch (ParseException e){ + Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); + } + Assert.assertEquals(geofenceGeometry.toWkt(), test); + } + + @Test + public void testContainsPolyline1Interval() { + String test = "LINESTRING (56.83777 60.59833, 56.83766 60.5968)"; + + try { + GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 35); + Assert.assertTrue(geofenceGeometry.containsPoint(56.83801, 60.59748)); + + ((GeofencePolyline) geofenceGeometry).setDistance(15); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83801, 60.59748)); + + } catch (ParseException e){ + Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); + } + } + + + @Test + public void testContainsPolyline3Intervals() { + String test = "LINESTRING (56.836 60.6126, 56.8393 60.6114, 56.83887 60.60811, 56.83782 60.5988)"; + + try { + GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 15); + Assert.assertTrue(geofenceGeometry.containsPoint(56.83847, 60.60458)); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83764, 60.59725)); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83861, 60.60822)); + + } catch (ParseException e){ + Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); + } + } + +} diff --git a/test/org/traccar/helper/DistanceCalculatorTest.java b/test/org/traccar/helper/DistanceCalculatorTest.java index 7bbb4e3b1..2ce54c583 100644 --- a/test/org/traccar/helper/DistanceCalculatorTest.java +++ b/test/org/traccar/helper/DistanceCalculatorTest.java @@ -10,5 +10,14 @@ public class DistanceCalculatorTest { Assert.assertEquals( DistanceCalculator.distance(0.0, 0.0, 0.05, 0.05), 7863.0, 10.0); } + + @Test + public void testDistanceToInterval() { + Assert.assertEquals(DistanceCalculator.distanceToInterval( + 56.83801, 60.59748, 56.83777, 60.59833, 56.83766, 60.5968), 33.0, 5.0); + + Assert.assertEquals(DistanceCalculator.distanceToInterval( + 56.83753, 60.59508, 56.83777, 60.59833, 56.83766, 60.5968), 105.0, 5.0); + } } -- cgit v1.2.3