aboutsummaryrefslogtreecommitdiff
path: root/cli/cli_test.go
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-08-24 09:27:29 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-08-24 09:27:29 +0200
commit8b921624666141c09cf20e2e0ee3cbe260a6412d (patch)
tree7f708dfe7807dda1f54e4d010d58858d5e7c5999 /cli/cli_test.go
parent34b8ae8f4c16b86281aa578e8f6891fca3666d37 (diff)
Add type filtering, drop hard-coded filters and route filter, tune backtest
Diffstat (limited to 'cli/cli_test.go')
-rw-r--r--cli/cli_test.go28
1 files changed, 21 insertions, 7 deletions
diff --git a/cli/cli_test.go b/cli/cli_test.go
index 3e2afe2..28260e0 100644
--- a/cli/cli_test.go
+++ b/cli/cli_test.go
@@ -8,23 +8,37 @@ import (
)
func TestBacktestEligibilityExcludesShortDistances(t *testing.T) {
- short := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000 - 1, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000}
- minimum := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000}
+ short := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000 - 1, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
+ minimum := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
- assert.False(t, isBacktestEligible(short))
+ assert.True(t, isBacktestEligible(short))
assert.True(t, isBacktestEligible(minimum))
}
func TestBacktestEligibilityExcludesLowMovingRatio(t *testing.T) {
- low := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 7_999, ElapsedTimeS: 10_000}
- boundary := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000}
- noElapsed := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 1}
+ low := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 7_999, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
+ boundary := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
+ noElapsed := ride.StoredRide{GPXPath: "ride.gpx", DistanceM: 10_000, ExternalMovingTimeS: 1, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
- assert.False(t, isBacktestEligible(low))
+ assert.True(t, isBacktestEligible(low))
assert.True(t, isBacktestEligible(boundary))
assert.False(t, isBacktestEligible(noElapsed))
}
+func TestBacktestEligibilityExcludesUncategorisedAndIndoorTransport(t *testing.T) {
+ base := ride.StoredRide{GPXPath: "ride.gpx", ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTraining}
+ uncategorised := ride.StoredRide{GPXPath: "ride.gpx", ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000}
+ indoor := ride.StoredRide{GPXPath: "ride.gpx", ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeIndoor}
+ transport := ride.StoredRide{GPXPath: "ride.gpx", ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeRoad, RideType: ride.RideTypeTransport}
+ race := ride.StoredRide{GPXPath: "ride.gpx", ExternalMovingTimeS: 8_000, ElapsedTimeS: 10_000, BikeType: ride.BikeTypeMTB, RideType: ride.RideTypeRace}
+
+ assert.True(t, isBacktestEligible(base))
+ assert.False(t, isBacktestEligible(uncategorised))
+ assert.False(t, isBacktestEligible(indoor))
+ assert.False(t, isBacktestEligible(transport))
+ assert.True(t, isBacktestEligible(race))
+}
+
func TestBacktestStatsUseUnroundedSamples(t *testing.T) {
absErrors := []float64{0, 0.1, 0.1}