public void GetResult_Returns_Righ_Result_With_Leavers() { var laps = new List <Lap> { new Lap("12:01:12", "1", "testPosition2", "1", "1:11.111", "1"), new Lap("12:01:12", "1", "testPosition2", "2", "1:11.111", "1"), new Lap("12:01:12", "1", "testPosition2", "3", "1:11.111", "1"), new Lap("12:01:12", "1", "testPosition2", "4", "1:11.111", "1"), new Lap("12:01:12", "2", "testPosition1", "1", "0:11.111", "1"), new Lap("12:01:12", "2", "testPosition1", "2", "0:11.111", "1"), new Lap("12:01:12", "2", "testPosition1", "3", "0:11.111", "1"), new Lap("12:01:12", "2", "testPosition1", "4", "0:11.111", "1"), new Lap("12:01:12", "3", "testPosition3", "4", "0:11.111", "1") }; var race = new Race(laps); var raceResult = new RaceResult(race); raceResult.GetResult(); raceResult.Result[0].Should().NotBeNull(); raceResult.Result[1].Should().NotBeNull(); raceResult.Result[0].Racer.Name.Should().Be("testPosition1"); raceResult.Result[0].Racer.RacerId.Should().Be(2); raceResult.Result[1].Racer.Name.Should().Be("testPosition2"); raceResult.Result[1].Racer.RacerId.Should().Be(1); raceResult.Leavers.Should().NotBeEmpty(); raceResult.Leavers[0].Racer.RacerId.Should().Be(3); raceResult.Leavers[0].Racer.Name.Should().Be("testPosition3"); }
private static void Main(string[] args) { #region DI var collection = new ServiceCollection(); collection.AddSingleton <IFileReader, FileReader>(); collection.AddSingleton <IResultGenerator <Lap>, ResultGenerator>(); collection.AddSingleton <IRepository <Lap>, Repository <Lap> >(); collection.AddSingleton <IApplication, Application.Application>(); var serviceProvider = collection.BuildServiceProvider(); #endregion DI var service = serviceProvider.GetService <IRepository <Lap> >(); var application = serviceProvider.GetService <IApplication>(); var race = new Race(service.GetAll()); var result = new RaceResult(race); Console.WriteLine(application.GetInitialMenu()); var option = Console.ReadLine(); switch (option) { case "1": result.GetResult(); var raceResult = application.GetFinalResult(result.Result, result.Leavers); Console.WriteLine(raceResult); break; case "2": var bestLap = race.GetBestLap(); Console.WriteLine(application.GetBestLap(bestLap)); break; case "3": var bestLaps = race.GetBestLapFromEachRacer(); Console.WriteLine(application.GetBestLapFromEachRacer(bestLaps)); break; case "4": var averageSpeed = result.GetAverageSpeed(); Console.WriteLine(application.GetAverageSpeedFromEachRacer(averageSpeed)); break; case "5": default: var completedAfterFirst = result.GetCompletedTimeAfterFirst(); Console.WriteLine(application.GetCompletedTimeAfterFirst(completedAfterFirst)); break; } Console.ReadKey(); }