package ride import ( "testing" "time" "github.com/jftuga/geodist" "github.com/stretchr/testify/assert" ) func TestRideExposesComponentGetters(t *testing.T) { distances := []float64{0, 500, 1000} elevations := []float64{0, 35, 70} coords := []geodist.Coord{{Lat: 43.0, Lon: 5.0}, {Lat: 43.1, Lon: 5.1}, {Lat: 43.2, Lon: 5.2}} timestamps := []time.Time{{}, time.Time{}.Add(time.Second), time.Time{}.Add(2 * time.Second)} r := FromColumns(distances, elevations, coords, timestamps) assert.Equal(t, distances, r.Distances()) assert.Equal(t, elevations, r.Elevations()) assert.Equal(t, coords, r.Coords()) assert.Equal(t, timestamps, r.Timestamps()) powers, ok := r.Powers() assert.False(t, ok, "no power component present") assert.Nil(t, powers) cadences, ok := r.Cadences() assert.False(t, ok, "no cadence component present") assert.Nil(t, cadences) } func TestDifficultyScoreReadsOnlyDistanceAndElevationComponents(t *testing.T) { // A 1 km climb at a steady 7%, sampled every 100 m. distances := make([]float64, 0, 11) elevations := make([]float64, 0, 11) for i := 0; i <= 10; i++ { distances = append(distances, float64(i*100)) elevations = append(elevations, float64(i*7)) } // Reference Cotacol value: 10 segments of 100 m at 7% => 49 pts. assert.InDelta(t, 49, difficultyScore(distances, elevations, 0, len(distances)-1), 0.5) }