public IActionResult InitPassengersFromSmo([FromBody] SmoData smoData) { var availableTransportTypes = new[] { TransportType.Bus, TransportType.Car }; var allPassengers = passengersFactory.CreateAllPassengersTogether(smoData, availableTransportTypes); var neighborhood = neighborsManager.GetEachPassengerNeighbors(smoData.NeighboursCount, smoData.Columns, allPassengers); allPassengers.SetNeighborhood(neighborhood); var averageSatisfaction = transportSystemSatisfaction.Evaluate(allPassengers); return(Ok( new IterationResult { Passengers = allPassengers, AverageSatisfaction = averageSatisfaction, AlgorithmType = ChoiceTransportAlgorithmType.QLearning, AvailableTransportTypes = availableTransportTypes })); }
public void Should_set_neighbors_for_each_passengers_from_passenger_manager() { var smoData = new SmoData { Columns = 2, NeighboursCount = 3, PassengersOnCar = 4, SmoPassengers = new SmoPassenger[3] }; var passengers = Enumerable .Range(0, 4) .Select( x => new PassengerDto { Id = x.ToString() }) .ToArray(); var defaultNeighbors = new List <string> { "some neighbor id" }; var neighborhood = Enumerable.Range(0, 4).ToDictionary(x => x.ToString(), x => defaultNeighbors); passengersFactory.CreateAllPassengersTogether(smoData, Arg.Any <TransportType[]>()) .Returns(passengers); neighborsManager.GetEachPassengerNeighbors(smoData.NeighboursCount, smoData.Columns, passengers) .Returns(neighborhood); var expectedPassengers = Enumerable .Range(0, 4) .Select( x => new PassengerDto { Id = x.ToString(), Neighbours = defaultNeighbors.ToArray(), }) .ToArray(); var actionResult = controller.InitPassengersFromSmo(smoData); var okResult = actionResult as OkObjectResult; var iterationResult = okResult.Value as IterationResult; iterationResult.Passengers.ShouldBeEquivalentTo(expectedPassengers); }