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(); }
public void GetCompletedTimeAfterWinner_When_Valid_Parameters() { var laps = new List <Lap> { new Lap("12:01:12", "1", "testPosition2", "1", "1:11.111", "2"), new Lap("12:01:12", "1", "testPosition2", "2", "1:11.111", "2"), new Lap("12:01:12", "1", "testPosition2", "3", "1:11.111", "2"), new Lap("12:01:12", "1", "testPosition2", "4", "1:11.111", "2"), 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") }; var race = new Race(laps); var raceResult = new RaceResult(race); var result = raceResult.GetCompletedTimeAfterFirst(); result[1].CompletedAfterFirst.Should().Be(TimeSpan.ParseExact("4:00.000", "m\\:ss\\.fff", null)); result[0].CompletedAfterFirst.Should().Be(TimeSpan.ParseExact("0:00.000", "m\\:ss\\.fff", null)); }