package com.roboclub.robobuggy.nodes.localizers; import com.roboclub.robobuggy.messages.GPSPoseMessage; import org.junit.Test; import java.util.Date; import static org.junit.Assert.fail; /** * */ public class TestWayPointFollowerPlanner { /** * Tests the waypoint follower by giving it different poses */ @Test public void test() { GPSPoseMessage zeroPose = new GPSPoseMessage(new Date(), 0.0, 0.0, 0.0); GPSPoseMessage onePose = new GPSPoseMessage(new Date(), 0, 1, 0); GPSPoseMessage aPose = new GPSPoseMessage(new Date(), 1.5, 1, 0); GPSPoseMessage negPose = new GPSPoseMessage(new Date(), 0, -1, 0); if (Math.abs(GPSPoseMessage.getDistance(zeroPose, zeroPose) - 0) > .001) { fail("distance function does not respect idenity"); } if (Math.abs(GPSPoseMessage.getDistance(zeroPose, onePose) - LocalizerUtil.convertLonToMeters(1.0)) > .001) { fail("distance function does not handle some input correctly "); } if (Math.abs(GPSPoseMessage.getDistance(onePose, aPose) - LocalizerUtil.convertLatToMeters(1.5)) > .001) { fail("distance function does not handle some input correctly "); } if (Math.abs(GPSPoseMessage.getDistance(onePose, negPose) - LocalizerUtil.convertLonToMeters(2.0)) > .001) { fail("distance function does not handle some input correctly "); } double dx = LocalizerUtil.convertLonToMeters(1.0); double dy = LocalizerUtil.convertLatToMeters(1.5); if (Math.abs(GPSPoseMessage.getDistance(aPose, zeroPose) - Math.sqrt(dx * dx + dy * dy)) > .001) { fail("distance function does not handle some input correctly "); } } /** * Tests on a standard data value, converting 10 meters into a lat-lon delta */ @Test public void testGotoWaypoint10meters() { LocalizerUtil.convertMetersToLat(10); } }