diff --git a/chart_test.go b/chart_test.go index a14a60c..6a04793 100644 --- a/chart_test.go +++ b/chart_test.go @@ -505,8 +505,8 @@ func TestChartE2ELine(t *testing.T) { }, Series: []Series{ ContinuousSeries{ - XValues: sequence.Values(0, 4, 1), - YValues: sequence.Values(0, 4, 1), + XValues: sequence.ValuesWithStep(0, 4, 1), + YValues: sequence.ValuesWithStep(0, 4, 1), }, }, } @@ -550,8 +550,8 @@ func TestChartE2ELineWithFill(t *testing.T) { StrokeColor: drawing.ColorBlue, FillColor: drawing.ColorRed, }, - XValues: sequence.Values(0, 4, 1), - YValues: sequence.Values(0, 4, 1), + XValues: sequence.ValuesWithStep(0, 4, 1), + YValues: sequence.ValuesWithStep(0, 4, 1), }, }, } diff --git a/sequence/linear.go b/sequence/linear.go index 71f4ffa..ea703b9 100644 --- a/sequence/linear.go +++ b/sequence/linear.go @@ -24,7 +24,7 @@ type Linear struct { // Len returns the number of elements in the sequence. func (lg Linear) Len() int { - return int((lg.limit - lg.offset) / lg.step) + return (int((lg.limit - lg.offset) / lg.step)) + 1 } // GetValue returns the value at a given index. diff --git a/sequence/linear_test.go b/sequence/linear_test.go new file mode 100644 index 0000000..d3c7e21 --- /dev/null +++ b/sequence/linear_test.go @@ -0,0 +1,24 @@ +package sequence + +import ( + "testing" + + assert "github.com/blendlabs/go-assert" +) + +func TestValues(t *testing.T) { + assert := assert.New(t) + + values := Values(1, 100) + assert.Len(values, 100) + assert.Equal(1, values[0]) + assert.Equal(100, values[99]) +} + +func TestValueWithStep(t *testing.T) { + assert := assert.New(t) + + values := ValuesWithStep(0, 100, 5) + assert.Equal(100, values[20]) + assert.Len(values, 21) +} diff --git a/sma_series_test.go b/sma_series_test.go index b416698..6c110f4 100644 --- a/sma_series_test.go +++ b/sma_series_test.go @@ -21,7 +21,7 @@ func (m mockValuesProvider) GetValues(index int) (x, y float64) { if index < 0 { panic("negative index at GetValue()") } - if index > util.Math.MinInt(len(m.X), len(m.Y)) { + if index >= util.Math.MinInt(len(m.X), len(m.Y)) { panic("index is outside the length of m.X or m.Y") } x = m.X[index]