static async Task Main(string[] args) { DistanceService dst = new DistanceService(); // Add drone depots await dst.AddDepot("Depot1", "Metrostrasse 12, 40235 Düsseldorf"); await dst.AddDepot("Depot2", "Ludenberger Str. 1, 40629 Düsseldorf"); // Add stores await dst.AddStore("Store1", "Willstätterstraße 24, 40549 Düsseldorf"); await dst.AddStore("Store2", "Bilker Allee 128, 40217 Düsseldorf"); await dst.AddStore("Store3", "Hammer Landstraße 113, 41460 Neuss"); await dst.AddStore("Store4", "Gladbacher Str. 471, 41460 Neuss"); await dst.AddStore("Store5", "Lise-Meitner-Straße 1, 40878 Ratingen"); //C1 DeliveryPlan plan1 = await dst.Calculate("Friedrichstraße 133, 40217 Düsseldorf"); PrintPlan(plan1); //C2 DeliveryPlan plan2 = await dst.Calculate("Fischerstraße 23, 40477 Düsseldorf"); PrintPlan(plan2); //C3 DeliveryPlan plan3 = await dst.Calculate("Wildenbruchstraße 2, 40545 Düsseldorf"); PrintPlan(plan3); //C4 DeliveryPlan plan4 = await dst.Calculate("Reisholzer Str. 48, 40231 Düsseldorf"); PrintPlan(plan4); }
public void ShouldNotFail_OnCalculate_IfValidCalculatorExists() { // arrange var calculator1 = new DistanceFailureCalculatorStub(); var calculator2 = new DistanceSuccessCalculatorStub(); var unitService = new UnitServiceStub(); var service = new DistanceService(new IDistanceCalculator[] { calculator1, calculator2 }, unitService); var c1 = new Coordinate { Longitude = 0, Latitude = 0 }; var c2 = new Coordinate { Longitude = 1, Latitude = 1 }; // act var value = service.Calculate(c1, c2); // assert Assert.NotNull(value); Assert.Equal(Units.Meters, value.Units); Assert.Equal(10, value.Value); }
public DroneDeliveryController(ILogger <DroneDeliveryController> logger, DistanceService distanceService) { _logger = logger; _distanceService = distanceService; }
private static void Main(string[] args) { var routesToGenerate = 5000; //The bigger the number, the closer to the desired distance the routes will be. var targetDistanceInMeters = 3000; //How long should the routes be from Homebase, to checkpoints and back to Homebase again var routesToFind = 40; //How many routes should be found? var checkpointsPerRoute = 5; //Checkpoints per route var cps = GetCheckpoints(); var checkpointsetidcounter = 1; var homebase = new Checkpoint(56.435056, 12.838587, "Homebase", true); if (routesToGenerate < routesToFind) { routesToFind = routesToGenerate; } _distanceService = new DistanceService(cps, homebase); Console.WriteLine($"Made {_distanceService.Calculations} calculations"); List <Route> finalRoutes = new List <Route>(); for (int i = 0; i < routesToFind; i++) { if (_distanceService.Checkpoints.Count(cp => cp.IsHomeBase == false) < checkpointsPerRoute) { _distanceService.Checkpoints = GetCheckpoints(); } var orderedRoutes = GenerateRoutes(routesToGenerate, checkpointsPerRoute).OrderBy(r => r.TotalDistance).ToList(); var indexResult = orderedRoutes.BinarySearch(new Route(new List <Checkpoint>(), targetDistanceInMeters), new RouteComparer()); if (indexResult < 0) { indexResult = ~indexResult; } var foundRoute = GetBestRoute(orderedRoutes, indexResult); foreach (var checkpoint in foundRoute.Checkpoints.Where(cp => cp.IsHomeBase != true)) { var itemToRemove = _distanceService.Checkpoints.Single(r => r.Id == checkpoint.Id); _distanceService.Checkpoints.Remove(itemToRemove); } //PrintRoute(foundRoute); finalRoutes.Add(foundRoute); } //var finalRoutes = GetRoutes(orderedRoutes, indexResult, routesToFind); var checkpointCounts = finalRoutes.SelectMany(p => p.Checkpoints).Where(c => c.IsHomeBase == false).Select(c => c.Id).GroupBy(item => item).Select(group => new { group.Key, Count = group.Count() }).OrderByDescending(g => g.Count); for (int i = 0; i < finalRoutes.Count; i = i + 2) { PrintRouteSiriusTwo(finalRoutes[i], finalRoutes[i + 1]); } //foreach (var route in finalRoutes) // PrintRouteSirius(route); Console.WriteLine("Checkpoints used"); foreach (var checkpointCount in checkpointCounts) { Console.WriteLine($"{checkpointCount.Key}: {checkpointCount.Count}"); } Console.WriteLine($"Used {checkpointCounts.Count()} checkpoints of a total {cps.Count}"); Console.ReadKey(); }
/// <summary> /// Get the distance in miles with another airport /// </summary> /// <param name="airport">Remote airport</param> /// <returns>Distance in miles</returns> public Double GetDistance(Airport airport) { var distanceService = new DistanceService(); return(distanceService.Distance(this.Latitude, this.Longitude, airport.Latitude, airport.Longitude, 'M')); }
public void Test_Collect_Correct_Users() { //ARRANGE DistanceService distanceService = new DistanceService(); UserService userService = new UserService(distanceService); var allUsers = new List <User>() { new User { id = 1, First_Name = "Test", Last_Name = "Outside", Email = "*****@*****.**", IP_Address = "192.57.232.111", Latitude = 34.003135, Longitude = -117.7228641, }, new User { id = 2, First_Name = "Test", Last_Name = "Within", Email = "*****@*****.**", IP_Address = "67.4.69.137", Latitude = 51.6553959, Longitude = 0.0572553, }, new User { id = 3, First_Name = "Test", Last_Name = "Inside", Email = "*****@*****.**", IP_Address = "192.57.232.111", Latitude = 34.003135, Longitude = -117.7228641, } }; var usersLondon = new List <User>() { new User { id = 3, First_Name = "Test", Last_Name = "Inside", Email = "*****@*****.**", IP_Address = "192.57.232.111", Latitude = 34.003135, Longitude = -117.7228641, } }; //ACT var result = userService.Users(allUsers, usersLondon); //ASSERT NUnit.Framework.Assert.AreEqual(2, result.Count()); }
public void GeohashQueries_ValidInput_NoException(Geolocation geolocation, double radius) { DistanceService.GeohashQueries(geolocation, radius); }
public void ValidateGeohash_ValidInput_DoesntThowException(string geo) { DistanceService.ValidateGeohash(geo); }