public async Task DroneCrewBuilder_WhenBuildWithDeliveryPlanLoaderAndFinishEventAttachedAndCallNavigateFunction_ShouldNotifyWhenAllDeliveriesWereFinishedAndTheirCoordinates() { var deliveryCoordinates = new List <Coordinates>(0); var result = DroneCrewBuilder.Init() .WithTranslator(new CoordinateTranslator()) .WithFinishAllDeliveriesNotification((s, arg) => deliveryCoordinates.AddRange(arg)) .WithOrderLoader(new TestLoader()) .Build().ToList(); result.Should().NotBeNull(); result.Should().NotBeEmpty(); result.Count.Should().Be(2); result[0].Key.Should().Be("1"); result[0].DeliveryPlans.Count().Should().Be(3); result[0].DeliveryPlans.All(p => p.Coordinates.Count() == 5).Should().BeTrue(); result[1].Key.Should().Be("2"); result[1].DeliveryPlans.Count().Should().Be(3); result[1].DeliveryPlans.All(p => p.Coordinates.Count() == 4).Should().BeTrue(); result.ForEach(drone => drone.Navigate()); deliveryCoordinates.Should().NotBeNull(); deliveryCoordinates.Should().NotBeEmpty(); deliveryCoordinates.Count.Should().Be(6); deliveryCoordinates[0].ToString().Should().Be("(-1, 3), Direction West"); deliveryCoordinates[1].ToString().Should().Be("(-1, 3), Direction North"); deliveryCoordinates[2].ToString().Should().Be("(1, 3), Direction North"); deliveryCoordinates[3].ToString().Should().Be("(1, 2), Direction North"); deliveryCoordinates[4].ToString().Should().Be("(1, -2), Direction South"); deliveryCoordinates[5].ToString().Should().Be("(-1, 0), Direction South"); }
public async Task DroneCrewBuilder_WhenBuildWithBasicConfiguration_ShouldReturnEmptyDroneCrew() { var result = DroneCrewBuilder.Init() .Build(); result.Should().NotBeNull(); result.Should().BeEmpty(); }
static DeliveryHandler() { _drones = DroneCrewBuilder.Init() .WithTranslator(new CoordinateTranslator()) .WithOrderLoader(new FileLoader(@"D:\s4n")) .WithDeliveryNotification((s, msg) => Console.WriteLine($"Drone {s.Key} delivered at {msg}")) .WithStartNavigationNotification((s, msg) => Console.WriteLine($"Drone {s.Key} starting delivery to {msg}")) .WithFinishAllDeliveriesNotification((currentDrone, deliveries) => { var writer = new FileWriter(@$ "D:\s4n\output\out{currentDrone.Key}.txt"); var sb = new StringBuilder($"*** Reporte de entregas para dron: {currentDrone.Key} ***{Environment.NewLine}"); foreach (var coordinate in deliveries) { sb.AppendLine(coordinate.ToString()); } writer.Write(sb.ToString()); })
public async Task DroneCrewBuilder_WhenBuildWithDeliveryPlanLoader_ShouldReturnAListOfDronesWithTheyDeliveryPlans() { var result = DroneCrewBuilder.Init() .WithTranslator(new CoordinateTranslator()) .WithOrderLoader(new TestLoader()) .Build().ToList(); result.Should().NotBeNull(); result.Should().NotBeEmpty(); result.Count.Should().Be(2); result[0].Key.Should().Be("1"); result[0].DeliveryPlans.Count().Should().Be(3); result[0].DeliveryPlans.All(p => p.Coordinates.Count() == 5).Should().BeTrue(); result[1].Key.Should().Be("2"); result[1].DeliveryPlans.Count().Should().Be(3); result[1].DeliveryPlans.All(p => p.Coordinates.Count() == 4).Should().BeTrue(); }