public void Test_PWX_Extract_Power() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); Assert.Equal(_test.workout[0].sample.Length, workoutSample.PowerVector.NumberOfSamples); Assert.True(workoutSample.PowerVector.HasData); }
public void Test_missing_samples_In_Workout_File_returns_Workout_Samples() { var pwx = GetPwxDataFromXml( GetSamplePwxFile(@"c:\dev\autocoach\testxmldata\TestTurboPowerCyclePWXWithMissingSampleData.xml")); var dataExtractor = new PWXDataExtractor(pwx); var woSamples = dataExtractor.ExtractData(); Assert.NotEqual(0, woSamples.PowerVector.NumberOfSamples); }
public void TestNormalizedPower() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var myPowerAverage = workoutCalculator.GetNormalizedPower(); Assert.Equal(231, myPowerAverage); }
public void Test_Workout_Energy_System_Classiication_with_HeartRate() { Initialise(); var data = new PWXDataExtractor(_test); var samples = data.ExtractData(); IAthlete athlete = new Athlete(); var calc = new WorkoutSamplesCalculator(samples, athlete); var systems = calc.ClassifyWorkoutEnergeRangesFromHeartRate(160); Assert.IsType <List <IEnergySystemRange> >(systems); }
public void TestIntensityFactor() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); athlete.FTBikePower = 240; var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var intensityFactor = workoutCalculator.CalcualteIntensityFactor(); Assert.Equal(0.96, intensityFactor); }
public void TestAverageSpeed() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var mySpdAverage = workoutCalculator.GetAverageSpeed(); // double pwxSummaryAvgHR = _test.workout[0].summarydata.spd.avg; mySpdAverage = Math.Round(mySpdAverage); //Assert.Equal(mySpdAverage, pwxSummaryAvgHR); }
public void TestAveragePower() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var myPowerAverage = workoutCalculator.GetAveragePower(); var pwxSummaryPowerAverage = _test.workout[0].summarydata.pwr.avg; myPowerAverage = Math.Round(myPowerAverage); Assert.Equal(pwxSummaryPowerAverage, myPowerAverage); }
public void TestPowerBasedTrainingStressScoreCalculation() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var summaryTSS = _test.workout[0].summarydata.tss; var roundedTPTSS = Math.Round(summaryTSS, 0); var myTSSCalc = workoutCalculator.Calculate_Power_TrainingStressScore(272); var roundedMyTSS = Math.Round(myTSSCalc, 0); Assert.Equal(roundedTPTSS, roundedMyTSS); }
private static void Main(string[] args) { var athlete = new Athlete { TPData = new TrainingPeaksAthleteData { LoginName = "jscbutler", LoginPassword = "******", AccountType = TrainingPeaksAthleteAccountTypes.SelfCoachedPremium }, FTBikePower = 260, WeightKilos = 86.3 }; Console.Out.WriteLine("Starting connection to TrainingPeaks...."); var conn = new TrainingPeaksClient(); Console.Out.WriteLine("Initialised SOAP Client - starting to request Person Data"); conn.GetAthleteData(athlete); Console.Out.WriteLine("Received Person Data - " + athlete.TPData.AthleteName + " ID:" + athlete.TPData.PersonID); Console.Out.WriteLine("Accesing last workout for " + athlete.TPData.AthleteName); //var workout = conn.GetLastWorkoutIn30Days(athlete); //pwx pwxData = conn.GetExtendedWorkoutData(athlete, workout); var fromDate = DateTime.ParseExact("20/03/2016", "dd/MM/yyyy", CultureInfo.InvariantCulture); var toDate = DateTime.ParseExact("30/03/2016", "dd/MM/yyyy", CultureInfo.InvariantCulture); var workouts = conn.GetAllWorkoutsInDateRange(athlete, fromDate, toDate); foreach (var workout in workouts) { if (workout.SportType == SportType.Bike) { var pwxData = conn.GetExtendedWorkoutData(athlete, workout); var extractor = new PWXDataExtractor(pwxData); var workoutSamples = extractor.ExtractData(); var calculator = new WorkoutSamplesCalculator(workoutSamples, athlete); Console.Out.WriteLine(workout.SportType + " on " + workout.StartDate + " TSS: " + workoutSamples.SummaryTrainingStressScore + " Duration: " + workout.Duration); var cadenceRanges = calculator.ClassifyWorkoutCadenceRanges(); foreach (var cadenceRange in cadenceRanges) { Console.WriteLine(cadenceRange); } Console.WriteLine("=========================================="); } } Console.In.ReadLine(); }
public static IWorkout MapExtendedCycleWorkout(pwx pwx, IWorkout shortWorkout) { pwxWorkout pwxWo = pwx.workout[0]; IAthlete athlete = new Athlete(); athlete.FTBikePower = 231; shortWorkout.TrainingStressScore = pwxWo.summarydata.tss; ICycleWorkout cycleWorkout = shortWorkout as ICycleWorkout; if (cycleWorkout == null) { return(shortWorkout); } PWXDataExtractor dataExtractor = new PWXDataExtractor(pwx); var workoutSamples = dataExtractor.ExtractData(); WorkoutSamplesCalculator calc = new WorkoutSamplesCalculator(workoutSamples, athlete); cycleWorkout.IntensityFactor = calc.CalcualteIntensityFactor(); cycleWorkout.NormalizedPower = (int)calc.GetNormalizedPower(); return(shortWorkout); }
public void TestCadenceClassification() { var pwx = GetPwxDataFromXml( GetSamplePwxFile(@"c:\dev\autocoach\testxmldata\TestTurboPowerCyclePZoneClassificationPWX.xml")); var dataExtractor = new PWXDataExtractor(pwx); var workoutSample = dataExtractor.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample, athlete); var buckets = workoutCalculator.ClassifyWorkoutCadenceRanges(); Assert.IsType <List <ICadenceRange> >(buckets); Assert.Equal(1, buckets[0].QuanityOfSamples); Assert.Equal(14, buckets[0].PercentOfTotal); Assert.Equal(3, buckets[1].QuanityOfSamples); Assert.Equal(43, buckets[1].PercentOfTotal); Assert.Equal(0, buckets[2].QuanityOfSamples); Assert.Equal(0, buckets[2].PercentOfTotal); Assert.Equal(2, buckets[3].QuanityOfSamples); Assert.Equal(29, buckets[3].PercentOfTotal); Assert.Equal(1, buckets[4].QuanityOfSamples); Assert.Equal(14, buckets[4].PercentOfTotal); }
public void Test_Workout_Energy_System_Classiication_with_Power() { Initialise(); var data = new PWXDataExtractor(_test); var samples = data.ExtractData(); IAthlete athlete = new Athlete(); var calc = new WorkoutSamplesCalculator(samples, athlete); var systems = calc.ClassifyWorkoutPowerRanges(240); Assert.IsType<List<IEnergySystemRange>> (systems); }
public void TestAveragePower() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample,athlete); var myPowerAverage = workoutCalculator.GetAveragePower(); var pwxSummaryPowerAverage = _test.workout[0].summarydata.pwr.avg; myPowerAverage = Math.Round(myPowerAverage); Assert.Equal(pwxSummaryPowerAverage, myPowerAverage); }
public void TestAverageSpeed() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample,athlete); var mySpdAverage = workoutCalculator.GetAverageSpeed(); // double pwxSummaryAvgHR = _test.workout[0].summarydata.spd.avg; mySpdAverage = Math.Round(mySpdAverage); //Assert.Equal(mySpdAverage, pwxSummaryAvgHR); }
public void TestCadenceClassification() { var pwx = GetPwxDataFromXml( GetSamplePwxFile(@"c:\dev\autocoach\testxmldata\TestTurboPowerCyclePZoneClassificationPWX.xml")); var dataExtractor = new PWXDataExtractor(pwx); var workoutSample = dataExtractor.ExtractData(); IAthlete athlete = new Athlete(); var workoutCalculator = new WorkoutSamplesCalculator(workoutSample,athlete); var buckets = workoutCalculator.ClassifyWorkoutCadenceRanges(); Assert.IsType<List<ICadenceRange>>(buckets); Assert.Equal(1, buckets[0].QuanityOfSamples); Assert.Equal(14, buckets[0].PercentOfTotal); Assert.Equal(3, buckets[1].QuanityOfSamples); Assert.Equal(43, buckets[1].PercentOfTotal); Assert.Equal(0, buckets[2].QuanityOfSamples); Assert.Equal(0, buckets[2].PercentOfTotal); Assert.Equal(2, buckets[3].QuanityOfSamples); Assert.Equal(29, buckets[3].PercentOfTotal); Assert.Equal(1, buckets[4].QuanityOfSamples); Assert.Equal(14, buckets[4].PercentOfTotal); }
public void TestIntensityFactor() { Initialise(); var calc = new PWXDataExtractor(_test); var workoutSample = calc.ExtractData(); IAthlete athlete = new Athlete(); athlete.FTBikePower = 240; var workoutCalculator = new WorkoutSamplesCalculator(workoutSample,athlete); var intensityFactor = workoutCalculator.CalcualteIntensityFactor(); Assert.Equal(0.96, intensityFactor); }