コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }