public void testGetClosestDepotLocation() { var responseMessageOne = new HttpResponseMessage(); responseMessageOne.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"0.8 mi\",\"value\":2},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); var responseMessageTwo = new HttpResponseMessage(); responseMessageTwo.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"3.6 mi\",\"value\":10},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); List <HttpResponseMessage> responses = new List <HttpResponseMessage>(); responses.Add(responseMessageOne); responses.Add(responseMessageTwo); TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); LocationService service = new LocationService(googleMaps); IList <PickUpAddress> addressList = new List <PickUpAddress>(); PickUpAddress depot1 = new PickUpAddress(); addressList.Add(depot1); PickUpAddress depot2 = new PickUpAddress(); addressList.Add(depot2); Center center = new Center(); center.lat = 1; center.lng = 1; var result = service.FindClosestDepotLocationForRoute(addressList, center); Assert.Equal(depot1, result.Result); }
public void testAssignMultipleRoutesAllForDifferentDaysWithOneDriver() { Driver driverOne = new Driver(); driverOne.Address = new DriverAddress(); Vehicle vehicleOne = new Vehicle(300, 100, 109, 100); driverOne.Vehicles.Add(vehicleOne); List <Driver> drivers = new List <Driver> { driverOne }; var responseMessageOne = new HttpResponseMessage(); responseMessageOne.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"0.8 mi\",\"value\":2},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); var responseMessageTwo = new HttpResponseMessage(); responseMessageTwo.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"3.6 mi\",\"value\":10},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); List <HttpResponseMessage> responses = new List <HttpResponseMessage> { responseMessageOne, responseMessageTwo }; TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); Route routeOne = new Route(); routeOne.DeliverBy = new DateTime(2015, 12, 13); routeOne.PickUpAddress = (PickUpAddress)getAddress(false); Delivery delivery = new Delivery(); delivery.ItemWeight = 20; delivery.ItemSize = ItemSize.Small; routeOne.Deliveries.Add(delivery); Route routeTwo = new Route(); routeTwo.DeliverBy = new DateTime(2015, 12, 14); routeTwo.PickUpAddress = (PickUpAddress)getAddress(false); Delivery deliveryTwo = new Delivery(); deliveryTwo.ItemWeight = 20; deliveryTwo.ItemSize = ItemSize.Small; routeTwo.Deliveries.Add(delivery); List <Route> routes = new List <Route> { routeOne, routeTwo }; LocationService locationService = new LocationService(googleMaps); DriverAssignmentService assignmentService = new DriverAssignmentService(locationService); RouteAssignment result = assignmentService.assignMultipleRoutes(routes, drivers); Assert.Equal(2, result.TempRouteData.Count()); Assert.Equal(driverOne, result.TempRouteData.ElementAt(0).Driver); Assert.Equal(driverOne, result.TempRouteData.ElementAt(1).Driver); }
public void testDriverSelectionWhenBothDriversAreNotAvailable() { Driver driverOne = new Driver(); driverOne.Address = new DriverAddress(); Vehicle vehicleOne = new Vehicle(300, 100, 109, 100); driverOne.Vehicles.Add(vehicleOne); Route driverRoute = new Route(); driverRoute.DeliverBy = new DateTime(2015, 12, 12); driverOne.Routes.Add(driverRoute); Driver driverTwo = new Driver(); driverTwo.Address = new DriverAddress(); driverTwo.Vehicles.Add(vehicleOne); driverTwo.Address = (DriverAddress)getAddress(true); List <Driver> drivers = new List <Driver> { driverOne, driverTwo }; driverTwo.Routes.Add(driverRoute); var responseMessageOne = new HttpResponseMessage(); responseMessageOne.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"0.8 mi\",\"value\":2},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); var responseMessageTwo = new HttpResponseMessage(); responseMessageTwo.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"3.6 mi\",\"value\":10},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); List <HttpResponseMessage> responses = new List <HttpResponseMessage> { responseMessageOne, responseMessageTwo }; TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); Route route = new Route(); route.DeliverBy = new DateTime(2015, 12, 13); route.PickUpAddress = (PickUpAddress)getAddress(false); Delivery delivery = new Delivery(); delivery.ItemWeight = 20; delivery.ItemSize = ItemSize.Small; route.Deliveries.Add(delivery); LocationService locationService = new LocationService(googleMaps); DriverAssignmentService assignmentService = new DriverAssignmentService(locationService); DriverAssignmentResult result = assignmentService.getBestDriverForRoute(route, drivers, new List <Driver>(), new List <Driver>(), new DateTime(2015, 12, 12)); Assert.Equal(result.Driver, driverOne); Assert.Equal(result.DeliverByDate, new DateTime(2015, 12, 13)); }
public void testAssignmentWhenDriverIsOnHolidayButDeliveryIsRolledBackACoupleOfDays() { Driver driverOne = new Driver(); DriverHoliday hols = new DriverHoliday(); hols.From = new DateTime(2012, 12, 12); hols.To = new DateTime(2012, 12, 20); driverOne.Holidays.Add(hols); driverOne.Address = new DriverAddress(); Vehicle vehicleOne = new Vehicle(300, 100, 109, 100); driverOne.Vehicles.Add(vehicleOne); Route driverRoute = new Route(); driverRoute.DeliverBy = new DateTime(2015, 12, 12); driverOne.Routes.Add(driverRoute); var responseMessageOne = new HttpResponseMessage(); responseMessageOne.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"0.8 mi\",\"value\":2},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}"); List <HttpResponseMessage> responses = new List <HttpResponseMessage> { responseMessageOne, responseMessageOne, responseMessageOne, responseMessageOne, responseMessageOne }; TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); Route routeOne = new Route(); routeOne.PickUpAddress = (PickUpAddress)getAddress(false); routeOne.DeliverBy = new DateTime(2012, 12, 13); List <Route> routes = new List <Route> { routeOne }; LocationService locationService = new LocationService(googleMaps); DriverAssignmentService assignmentService = new DriverAssignmentService(locationService); RouteAssignment result = assignmentService.assignMultipleRoutes(routes, new List <Driver> { driverOne }); Assert.Equal(1, result.TempRouteData.Count()); Assert.Equal(driverOne, result.TempRouteData.ElementAt(0).Driver); }
public async Task testAddLocationDataToAddress() { var responseMessageOne = new HttpResponseMessage(); responseMessageOne.Content = new StringContent("{\"results\":[{\"geometry\":{\"location\":{\"lat\":50.5,\"lng\":-10.5}}}],\"status\":\"OK\"}"); List <HttpResponseMessage> responses = new List <HttpResponseMessage>(); responses.Add(responseMessageOne); TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); LocationService service = new LocationService(googleMaps); Address address = new ClientAddress(); await service.addLocationDataToAddress(address); Assert.Equal(50.5, address.Lat); Assert.Equal(-10.5, address.Lng); }
public async Task testGetRouteDurationAndOverallDistance() { var responseMessageOne = new HttpResponseMessage(); string jsonResult = "{\"geocoded_waypoints\":[],\"routes\":[{\"legs\":[{\"distance\":{\"text\":\"141 mi\",\"value\":200},\"duration\":{\"text\":\"1 h. 54 min.\",\"value\":3600}},{\"distance\":{\"text\":\"70 m\",\"value\":200},\"duration\":{\"text\":\"1 min.\",\"value\":3600}}]}]}"; responseMessageOne.Content = new StringContent(jsonResult); List <HttpResponseMessage> responses = new List <HttpResponseMessage>(); responses.Add(responseMessageOne); TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses); LocationService service = new LocationService(googleMaps); List <Delivery> deliveries = new List <Delivery>(); PickUpAddress depot = new PickUpAddress(); RouteDetails result = await service.getRouteDurationAndOverallDistance(depot, deliveries); Assert.Equal(0.4, result.OverallDistance); Assert.Equal(2, result.OverallTimeRequired); }