public void GetAllRaces_NoRaces_ReturnsZero() { Assert.Empty(_raceManager.GetAllRaces()); }
public JsonResult GetLastRaceResultById(int id) { _logger.LogInformation("GET /GetLastRaceResultById"); ResponseObject.RaceResultByID raceResult = new ResponseObject.RaceResultByID { id = id, responseMessage = "success" }; try { if (_raceManager.GetRaceState() != RaceState.Finished) { raceResult.responseMessage = "Race is not finished."; return(Json(raceResult)); } Race lastRace = _raceManager.GetAllRaces().Last(); int placeIndex = lastRace.GetFinishedParticipants().IndexOf(id); // -1 if not found Dictionary <int, List <Lap> > raceResults = _raceManager.GetCurrentRaceResults(); bool idFound = raceResults.TryGetValue(id, out List <Lap> laps); if (placeIndex < 0 || !idFound) { raceResult.responseMessage = "ID [" + id + "] was not found."; return(Json(raceResult)); } raceResult.place = placeIndex + 1; Lap fastestLap = new Lap(0, new TimeSpan(0)); TimeSpan totalTime = new TimeSpan(); for (int i = 0; i < laps.Count; i++) { if (i == 0) { fastestLap = laps[0]; fastestLap.Number = laps[0].Number; } else if (laps[i].Time < fastestLap.Time) { fastestLap = laps[i]; } totalTime += laps[i].Time; } raceResult.overallTime = totalTime.ToString(); raceResult.overallTimeMilliseconds = totalTime.TotalMilliseconds; raceResult.fastestLap = fastestLap.Time.ToString(); raceResult.fastestLapMilliseconds = fastestLap.Time.TotalMilliseconds; raceResult.fastestLapNumber = fastestLap.Number; return(Json(raceResult)); } catch (Exception error) { _logger.LogError("RaceTimer/GetLastRaceResultById Exception: " + error.Message); raceResult.responseMessage = error.Message; return(new JsonResult(raceResult) { StatusCode = (int)HttpStatusCode.BadRequest }); } }