From a756db412b434256e66991d7cc639197ea1dd58d Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Thu, 14 Jul 2016 12:30:57 -0700 Subject: [PATCH] adding tests. --- moving_average_series_test.go | 53 +++++++++++++++++++++++++++++++++++ util.go | 11 ++++++-- util_test.go | 17 +++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 moving_average_series_test.go diff --git a/moving_average_series_test.go b/moving_average_series_test.go new file mode 100644 index 0000000..ec49caf --- /dev/null +++ b/moving_average_series_test.go @@ -0,0 +1,53 @@ +package chart + +import ( + "testing" + + "github.com/blendlabs/go-assert" +) + +type mockValueProvider struct { + X []float64 + Y []float64 +} + +func (m mockValueProvider) Len() int { + return MinInt(len(m.X), len(m.Y)) +} + +func (m mockValueProvider) GetValue(index int) (x, y float64) { + x = m.X[index] + y = m.Y[index] + return +} + +func TestMovingAverageSeriesGetValue(t *testing.T) { + assert := assert.New(t) + + mockSeries := mockValueProvider{ + Seq(1.0, 10.0), + Seq(10, 1.0), + } + assert.Equal(10, mockSeries.Len()) + + mas := &MovingAverageSeries{ + InnerSeries: mockSeries, + WindowSize: 10, + } + + var yvalues []float64 + for x := 0; x < mas.Len(); x++ { + _, y := mas.GetValue(x) + yvalues = append(yvalues, y) + } + + assert.Equal(10.0, yvalues[0]) + assert.Equal(9.5, yvalues[1]) + assert.Equal(9.0, yvalues[2]) + assert.Equal(8.5, yvalues[3]) + assert.Equal(8.0, yvalues[4]) + assert.Equal(7.5, yvalues[5]) + assert.Equal(7.0, yvalues[6]) + assert.Equal(6.5, yvalues[7]) + assert.Equal(6.0, yvalues[8]) +} diff --git a/util.go b/util.go index 15e02fe..ac440f8 100644 --- a/util.go +++ b/util.go @@ -130,8 +130,15 @@ func Seq(start, end float64, steps ...float64) []float64 { if len(steps) > 0 { step = steps[0] } - for x := start; x <= end; x += step { - values = append(values, x) + + if start < end { + for x := start; x <= end; x += step { + values = append(values, x) + } + } else { + for x := start; x >= end; x = x - step { + values = append(values, x) + } } return values } diff --git a/util_test.go b/util_test.go index d81c8be..aff684e 100644 --- a/util_test.go +++ b/util_test.go @@ -83,3 +83,20 @@ func TestGetRoundToForDelta(t *testing.T) { assert.Equal(10.0, GetRoundToForDelta(101.00)) assert.Equal(1.0, GetRoundToForDelta(11.00)) } + +func TestSeq(t *testing.T) { + assert := assert.New(t) + + asc := Seq(1.0, 10.0) + assert.Len(asc, 10) + + desc := Seq(10.0, 1.0) + assert.Len(desc, 10) +} + +func TestPercentDifference(t *testing.T) { + assert := assert.New(t) + + assert.Equal(0.5, PercentDifference(1.0, 1.5)) + assert.Equal(-0.5, PercentDifference(2.0, 1.0)) +}