public void TrainingLoad_TSSValueLoadTest()
        {
            Mock <IActivityDtoRepository> mock = Constant100TSSDaily();

            TrainingLoad pmc = new TrainingLoad(mock.Object);

            pmc.Setup(USER_ID, _startContantValues, _endConstantValues);
            pmc.Calculate(SportType.Ride);

            // check TSS values are populated correctly.
            foreach (TrainingLoadDay day in pmc.DayValues)
            {
                Assert.AreEqual(100, day.TSS);
            }
        }
        public void TrainingLoad_CreateAndInitialiseValidDates()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.Setup(USER_ID, _startContantValues, _endConstantValues);

            // test start and end dates exist.
            Assert.IsNotNull(pmc.DayValues.Where(d => d.Date == _startContantValues).FirstOrDefault());
            Assert.IsNotNull(pmc.DayValues.Where(d => d.Date == _endConstantValues).FirstOrDefault());

            // check each date exists in collection
            for (DateTime date = _startContantValues; date <= _endConstantValues; date = date.AddDays(1))
            {
                Assert.IsNotNull(pmc.DayValues.Where(d => d.Date == date).FirstOrDefault());
            }
        }
示例#3
0
        public IHttpActionResult GetTrainingLoad(string type, [FromUri] DateRange dates)
        {
            if (!dates.FromDateTime.HasValue)
            {
                return(BadRequest("Invalid From Date"));
            }

            if (!dates.ToDateTime.HasValue)
            {
                return(BadRequest("Invalid To Date"));
            }

            SportType sport;

            try
            {
                sport = EnumConversion.GetEnumFromDescription <SportType>(type);
            }
            catch (ArgumentException)
            {
                return(BadRequest("Invalid Sport Type"));
            }

            TrainingLoad _trainingLoad;

            _trainingLoad = new TrainingLoad(_activityRepo);
            // need to go back the highest number of days we're interested in plus a yearfor LongTerm training load duration
            // and an extra day to get a seed value.   Add an extra day to the end to hold current form.
            _trainingLoad.Setup(this.User.Identity.GetUserId(), dates.FromDateTime.Value.AddDays(-365), dates.ToDateTime.Value.AddDays(1));
            _trainingLoad.Calculate(sport);

            var requiredDayValues = _trainingLoad.DayValues.Where(d => d.Date >= dates.FromDateTime.Value && d.Date <= dates.ToDateTime.Value).ToList();


            var chart = new
            {
                Date          = requiredDayValues.Select(a => a.Date.ToShortDateString()).ToArray(),
                LongTermLoad  = requiredDayValues.Select(a => a.LongTermLoad.ToString()).ToArray(),
                ShortTermLoad = requiredDayValues.Select(a => a.ShortTermLoad.ToString()).ToArray(),
                TSS           = requiredDayValues.Select(a => a.TSS.ToString()).ToArray()
            };

            return(Json(chart));
        }
        public void TrainingLoad_ConstantTSSTest()
        {
            Mock <IActivityDtoRepository> mock = Constant100TSSDaily();

            TrainingLoad pmc = new TrainingLoad(mock.Object);

            pmc.Setup(USER_ID, _startContantValues, _endConstantValues);
            pmc.Calculate(SportType.Ride);

            Assert.AreEqual(13.31M, pmc.DayValues.Where(d => d.Date == _startContantValues).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(24.85M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(1)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(34.86M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(2)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(43.53M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(3)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(51.05M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(4)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(57.56M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(5)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(63.21M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(6)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(68.11M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(7)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(72.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(8)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(76.03M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(9)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(79.23M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(10)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(81.99M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(11)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(84.39M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(12)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(86.47M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(13)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(88.27M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(14)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(89.83M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(15)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(91.18M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(16)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(92.36M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(17)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(93.37M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(18)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(94.26M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(19)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(95.02M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(20)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(95.68M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(21)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(96.26M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(22)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(96.76M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(23)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(97.19M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(24)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(97.56M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(25)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(97.89M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(26)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(98.17M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(27)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(98.41M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(28)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(98.62M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(29)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(98.81M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(30)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(98.97M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(31)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.10M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(32)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.22M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(33)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.33M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(34)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.42M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(35)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.49M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(36)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.56M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(37)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.62M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(38)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.67M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(39)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.71M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(40)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.75M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(41)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.79M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(42)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.81M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(43)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.84M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(44)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.86M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(45)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.88M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(46)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.89M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(47)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.91M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(48)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.92M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(49)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.93M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(50)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.94M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(51)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.95M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(52)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.96M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(53)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.96M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(54)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.97M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(55)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.97M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(56)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.97M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(57)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.98M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(58)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.98M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(59)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(99.98M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(60)).Select(d => d.ShortTermLoad).FirstOrDefault());



            Assert.AreEqual(2.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(0)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(4.65M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(1)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(6.89M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(2)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(9.08M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(3)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(11.22M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(4)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(13.31M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(5)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(15.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(6)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(17.34M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(7)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(19.29M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(8)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(21.19M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(9)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(23.04M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(10)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(24.85M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(11)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(26.62M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(12)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(28.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(13)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(30.03M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(14)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(31.68M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(15)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(33.29M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(16)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(34.86M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(17)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(36.39M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(18)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(37.89M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(19)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(39.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(20)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(40.77M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(21)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(42.17M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(22)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(43.53M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(23)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(44.86M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(24)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(46.15M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(25)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(47.42M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(26)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(48.66M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(27)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(49.87M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(28)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(51.05M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(29)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(52.20M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(30)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(53.32M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(31)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(54.42M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(32)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(55.49M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(33)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(56.54M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(34)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(57.56M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(35)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(58.56M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(36)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(59.54M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(37)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(60.49M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(38)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(61.42M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(39)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(62.33M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(40)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(63.21M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(41)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(64.08M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(42)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(64.92M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(43)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(65.75M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(44)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(66.55M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(45)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(67.34M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(46)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(68.11M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(47)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(68.86M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(48)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(69.59M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(49)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(70.31M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(50)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(71.01M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(51)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(71.69M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(52)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(72.35M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(53)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(73.01M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(54)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(73.64M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(55)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(74.26M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(56)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(74.87M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(57)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(75.46M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(58)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(76.03M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(59)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(76.60M, pmc.DayValues.Where(d => d.Date == _startContantValues.AddDays(60)).Select(d => d.LongTermLoad).FirstOrDefault());
        }
        public void TrainingLoad_CTLDayConstantTest()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.LongTermDays = -1;
        }
        public void TrainingLoad_CreateAndInitialiseInvalidDates()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.Setup(USER_ID, DateTime.Now, DateTime.Now.AddDays(-1));
        }
        public void TrainingLoad_ATLDayConstantTest()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.ShortTermDays = -1;
        }
        public void TrainingLoad_SeedCTLTest()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.LongTermSeed = -1;
        }
        public void TrainingLoad_SeedATLTest()
        {
            TrainingLoad pmc = new TrainingLoad();

            pmc.ShortTermSeed = -1;
        }
        public void TrainingLoad_ActualTSSTest()
        {
            Mock <IActivityDtoRepository> mock = ActualTSS();

            TrainingLoad pmc = new TrainingLoad(mock.Object);

            pmc.Setup(USER_ID, _startActualValues, _endActualValues);
            pmc.ShortTermSeed = 47.2M;
            pmc.LongTermSeed  = 46.7M;
            pmc.ShortTermDays = 6.5;

            pmc.Calculate(SportType.Ride);

            Assert.AreEqual(40.47M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 3)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.60M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 3)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(58.10M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 4)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(48.39M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 4)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(49.81M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 5)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(47.25M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 5)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(48.56M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 6)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(47.10M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 6)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(46.80M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 7)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(46.85M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 7)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(40.12M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 8)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.74M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 8)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(40.86M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 9)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.73M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 9)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(35.03M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 10)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.66M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 10)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(30.04M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 11)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(43.61M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 11)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(25.75M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 12)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(42.58M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 12)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(37.41M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 13)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.11M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 13)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(39.71M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 14)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.33M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 14)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(43.21M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 15)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.80M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 15)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(41.37M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 16)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.46M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 16)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(35.47M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 17)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(43.41M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 17)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(40.55M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 18)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.06M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 18)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(43.28M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 19)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.43M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 19)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(51.43M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 20)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.75M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 20)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(46.60M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 21)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.09M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 21)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(47.30M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 22)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(45.24M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 22)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(45.21M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 23)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(44.94M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 23)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(38.76M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 24)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(43.88M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 24)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(33.23M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 25)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(42.85M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 25)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(28.49M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 26)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(41.84M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 26)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(24.43M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 27)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(40.86M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 27)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(20.95M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 28)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(39.90M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 28)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(17.96M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 29)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(38.96M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 29)).Select(d => d.LongTermLoad).FirstOrDefault());
            Assert.AreEqual(15.40M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 30)).Select(d => d.ShortTermLoad).FirstOrDefault());
            Assert.AreEqual(38.04M, pmc.DayValues.Where(d => d.Date == new DateTime(2016, 9, 30)).Select(d => d.LongTermLoad).FirstOrDefault());
        }
示例#11
0
文件: Analyser.cs 项目: Cycli/Cycli
        public static TrainingLoad[] GetTrainingLoad(string userId)
        {
            List<TrainingLoad> tls = new List<TrainingLoad>();
            // Because we look over the past year, we need data for 3 * chronic training load time constant
            DateTime now = DateTime.UtcNow.Date.AddDays(1);
            DateTime yearAgo = now.AddYears(-1);
            long secsYearAgo = Utilities.DbTime.ToDbSecs(yearAgo);
            long secsNow = Utilities.DbTime.ToDbSecs(now);
            DateTime startCalcTime = yearAgo.AddDays(-3 * CTL_TIME_CONSTANT);
            long startms = Utilities.DbTime.ToDbSecs(startCalcTime);
            DataTable dtTSS = null;
            string sql = @"select (r.startdatetime - r.startdatetime % 86400) as startdatetime, " +
                         "sum(rr.TSS) as TSS " +
                        "from cycli_race_riders rr, cycli_races r " +
                        "where rr.raceid = r.raceid " +
                        "and rr.userid = @u1 " +
                        "and r.startdatetime >= @st " +
                        "group by r.startdatetime - r.startdatetime % 86400 " +
                        "order by startdatetime";

            SQLiteDatabase db = new SQLiteDatabase();
            try
            {
                dtTSS = db.GetDataTable(sql, "@u1", userId, "@st", startms);
                float lastAtl = 0f;
                float lastCtl = 0f;

                if (dtTSS.Rows.Count > 0)
                {

                    DateTime d = startCalcTime;
                    while (d < now)
                    {

                        long s = Utilities.DbTime.ToDbSecs(d);
                        long e = Utilities.DbTime.ToDbSecs(d.AddDays(1));

                        DataRow[] dr = dtTSS.Select("startdatetime >= " + s + " and startdatetime < " + e);

                        TrainingLoad tl = new TrainingLoad() { DeltaDate = s - secsNow };
                        int t = 0;
                        if (dr.Length > 0)
                        {
                            tl.Tss = (int)dr[0].Field<long>("TSS");
                            t = tl.Tss;
                        }
                        else
                        {
                            tl.Tss = int.MinValue;   // Will hide it on the chart
                            t = 0;
                        }
                        tl.Atl = lastAtl + (float)(t - lastAtl) / ATL_TIME_CONSTANT;
                        tl.Ctl = lastCtl + (float)(t - lastCtl) / CTL_TIME_CONSTANT;
                        tl.Tsb = tl.Ctl - tl.Atl;

                        // Only add to the list if we're in the last year
                        if (d >= yearAgo)
                        {
                            tls.Add(tl);
                        }
                        lastAtl = tl.Atl;
                        lastCtl = tl.Ctl;
                        d = d.AddDays(1);
                    }
                }
            }
            finally
            {
                db.Close();
            }
            return tls.ToArray();
        }