public void Given_5_min_per_mile_should_convert_to_8_min_km() { var calc = new PaceCalculator(); var pace = new PaceData { Pace = "5:00", Calc = "pacemilesunits" }; calc.Calculate(pace); Assert.Equal("8:02", pace.Pace); // 5 min/mile is actually a little over 8 min/km pace.Calc = "pacekmunits"; calc.Calculate(pace); Assert.Equal("4:59", pace.Pace); // and then due to rounding, converting back gives just under 5min/mile }
private Tuple <Distance, PaceData, string> DistanceAndPaceOfLogEvent(dynamic runLogEvent) { var route = ((object)runLogEvent).Route(dataCache); var distance = ((object)route).Distance().ConvertTo(HttpContext.UserDistanceUnits(dataCache)); var paceData = new PaceData { Distance = distance, Time = runLogEvent.TimeTaken, Calc = "Pace" }; var paceCalc = new PaceCalculator(); paceCalc.Calculate(paceData); return(Tuple.Create(distance, paceData, route.Name.Replace('"', '\''))); }
public RunLogModel(HttpContext context, dynamic runLogEvent, IDataCache dataCache) { this.context = context; RunLogEvent = runLogEvent; this.dataCache = dataCache; TimeTaken = runLogEvent.TimeTaken; Route = ((object)RunLogEvent).Route(dataCache); Distance = ((object)Route).Distance().ConvertTo(context.UserDistanceUnits(dataCache)); var paceData = new PaceData { Distance = Distance, Time = TimeTaken, Calc = "Pace" }; var paceCalc = new PaceCalculator(); paceCalc.Calculate(paceData); Pace = paceData; }
public ActionResult CalcPace(PaceData paceCalculation) { if (!ModelState.IsValid) { return(Json(paceCalculation)); } logger.LogInformation("Calculating pace (route/dist/time/pace/calc): {0}/{1}/{2}/{3}/{4}", paceCalculation.Route, paceCalculation.Distance, paceCalculation.Time, paceCalculation.Pace, paceCalculation.Calc); if (paceCalculation.HasRoute) { var userUnits = paceCalculation.Distance.BaseUnits; var route = MassiveDB.Current.FindRoute(paceCalculation.Route.Value); if (route != null) { paceCalculation.Distance = new Distance((double)route.Distance, (DistanceUnits)route.DistanceUnits).ConvertTo(userUnits); } } paceCalc.Calculate(paceCalculation); logger.LogInformation("Calculated pace (route/dist/time/pace/calc): {0}/{1}/{2}/{3}/{4}", paceCalculation.Route, paceCalculation.Distance, paceCalculation.Time, paceCalculation.Pace, paceCalculation.Calc); return(Json(paceCalculation)); }