aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-25 11:34:27 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-25 11:34:27 +0200
commite54e2b313a37c2d2af4e3e537ad4e64e8c816e86 (patch)
tree37eed4e86668f3854c9dacb0edf5d95e0efceaca
parent708f5428968b7c1526f257b683d0146ef5dae418 (diff)
Remove per-index ride accessors now dead after the component migration
The DistanceM, ElevationM, Coord, Timestamp and optional metric index accessors (HeartRateBpm, CadenceRpm, PowerW) are no longer used by any production code now that algorithms and consumers read ride components. Tests that asserted metric parsing and coordinates now read the component slices (Distances, Coords, HeartRates, Cadences, Powers).
-rw-r--r--official_climb/official_climb_test.go10
-rw-r--r--ride/parser_test.go36
-rw-r--r--ride/ride.go27
-rw-r--r--strava/sync_test.go14
-rw-r--r--web/server_test.go8
5 files changed, 35 insertions, 60 deletions
diff --git a/official_climb/official_climb_test.go b/official_climb/official_climb_test.go
index 266581e..bd59efc 100644
--- a/official_climb/official_climb_test.go
+++ b/official_climb/official_climb_test.go
@@ -65,8 +65,8 @@ func TestMatchClimbMatchesWithoutDetectedClimb(t *testing.T) {
)
official := official_climb.OfficialClimb{
Name: "On route",
- StartCoord: parsed.Coord(1),
- EndCoord: parsed.Coord(2),
+ StartCoord: parsed.Coords()[1],
+ EndCoord: parsed.Coords()[2],
}
matched, found := official_climb.MatchClimb(parsed.Coords(), official, official_climb.DefaultMatchRadiusM)
require.True(t, found)
@@ -111,8 +111,8 @@ func TestMatchClimbRejectsReversedEndpoints(t *testing.T) {
)
official := official_climb.OfficialClimb{
Name: "Reversed",
- StartCoord: parsed.Coord(2),
- EndCoord: parsed.Coord(1),
+ StartCoord: parsed.Coords()[2],
+ EndCoord: parsed.Coords()[1],
}
_, found := official_climb.MatchClimb(parsed.Coords(), official, official_climb.DefaultMatchRadiusM)
assert.False(t, found)
@@ -133,7 +133,7 @@ func TestMatchClimbRejectsEndpointOutsideRadius(t *testing.T) {
official := official_climb.OfficialClimb{
Name: "Too far",
StartCoord: geodist.Coord{Lat: 43.09, Lon: 5.09},
- EndCoord: parsed.Coord(2),
+ EndCoord: parsed.Coords()[2],
}
_, found := official_climb.MatchClimb(parsed.Coords(), official, 10)
assert.False(t, found)
diff --git a/ride/parser_test.go b/ride/parser_test.go
index c2d6719..d8ac4d6 100644
--- a/ride/parser_test.go
+++ b/ride/parser_test.go
@@ -24,7 +24,7 @@ func TestGPXRideParserSkipsStationaryPoints(t *testing.T) {
parsed, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data))
require.NoError(t, err)
assert.Equal(t, 2, parsed.Len())
- assert.Greater(t, parsed.DistanceM(1), 0.0)
+ assert.Greater(t, parsed.Distances()[1], 0.0)
}
func TestGPXRideParserRejectsStationaryRide(t *testing.T) {
@@ -57,15 +57,15 @@ func TestGPXRideParserReadsGarminMetrics(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, 2, parsed.Len())
- heartRate, found := parsed.HeartRateBpm(1)
- require.True(t, found)
- assert.Equal(t, 92.0, heartRate)
- cadence, found := parsed.CadenceRpm(1)
- require.True(t, found)
- assert.Equal(t, 72.0, cadence)
- power, found := parsed.PowerW(1)
- require.True(t, found)
- assert.Equal(t, 202.0, power)
+ heartRates, ok := parsed.HeartRates()
+ require.True(t, ok)
+ assert.Equal(t, 92.0, heartRates[1])
+ cadences, ok := parsed.Cadences()
+ require.True(t, ok)
+ assert.Equal(t, 72.0, cadences[1])
+ powers, ok := parsed.Powers()
+ require.True(t, ok)
+ assert.Equal(t, 202.0, powers[1])
}
func TestGPXRideParserDropsIncompleteMetricColumn(t *testing.T) {
@@ -77,12 +77,12 @@ func TestGPXRideParserDropsIncompleteMetricColumn(t *testing.T) {
parsed, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data))
require.NoError(t, err)
- _, found := parsed.CadenceRpm(0)
- assert.False(t, found)
- heartRate, found := parsed.HeartRateBpm(1)
- require.True(t, found)
- assert.Equal(t, 92.0, heartRate)
- power, found := parsed.PowerW(1)
- require.True(t, found)
- assert.Equal(t, 0.0, power)
+ _, ok := parsed.Cadences()
+ assert.False(t, ok)
+ heartRates, ok := parsed.HeartRates()
+ require.True(t, ok)
+ assert.Equal(t, 92.0, heartRates[1])
+ powers, ok := parsed.Powers()
+ require.True(t, ok)
+ assert.Equal(t, 0.0, powers[1])
}
diff --git a/ride/ride.go b/ride/ride.go
index a694df9..1de8b07 100644
--- a/ride/ride.go
+++ b/ride/ride.go
@@ -59,26 +59,6 @@ func (r Ride) Cadences() ([]float64, bool) { return optionalComponent(r.cadences
func (r Ride) HeartRates() ([]float64, bool) { return optionalComponent(r.heartRates) }
-func (r Ride) DistanceM(i int) float64 { return r.distances[i] }
-
-func (r Ride) ElevationM(i int) float64 { return r.elevations[i] }
-
-func (r Ride) Coord(i int) geodist.Coord { return r.coords[i] }
-
-func (r Ride) Timestamp(i int) time.Time { return r.timestamps[i] }
-
-func (r Ride) HeartRateBpm(i int) (float64, bool) {
- return optionalMetric(r.heartRates, i)
-}
-
-func (r Ride) CadenceRpm(i int) (float64, bool) {
- return optionalMetric(r.cadences, i)
-}
-
-func (r Ride) PowerW(i int) (float64, bool) {
- return optionalMetric(r.powers, i)
-}
-
func optionalComponent(column []float64) ([]float64, bool) {
if len(column) == 0 {
return nil, false
@@ -86,13 +66,6 @@ func optionalComponent(column []float64) ([]float64, bool) {
return column, true
}
-func optionalMetric(column []float64, i int) (float64, bool) {
- if len(column) == 0 {
- return 0, false
- }
- return column[i], true
-}
-
type RideParser interface {
Parse(reader io.Reader) (Ride, error)
}
diff --git a/strava/sync_test.go b/strava/sync_test.go
index 9223c95..abc3d0e 100644
--- a/strava/sync_test.go
+++ b/strava/sync_test.go
@@ -103,13 +103,15 @@ func TestGet(t *testing.T) {
parsedRide, err := (ride.GPXRideParser{}).Parse(bytes.NewReader(gpxData))
require.NoError(t, err)
assert.Equal(t, 2, parsedRide.Len())
- heartRateValue, found := parsedRide.HeartRateBpm(1)
- require.True(t, found)
+ heartRates, ok := parsedRide.HeartRates()
+ require.True(t, ok)
+ heartRateValue := heartRates[1]
assert.Equal(t, 91.0, heartRateValue)
- _, found = parsedRide.CadenceRpm(0)
- assert.False(t, found)
- powerValue, found := parsedRide.PowerW(1)
- require.True(t, found)
+ _, ok = parsedRide.Cadences()
+ assert.False(t, ok)
+ powers, ok := parsedRide.Powers()
+ require.True(t, ok)
+ powerValue := powers[1]
assert.Equal(t, 0.0, powerValue)
}
diff --git a/web/server_test.go b/web/server_test.go
index b3f6028..9ee578e 100644
--- a/web/server_test.go
+++ b/web/server_test.go
@@ -234,8 +234,8 @@ func TestBuildRideProfileIncludesOfficialClimbMatch(t *testing.T) {
profile := buildRideProfile(parsed, nil, []official_climb.OfficialClimb{{
ID: 42,
Name: "Col de Test",
- StartCoord: parsed.Coord(0),
- EndCoord: parsed.Coord(1),
+ StartCoord: parsed.Coords()[0],
+ EndCoord: parsed.Coords()[1],
}}, official_climb.DefaultMatchPolicy())
require.Len(t, profile.Climbs, 1)
@@ -256,8 +256,8 @@ func TestBuildRideProfileUsesOfficialClimbBoundaries(t *testing.T) {
profile := buildRideProfile(parsed, nil, []official_climb.OfficialClimb{{
ID: 42,
Name: "Col de Test",
- StartCoord: parsed.Coord(0),
- EndCoord: parsed.Coord(2),
+ StartCoord: parsed.Coords()[0],
+ EndCoord: parsed.Coords()[2],
}}, official_climb.DefaultMatchPolicy())
require.Len(t, profile.Climbs, 1)