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.Distances()[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()) 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) { data := parserTestGPXMetricsPrefix + `1009070200` + `102920` + parserTestGPXSuffix parsed, err := (ride.GPXRideParser{}).Parse(strings.NewReader(data)) require.NoError(t, err) _, 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]) }