From 08754125ed5d152efe29926728033da3658c69fc Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 27 Feb 2019 23:02:41 -0800 Subject: Move events handler classes --- test/org/traccar/events/AlertEventHandlerTest.java | 28 ----- .../events/CommandResultEventHandlerTest.java | 28 ----- .../traccar/events/IgnitionEventHandlerTest.java | 26 ----- .../org/traccar/events/MotionEventHandlerTest.java | 119 --------------------- .../traccar/events/OverspeedEventHandlerTest.java | 118 -------------------- .../handler/events/AlertEventHandlerTest.java | 28 +++++ .../events/CommandResultEventHandlerTest.java | 28 +++++ .../handler/events/IgnitionEventHandlerTest.java | 26 +++++ .../handler/events/MotionEventHandlerTest.java | 119 +++++++++++++++++++++ .../handler/events/OverspeedEventHandlerTest.java | 118 ++++++++++++++++++++ 10 files changed, 319 insertions(+), 319 deletions(-) delete mode 100644 test/org/traccar/events/AlertEventHandlerTest.java delete mode 100644 test/org/traccar/events/CommandResultEventHandlerTest.java delete mode 100644 test/org/traccar/events/IgnitionEventHandlerTest.java delete mode 100644 test/org/traccar/events/MotionEventHandlerTest.java delete mode 100644 test/org/traccar/events/OverspeedEventHandlerTest.java create mode 100644 test/org/traccar/handler/events/AlertEventHandlerTest.java create mode 100644 test/org/traccar/handler/events/CommandResultEventHandlerTest.java create mode 100644 test/org/traccar/handler/events/IgnitionEventHandlerTest.java create mode 100644 test/org/traccar/handler/events/MotionEventHandlerTest.java create mode 100644 test/org/traccar/handler/events/OverspeedEventHandlerTest.java (limited to 'test/org') diff --git a/test/org/traccar/events/AlertEventHandlerTest.java b/test/org/traccar/events/AlertEventHandlerTest.java deleted file mode 100644 index 4e11398e1..000000000 --- a/test/org/traccar/events/AlertEventHandlerTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.traccar.events; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.Map; - -import org.junit.Test; -import org.traccar.BaseTest; -import org.traccar.model.Event; -import org.traccar.model.Position; - -public class AlertEventHandlerTest extends BaseTest { - - @Test - public void testAlertEventHandler() throws Exception { - - AlertEventHandler alertEventHandler = new AlertEventHandler(); - - Position position = new Position(); - position.set(Position.KEY_ALARM, Position.ALARM_GENERAL); - Map events = alertEventHandler.analyzePosition(position); - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_ALARM, event.getType()); - } - -} diff --git a/test/org/traccar/events/CommandResultEventHandlerTest.java b/test/org/traccar/events/CommandResultEventHandlerTest.java deleted file mode 100644 index 602108d1a..000000000 --- a/test/org/traccar/events/CommandResultEventHandlerTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.traccar.events; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.Map; - -import org.junit.Test; -import org.traccar.BaseTest; -import org.traccar.model.Event; -import org.traccar.model.Position; - -public class CommandResultEventHandlerTest extends BaseTest { - - @Test - public void testCommandResultEventHandler() throws Exception { - - CommandResultEventHandler commandResultEventHandler = new CommandResultEventHandler(); - - Position position = new Position(); - position.set(Position.KEY_RESULT, "Test Result"); - Map events = commandResultEventHandler.analyzePosition(position); - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_COMMAND_RESULT, event.getType()); - } - -} diff --git a/test/org/traccar/events/IgnitionEventHandlerTest.java b/test/org/traccar/events/IgnitionEventHandlerTest.java deleted file mode 100644 index 7c4ac21b9..000000000 --- a/test/org/traccar/events/IgnitionEventHandlerTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.traccar.events; - -import static org.junit.Assert.assertEquals; - -import java.util.Map; - -import org.junit.Test; -import org.traccar.BaseTest; -import org.traccar.model.Event; -import org.traccar.model.Position; - -public class IgnitionEventHandlerTest extends BaseTest { - - @Test - public void testIgnitionEventHandler() throws Exception { - - IgnitionEventHandler ignitionEventHandler = new IgnitionEventHandler(); - - Position position = new Position(); - position.set(Position.KEY_IGNITION, true); - position.setValid(true); - Map events = ignitionEventHandler.analyzePosition(position); - assertEquals(events, null); - } - -} diff --git a/test/org/traccar/events/MotionEventHandlerTest.java b/test/org/traccar/events/MotionEventHandlerTest.java deleted file mode 100644 index 3fc63adf0..000000000 --- a/test/org/traccar/events/MotionEventHandlerTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.traccar.events; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; - -import org.junit.Test; -import org.traccar.BaseTest; -import org.traccar.model.DeviceState; -import org.traccar.model.Event; -import org.traccar.model.Position; -import org.traccar.reports.model.TripsConfig; - -public class MotionEventHandlerTest extends BaseTest { - - private Date date(String time) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - return dateFormat.parse(time); - } - - @Test - public void testMotionWithPosition() throws Exception { - MotionEventHandler motionEventHandler = new MotionEventHandler( - new TripsConfig(500, 300 * 1000, 300 * 1000, 0, false, false, 0.01)); - - Position position = new Position(); - position.setTime(date("2017-01-01 00:00:00")); - position.set(Position.KEY_MOTION, true); - position.set(Position.KEY_TOTAL_DISTANCE, 0); - DeviceState deviceState = new DeviceState(); - deviceState.setMotionState(false); - deviceState.setMotionPosition(position); - Position nextPosition = new Position(); - - nextPosition.setTime(date("2017-01-01 00:02:00")); - nextPosition.set(Position.KEY_MOTION, true); - nextPosition.set(Position.KEY_TOTAL_DISTANCE, 200); - - Map events = motionEventHandler.updateMotionState(deviceState, nextPosition); - assertNull(events); - - nextPosition.set(Position.KEY_TOTAL_DISTANCE, 600); - events = motionEventHandler.updateMotionState(deviceState, nextPosition); - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); - assertTrue(deviceState.getMotionState()); - assertNull(deviceState.getMotionPosition()); - - deviceState.setMotionState(false); - deviceState.setMotionPosition(position); - nextPosition.setTime(date("2017-01-01 00:06:00")); - nextPosition.set(Position.KEY_TOTAL_DISTANCE, 200); - events = motionEventHandler.updateMotionState(deviceState, nextPosition); - assertNotNull(event); - event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); - assertTrue(deviceState.getMotionState()); - assertNull(deviceState.getMotionPosition()); - } - - @Test - public void testMotionWithStatus() throws Exception { - MotionEventHandler motionEventHandler = new MotionEventHandler( - new TripsConfig(500, 300 * 1000, 300 * 1000, 0, false, false, 0.01)); - - Position position = new Position(); - position.setTime(new Date(System.currentTimeMillis() - 360000)); - position.set(Position.KEY_MOTION, true); - DeviceState deviceState = new DeviceState(); - deviceState.setMotionState(false); - deviceState.setMotionPosition(position); - - Map events = motionEventHandler.updateMotionState(deviceState); - - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); - assertTrue(deviceState.getMotionState()); - assertNull(deviceState.getMotionPosition()); - } - - @Test - public void testStopWithPositionIgnition() throws Exception { - MotionEventHandler motionEventHandler = new MotionEventHandler( - new TripsConfig(500, 300 * 1000, 300 * 1000, 0, true, false, 0.01)); - - Position position = new Position(); - position.setTime(date("2017-01-01 00:00:00")); - position.set(Position.KEY_MOTION, false); - position.set(Position.KEY_IGNITION, true); - DeviceState deviceState = new DeviceState(); - deviceState.setMotionState(true); - deviceState.setMotionPosition(position); - - Position nextPosition = new Position(); - nextPosition.setTime(date("2017-01-01 00:02:00")); - nextPosition.set(Position.KEY_MOTION, false); - nextPosition.set(Position.KEY_IGNITION, false); - - Map events = motionEventHandler.updateMotionState(deviceState, nextPosition); - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_STOPPED, event.getType()); - assertFalse(deviceState.getMotionState()); - assertNull(deviceState.getMotionPosition()); - } - -} diff --git a/test/org/traccar/events/OverspeedEventHandlerTest.java b/test/org/traccar/events/OverspeedEventHandlerTest.java deleted file mode 100644 index 98fd0f87a..000000000 --- a/test/org/traccar/events/OverspeedEventHandlerTest.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.traccar.events; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Map; -import java.util.TimeZone; - -import org.junit.Test; -import org.traccar.BaseTest; -import org.traccar.model.DeviceState; -import org.traccar.model.Event; -import org.traccar.model.Position; - -public class OverspeedEventHandlerTest extends BaseTest { - - private Date date(String time) throws ParseException { - DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - return dateFormat.parse(time); - } - - private void testOverspeedWithPosition(boolean notRepeat, long geofenceId) throws Exception { - OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(15000, notRepeat, false); - - Position position = new Position(); - position.setTime(date("2017-01-01 00:00:00")); - position.setSpeed(50); - DeviceState deviceState = new DeviceState(); - deviceState.setOverspeedState(false); - - Map events = overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId); - assertNull(events); - assertFalse(deviceState.getOverspeedState()); - assertEquals(position, deviceState.getOverspeedPosition()); - assertEquals(geofenceId, deviceState.getOverspeedGeofenceId()); - - Position nextPosition = new Position(); - nextPosition.setTime(date("2017-01-01 00:00:10")); - nextPosition.setSpeed(55); - - events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); - assertNull(events); - - nextPosition.setTime(date("2017-01-01 00:00:20")); - - events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType()); - assertEquals(50, event.getDouble("speed"), 0.1); - assertEquals(40, event.getDouble(OverspeedEventHandler.ATTRIBUTE_SPEED_LIMIT), 0.1); - assertEquals(geofenceId, event.getGeofenceId()); - - assertEquals(notRepeat, deviceState.getOverspeedState()); - assertNull(deviceState.getOverspeedPosition()); - assertEquals(0, deviceState.getOverspeedGeofenceId()); - - nextPosition.setTime(date("2017-01-01 00:00:30")); - events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); - assertNull(events); - assertEquals(notRepeat, deviceState.getOverspeedState()); - - if (notRepeat) { - assertNull(deviceState.getOverspeedPosition()); - assertEquals(0, deviceState.getOverspeedGeofenceId()); - } else { - assertNotNull(deviceState.getOverspeedPosition()); - assertEquals(geofenceId, deviceState.getOverspeedGeofenceId()); - } - - nextPosition.setTime(date("2017-01-01 00:00:40")); - nextPosition.setSpeed(30); - - events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); - assertNull(events); - assertFalse(deviceState.getOverspeedState()); - assertNull(deviceState.getOverspeedPosition()); - assertEquals(0, deviceState.getOverspeedGeofenceId()); - } - - private void testOverspeedWithStatus(boolean notRepeat) throws Exception { - OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(15000, notRepeat, false); - - Position position = new Position(); - position.setTime(new Date(System.currentTimeMillis() - 30000)); - position.setSpeed(50); - DeviceState deviceState = new DeviceState(); - deviceState.setOverspeedState(false); - deviceState.setOverspeedPosition(position); - - Map events = overspeedEventHandler.updateOverspeedState(deviceState, 40); - - assertNotNull(events); - Event event = events.keySet().iterator().next(); - assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType()); - assertEquals(notRepeat, deviceState.getOverspeedState()); - } - - @Test - public void testOverspeedEventHandler() throws Exception { - testOverspeedWithPosition(false, 0); - testOverspeedWithPosition(true, 0); - - testOverspeedWithPosition(false, 1); - testOverspeedWithPosition(true, 1); - - testOverspeedWithStatus(false); - testOverspeedWithStatus(true); - } - -} diff --git a/test/org/traccar/handler/events/AlertEventHandlerTest.java b/test/org/traccar/handler/events/AlertEventHandlerTest.java new file mode 100644 index 000000000..222f1ef7a --- /dev/null +++ b/test/org/traccar/handler/events/AlertEventHandlerTest.java @@ -0,0 +1,28 @@ +package org.traccar.handler.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Map; + +import org.junit.Test; +import org.traccar.BaseTest; +import org.traccar.model.Event; +import org.traccar.model.Position; + +public class AlertEventHandlerTest extends BaseTest { + + @Test + public void testAlertEventHandler() throws Exception { + + AlertEventHandler alertEventHandler = new AlertEventHandler(); + + Position position = new Position(); + position.set(Position.KEY_ALARM, Position.ALARM_GENERAL); + Map events = alertEventHandler.analyzePosition(position); + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_ALARM, event.getType()); + } + +} diff --git a/test/org/traccar/handler/events/CommandResultEventHandlerTest.java b/test/org/traccar/handler/events/CommandResultEventHandlerTest.java new file mode 100644 index 000000000..0ccf9f6b4 --- /dev/null +++ b/test/org/traccar/handler/events/CommandResultEventHandlerTest.java @@ -0,0 +1,28 @@ +package org.traccar.handler.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Map; + +import org.junit.Test; +import org.traccar.BaseTest; +import org.traccar.model.Event; +import org.traccar.model.Position; + +public class CommandResultEventHandlerTest extends BaseTest { + + @Test + public void testCommandResultEventHandler() throws Exception { + + CommandResultEventHandler commandResultEventHandler = new CommandResultEventHandler(); + + Position position = new Position(); + position.set(Position.KEY_RESULT, "Test Result"); + Map events = commandResultEventHandler.analyzePosition(position); + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_COMMAND_RESULT, event.getType()); + } + +} diff --git a/test/org/traccar/handler/events/IgnitionEventHandlerTest.java b/test/org/traccar/handler/events/IgnitionEventHandlerTest.java new file mode 100644 index 000000000..709065c72 --- /dev/null +++ b/test/org/traccar/handler/events/IgnitionEventHandlerTest.java @@ -0,0 +1,26 @@ +package org.traccar.handler.events; + +import static org.junit.Assert.assertEquals; + +import java.util.Map; + +import org.junit.Test; +import org.traccar.BaseTest; +import org.traccar.model.Event; +import org.traccar.model.Position; + +public class IgnitionEventHandlerTest extends BaseTest { + + @Test + public void testIgnitionEventHandler() throws Exception { + + IgnitionEventHandler ignitionEventHandler = new IgnitionEventHandler(); + + Position position = new Position(); + position.set(Position.KEY_IGNITION, true); + position.setValid(true); + Map events = ignitionEventHandler.analyzePosition(position); + assertEquals(events, null); + } + +} diff --git a/test/org/traccar/handler/events/MotionEventHandlerTest.java b/test/org/traccar/handler/events/MotionEventHandlerTest.java new file mode 100644 index 000000000..8e643c476 --- /dev/null +++ b/test/org/traccar/handler/events/MotionEventHandlerTest.java @@ -0,0 +1,119 @@ +package org.traccar.handler.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.TimeZone; + +import org.junit.Test; +import org.traccar.BaseTest; +import org.traccar.model.DeviceState; +import org.traccar.model.Event; +import org.traccar.model.Position; +import org.traccar.reports.model.TripsConfig; + +public class MotionEventHandlerTest extends BaseTest { + + private Date date(String time) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return dateFormat.parse(time); + } + + @Test + public void testMotionWithPosition() throws Exception { + MotionEventHandler motionEventHandler = new MotionEventHandler( + new TripsConfig(500, 300 * 1000, 300 * 1000, 0, false, false, 0.01)); + + Position position = new Position(); + position.setTime(date("2017-01-01 00:00:00")); + position.set(Position.KEY_MOTION, true); + position.set(Position.KEY_TOTAL_DISTANCE, 0); + DeviceState deviceState = new DeviceState(); + deviceState.setMotionState(false); + deviceState.setMotionPosition(position); + Position nextPosition = new Position(); + + nextPosition.setTime(date("2017-01-01 00:02:00")); + nextPosition.set(Position.KEY_MOTION, true); + nextPosition.set(Position.KEY_TOTAL_DISTANCE, 200); + + Map events = motionEventHandler.updateMotionState(deviceState, nextPosition); + assertNull(events); + + nextPosition.set(Position.KEY_TOTAL_DISTANCE, 600); + events = motionEventHandler.updateMotionState(deviceState, nextPosition); + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); + assertTrue(deviceState.getMotionState()); + assertNull(deviceState.getMotionPosition()); + + deviceState.setMotionState(false); + deviceState.setMotionPosition(position); + nextPosition.setTime(date("2017-01-01 00:06:00")); + nextPosition.set(Position.KEY_TOTAL_DISTANCE, 200); + events = motionEventHandler.updateMotionState(deviceState, nextPosition); + assertNotNull(event); + event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); + assertTrue(deviceState.getMotionState()); + assertNull(deviceState.getMotionPosition()); + } + + @Test + public void testMotionWithStatus() throws Exception { + MotionEventHandler motionEventHandler = new MotionEventHandler( + new TripsConfig(500, 300 * 1000, 300 * 1000, 0, false, false, 0.01)); + + Position position = new Position(); + position.setTime(new Date(System.currentTimeMillis() - 360000)); + position.set(Position.KEY_MOTION, true); + DeviceState deviceState = new DeviceState(); + deviceState.setMotionState(false); + deviceState.setMotionPosition(position); + + Map events = motionEventHandler.updateMotionState(deviceState); + + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_MOVING, event.getType()); + assertTrue(deviceState.getMotionState()); + assertNull(deviceState.getMotionPosition()); + } + + @Test + public void testStopWithPositionIgnition() throws Exception { + MotionEventHandler motionEventHandler = new MotionEventHandler( + new TripsConfig(500, 300 * 1000, 300 * 1000, 0, true, false, 0.01)); + + Position position = new Position(); + position.setTime(date("2017-01-01 00:00:00")); + position.set(Position.KEY_MOTION, false); + position.set(Position.KEY_IGNITION, true); + DeviceState deviceState = new DeviceState(); + deviceState.setMotionState(true); + deviceState.setMotionPosition(position); + + Position nextPosition = new Position(); + nextPosition.setTime(date("2017-01-01 00:02:00")); + nextPosition.set(Position.KEY_MOTION, false); + nextPosition.set(Position.KEY_IGNITION, false); + + Map events = motionEventHandler.updateMotionState(deviceState, nextPosition); + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_STOPPED, event.getType()); + assertFalse(deviceState.getMotionState()); + assertNull(deviceState.getMotionPosition()); + } + +} diff --git a/test/org/traccar/handler/events/OverspeedEventHandlerTest.java b/test/org/traccar/handler/events/OverspeedEventHandlerTest.java new file mode 100644 index 000000000..584ac271a --- /dev/null +++ b/test/org/traccar/handler/events/OverspeedEventHandlerTest.java @@ -0,0 +1,118 @@ +package org.traccar.handler.events; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.TimeZone; + +import org.junit.Test; +import org.traccar.BaseTest; +import org.traccar.model.DeviceState; +import org.traccar.model.Event; +import org.traccar.model.Position; + +public class OverspeedEventHandlerTest extends BaseTest { + + private Date date(String time) throws ParseException { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + return dateFormat.parse(time); + } + + private void testOverspeedWithPosition(boolean notRepeat, long geofenceId) throws Exception { + OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(15000, notRepeat, false); + + Position position = new Position(); + position.setTime(date("2017-01-01 00:00:00")); + position.setSpeed(50); + DeviceState deviceState = new DeviceState(); + deviceState.setOverspeedState(false); + + Map events = overspeedEventHandler.updateOverspeedState(deviceState, position, 40, geofenceId); + assertNull(events); + assertFalse(deviceState.getOverspeedState()); + assertEquals(position, deviceState.getOverspeedPosition()); + assertEquals(geofenceId, deviceState.getOverspeedGeofenceId()); + + Position nextPosition = new Position(); + nextPosition.setTime(date("2017-01-01 00:00:10")); + nextPosition.setSpeed(55); + + events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); + assertNull(events); + + nextPosition.setTime(date("2017-01-01 00:00:20")); + + events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType()); + assertEquals(50, event.getDouble("speed"), 0.1); + assertEquals(40, event.getDouble(OverspeedEventHandler.ATTRIBUTE_SPEED_LIMIT), 0.1); + assertEquals(geofenceId, event.getGeofenceId()); + + assertEquals(notRepeat, deviceState.getOverspeedState()); + assertNull(deviceState.getOverspeedPosition()); + assertEquals(0, deviceState.getOverspeedGeofenceId()); + + nextPosition.setTime(date("2017-01-01 00:00:30")); + events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); + assertNull(events); + assertEquals(notRepeat, deviceState.getOverspeedState()); + + if (notRepeat) { + assertNull(deviceState.getOverspeedPosition()); + assertEquals(0, deviceState.getOverspeedGeofenceId()); + } else { + assertNotNull(deviceState.getOverspeedPosition()); + assertEquals(geofenceId, deviceState.getOverspeedGeofenceId()); + } + + nextPosition.setTime(date("2017-01-01 00:00:40")); + nextPosition.setSpeed(30); + + events = overspeedEventHandler.updateOverspeedState(deviceState, nextPosition, 40, geofenceId); + assertNull(events); + assertFalse(deviceState.getOverspeedState()); + assertNull(deviceState.getOverspeedPosition()); + assertEquals(0, deviceState.getOverspeedGeofenceId()); + } + + private void testOverspeedWithStatus(boolean notRepeat) throws Exception { + OverspeedEventHandler overspeedEventHandler = new OverspeedEventHandler(15000, notRepeat, false); + + Position position = new Position(); + position.setTime(new Date(System.currentTimeMillis() - 30000)); + position.setSpeed(50); + DeviceState deviceState = new DeviceState(); + deviceState.setOverspeedState(false); + deviceState.setOverspeedPosition(position); + + Map events = overspeedEventHandler.updateOverspeedState(deviceState, 40); + + assertNotNull(events); + Event event = events.keySet().iterator().next(); + assertEquals(Event.TYPE_DEVICE_OVERSPEED, event.getType()); + assertEquals(notRepeat, deviceState.getOverspeedState()); + } + + @Test + public void testOverspeedEventHandler() throws Exception { + testOverspeedWithPosition(false, 0); + testOverspeedWithPosition(true, 0); + + testOverspeedWithPosition(false, 1); + testOverspeedWithPosition(true, 1); + + testOverspeedWithStatus(false); + testOverspeedWithStatus(true); + } + +} -- cgit v1.2.3