// Package ridetest builds ride.Ride test fixtures from a compact string DSL. It // reuses routetest to sample the route geometry and layers ride timestamps and // telemetry on top. // // Grammar: see routetest. package ridetest import ( "github.com/martinlehoux/biking_home/internal/routetest" "github.com/martinlehoux/biking_home/ride" ) // Option is re-exported from routetest so existing ridetest callers keep // working unchanged. type Option = routetest.Option var ( Sampling = routetest.Sampling StartCoord = routetest.StartCoord Heading = routetest.Heading StartTime = routetest.StartTime StartElevation = routetest.StartElevation ) // Ride parses a ride description into a ride.Ride. // // Example: "2km at 7% | 1km at -7%". func Ride(dsl string, opts ...Option) (ride.Ride, error) { built, err := routetest.Build(dsl, opts...) if err != nil { return ride.Ride{}, err } return ride.FromColumnsWithMetrics(built.Distances, built.Elevations, built.Coords, built.Timestamps, built.HeartRates, built.Cadences, built.Powers), nil } // MustRide is like Ride but panics on a malformed description; use it inside // tests where the description is a static program constant. func MustRide(dsl string, opts ...Option) ride.Ride { ride, err := Ride(dsl, opts...) if err != nil { panic(err) } return ride }