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('"', '\'')));
        }
Beispiel #3
0
            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;
            }
Beispiel #4
0
        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));
        }