1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// 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
}
|