aboutsummaryrefslogtreecommitdiff
path: root/test/org/traccar
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-11-27 22:58:35 +1300
committerGitHub <noreply@github.com>2016-11-27 22:58:35 +1300
commit58db487ece3ac8644557145a07a75ce4bf63a344 (patch)
tree29f18d871486df89c202e32a82fe143acc3754f7 /test/org/traccar
parentf1b58491f6dc2a50312efb19f501d2121ed06b08 (diff)
parentf933147c0cba53df96448a64a2ba58dda4da1659 (diff)
downloadtraccar-server-58db487ece3ac8644557145a07a75ce4bf63a344.tar.gz
traccar-server-58db487ece3ac8644557145a07a75ce4bf63a344.tar.bz2
traccar-server-58db487ece3ac8644557145a07a75ce4bf63a344.zip
Merge pull request #2608 from Abyss777/polyline_geofence
Implemented polyline geofence
Diffstat (limited to 'test/org/traccar')
-rw-r--r--test/org/traccar/geofence/GeofenceCircleTest.java14
-rw-r--r--test/org/traccar/geofence/GeofencePolygonTest.java36
-rw-r--r--test/org/traccar/geofence/GeofencePolylineTest.java45
-rw-r--r--test/org/traccar/helper/DistanceCalculatorTest.java9
4 files changed, 80 insertions, 24 deletions
diff --git a/test/org/traccar/geofence/GeofenceCircleTest.java b/test/org/traccar/geofence/GeofenceCircleTest.java
index 52c214b53..133ca1db8 100644
--- a/test/org/traccar/geofence/GeofenceCircleTest.java
+++ b/test/org/traccar/geofence/GeofenceCircleTest.java
@@ -8,29 +8,19 @@ import org.junit.Test;
public class GeofenceCircleTest {
@Test
- public void testCircleWKT() {
+ public void testCircleWkt() throws ParseException {
String test = "CIRCLE (55.75414 37.6204, 100)";
GeofenceGeometry geofenceGeometry = new GeofenceCircle();
- try {
geofenceGeometry.fromWkt(test);
- } catch (ParseException e){
- Assert.assertTrue("ParseExceprion: " + e.getMessage(), true);
- }
Assert.assertEquals(geofenceGeometry.toWkt(), test);
}
@Test
- public void testContainsCircle() {
+ public void testContainsCircle() throws ParseException {
String test = "CIRCLE (55.75414 37.6204, 100)";
GeofenceGeometry geofenceGeometry = new GeofenceCircle();
- try {
geofenceGeometry.fromWkt(test);
- } catch (ParseException e){
- Assert.assertTrue("ParseExceprion: " + e.getMessage(), true);
- }
-
Assert.assertTrue(geofenceGeometry.containsPoint(55.75477, 37.62025));
-
Assert.assertTrue(!geofenceGeometry.containsPoint(55.75545, 37.61921));
}
}
diff --git a/test/org/traccar/geofence/GeofencePolygonTest.java b/test/org/traccar/geofence/GeofencePolygonTest.java
index e3d6aaa29..361e7b70f 100644
--- a/test/org/traccar/geofence/GeofencePolygonTest.java
+++ b/test/org/traccar/geofence/GeofencePolygonTest.java
@@ -8,31 +8,43 @@ import org.junit.Test;
public class GeofencePolygonTest {
@Test
- public void testPolygonWKT() {
+ public void testPolygonWkt() throws ParseException {
String test = "POLYGON ((55.75474 37.61823, 55.75513 37.61888, 55.7535 37.6222, 55.75315 37.62165))";
GeofenceGeometry geofenceGeometry = new GeofencePolygon();
- try {
geofenceGeometry.fromWkt(test);
- } catch (ParseException e){
- Assert.assertTrue("ParseExceprion: " + e.getMessage(), true);
- }
Assert.assertEquals(geofenceGeometry.toWkt(), test);
}
@Test
- public void testContainsPolygon() {
+ public void testContainsPolygon() throws ParseException {
String test = "POLYGON ((55.75474 37.61823, 55.75513 37.61888, 55.7535 37.6222, 55.75315 37.62165))";
GeofenceGeometry geofenceGeometry = new GeofencePolygon();
- try {
geofenceGeometry.fromWkt(test);
- } catch (ParseException e){
- Assert.assertTrue("ParseExceprion: " + e.getMessage(), true);
- }
-
Assert.assertTrue(geofenceGeometry.containsPoint(55.75476, 37.61915));
-
Assert.assertTrue(!geofenceGeometry.containsPoint(55.75545, 37.61921));
}
+
+ @Test
+ public void testContainsPolygon180() throws ParseException {
+ String test = "POLYGON ((66.9494 179.838, 66.9508 -179.8496, 66.8406 -180.0014))";
+ GeofenceGeometry geofenceGeometry = new GeofencePolygon();
+ geofenceGeometry.fromWkt(test);
+ Assert.assertTrue(geofenceGeometry.containsPoint(66.9015, -180.0096));
+ Assert.assertTrue(geofenceGeometry.containsPoint(66.9015, 179.991));
+ Assert.assertTrue(!geofenceGeometry.containsPoint(66.8368, -179.8792));
+
+ }
+
+ @Test
+ public void testContainsPolygon0() throws ParseException {
+ String test = "POLYGON ((51.1966 -0.6207, 51.1897 0.4147, 50.9377 0.5136, 50.8675 -0.6082))";
+ GeofenceGeometry geofenceGeometry = new GeofencePolygon();
+ geofenceGeometry.fromWkt(test);
+ Assert.assertTrue(geofenceGeometry.containsPoint(51.0466, -0.0165));
+ Assert.assertTrue(geofenceGeometry.containsPoint(51.0466, 0.018));
+ Assert.assertTrue(!geofenceGeometry.containsPoint(50.9477, 0.5836));
+
+ }
}
diff --git a/test/org/traccar/geofence/GeofencePolylineTest.java b/test/org/traccar/geofence/GeofencePolylineTest.java
new file mode 100644
index 000000000..71aeb4081
--- /dev/null
+++ b/test/org/traccar/geofence/GeofencePolylineTest.java
@@ -0,0 +1,45 @@
+package org.traccar.geofence;
+
+import java.text.ParseException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class GeofencePolylineTest {
+
+ @Test
+ public void testPolylineWkt() throws ParseException {
+ String test = "LINESTRING (55.75474 37.61823, 55.75513 37.61888, 55.7535 37.6222, 55.75315 37.62165)";
+ GeofenceGeometry geofenceGeometry = new GeofencePolyline();
+ geofenceGeometry.fromWkt(test);
+ Assert.assertEquals(geofenceGeometry.toWkt(), test);
+ }
+
+ @Test
+ public void testContainsPolyline1Interval() throws ParseException {
+ String test = "LINESTRING (56.83777 60.59833, 56.83766 60.5968)";
+ 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));
+ }
+
+ @Test
+ public void testContainsPolyline3Intervals() throws ParseException {
+ String test = "LINESTRING (56.836 60.6126, 56.8393 60.6114, 56.83887 60.60811, 56.83782 60.5988)";
+ 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));
+
+ }
+
+ @Test
+ public void testContainsPolylineNear180() throws ParseException {
+ String test = "LINESTRING (66.9494 179.838, 66.9508 -179.8496)";
+ GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 25);
+ Assert.assertTrue(geofenceGeometry.containsPoint(66.95, 180.0));
+ Assert.assertTrue(!geofenceGeometry.containsPoint(66.96, 180.0));
+ Assert.assertTrue(!geofenceGeometry.containsPoint(66.9509, -179.83));
+ }
+}
diff --git a/test/org/traccar/helper/DistanceCalculatorTest.java b/test/org/traccar/helper/DistanceCalculatorTest.java
index 7bbb4e3b1..22e41c9a3 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 testDistanceToLine() {
+ Assert.assertEquals(DistanceCalculator.distanceToLine(
+ 56.83801, 60.59748, 56.83777, 60.59833, 56.83766, 60.5968), 33.0, 5.0);
+
+ Assert.assertEquals(DistanceCalculator.distanceToLine(
+ 56.83753, 60.59508, 56.83777, 60.59833, 56.83766, 60.5968), 105.0, 5.0);
+ }
}