package ride_test import ( "strings" "testing" "github.com/martinlehoux/biking_home/ride" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) const parserTestGPXPrefix = `` const parserTestGPXSuffix = `` const parserTestGPXMetricsPrefix = `` func TestGPXRideParserSkipsStationaryPoints(t *testing.T) { data := parserTestGPXPrefix + `100` + `101` + `102` + `103` + parserTestGPXSuffix 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) } func TestGPXRideParserRejectsStationaryRide(t *testing.T) { data := parserTestGPXPrefix + `100` + `101` + parserTestGPXSuffix _, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data)) require.Error(t, err) assert.Equal(t, "zero distance", err.Error()) } func TestGPXRideParserRejectsEmptyTrack(t *testing.T) { data := parserTestGPXPrefix + parserTestGPXSuffix _, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data)) require.Error(t, err) assert.Equal(t, "ride has no track points", err.Error()) } func TestGPXRideParserReadsGarminMetrics(t *testing.T) { data := parserTestGPXMetricsPrefix + `1009070200` + `1019171201` + `1029272202` + parserTestGPXSuffix parsed, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data)) 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) } func TestGPXRideParserDropsIncompleteMetricColumn(t *testing.T) { data := parserTestGPXMetricsPrefix + `1009070200` + `102920` + parserTestGPXSuffix 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) }