adding tests.
This commit is contained in:
parent
92e758cc0d
commit
149bc3ad5d
2 changed files with 161 additions and 7 deletions
|
@ -3,8 +3,6 @@ package chart
|
||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/wcharczuk/go-chart"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateContinuousSeriesLastValueLabel returns a (1) value annotation series.
|
// CreateContinuousSeriesLastValueLabel returns a (1) value annotation series.
|
||||||
|
@ -13,9 +11,9 @@ func CreateContinuousSeriesLastValueLabel(name string, xvalues, yvalues []float6
|
||||||
Name: name,
|
Name: name,
|
||||||
Style: Style{
|
Style: Style{
|
||||||
Show: true,
|
Show: true,
|
||||||
StrokeColor: chart.GetDefaultSeriesStrokeColor(0),
|
StrokeColor: GetDefaultSeriesStrokeColor(0),
|
||||||
},
|
},
|
||||||
Annotations: []chart.Annotation{
|
Annotations: []Annotation{
|
||||||
Annotation{
|
Annotation{
|
||||||
X: xvalues[len(xvalues)-1],
|
X: xvalues[len(xvalues)-1],
|
||||||
Y: yvalues[len(yvalues)-1],
|
Y: yvalues[len(yvalues)-1],
|
||||||
|
@ -31,11 +29,11 @@ func CreateTimeSeriesLastValueLabel(name string, xvalues []time.Time, yvalues []
|
||||||
Name: name,
|
Name: name,
|
||||||
Style: Style{
|
Style: Style{
|
||||||
Show: true,
|
Show: true,
|
||||||
StrokeColor: chart.GetDefaultSeriesStrokeColor(0),
|
StrokeColor: GetDefaultSeriesStrokeColor(0),
|
||||||
},
|
},
|
||||||
Annotations: []chart.Annotation{
|
Annotations: []Annotation{
|
||||||
Annotation{
|
Annotation{
|
||||||
X: xvalues[len(xvalues)-1],
|
X: float64(xvalues[len(xvalues)-1].Unix()),
|
||||||
Y: yvalues[len(yvalues)-1],
|
Y: yvalues[len(yvalues)-1],
|
||||||
Label: valueFormatter(yvalues[len(yvalues)-1]),
|
Label: valueFormatter(yvalues[len(yvalues)-1]),
|
||||||
},
|
},
|
||||||
|
|
156
annotation_series_test.go
Normal file
156
annotation_series_test.go
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
package chart
|
||||||
|
|
||||||
|
import (
|
||||||
|
"image/color"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/blendlabs/go-assert"
|
||||||
|
"github.com/wcharczuk/go-chart/drawing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCreateContinuousSeriesLastValueLabel(t *testing.T) {
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
as := CreateContinuousSeriesLastValueLabel("test", []float64{1, 2, 3}, []float64{4, 5, 6}, FloatValueFormatter)
|
||||||
|
assert.Equal("test", as.GetName())
|
||||||
|
assert.False(as.GetStyle().IsZero())
|
||||||
|
assert.True(as.GetStyle().Show)
|
||||||
|
assert.NotEmpty(as.Annotations)
|
||||||
|
assert.Equal(3.0, as.Annotations[0].X)
|
||||||
|
assert.Equal(6.0, as.Annotations[0].Y)
|
||||||
|
assert.Equal("6.00", as.Annotations[0].Label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateTimeSeriesLastValueLabel(t *testing.T) {
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
d := time.Now().AddDate(0, 0, -1)
|
||||||
|
|
||||||
|
as := CreateTimeSeriesLastValueLabel("test", []time.Time{
|
||||||
|
time.Now().AddDate(0, 0, -3),
|
||||||
|
time.Now().AddDate(0, 0, -2),
|
||||||
|
d,
|
||||||
|
}, []float64{4, 5, 6}, FloatValueFormatter)
|
||||||
|
assert.Equal("test", as.GetName())
|
||||||
|
assert.False(as.GetStyle().IsZero())
|
||||||
|
assert.True(as.GetStyle().Show)
|
||||||
|
assert.NotEmpty(as.Annotations)
|
||||||
|
assert.Equal(float64(d.Unix()), as.Annotations[0].X)
|
||||||
|
assert.Equal(6.0, as.Annotations[0].Y)
|
||||||
|
assert.Equal("6.00", as.Annotations[0].Label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnotationSeriesMeasure(t *testing.T) {
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
as := AnnotationSeries{
|
||||||
|
Style: Style{
|
||||||
|
Show: true,
|
||||||
|
},
|
||||||
|
Annotations: []Annotation{
|
||||||
|
Annotation{X: 1.0, Y: 1.0, Label: "1.0"},
|
||||||
|
Annotation{X: 2.0, Y: 2.0, Label: "2.0"},
|
||||||
|
Annotation{X: 3.0, Y: 3.0, Label: "3.0"},
|
||||||
|
Annotation{X: 4.0, Y: 4.0, Label: "4.0"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := PNG(110, 110)
|
||||||
|
assert.Nil(err)
|
||||||
|
|
||||||
|
f, err := GetDefaultFont()
|
||||||
|
assert.Nil(err)
|
||||||
|
|
||||||
|
xrange := Range{
|
||||||
|
Min: 1.0,
|
||||||
|
Max: 4.0,
|
||||||
|
Domain: 100,
|
||||||
|
}
|
||||||
|
yrange := Range{
|
||||||
|
Min: 1.0,
|
||||||
|
Max: 4.0,
|
||||||
|
Domain: 100,
|
||||||
|
}
|
||||||
|
|
||||||
|
cb := Box{
|
||||||
|
Top: 5,
|
||||||
|
Left: 5,
|
||||||
|
Right: 105,
|
||||||
|
Bottom: 105,
|
||||||
|
Height: 100,
|
||||||
|
Width: 100,
|
||||||
|
}
|
||||||
|
sd := Style{
|
||||||
|
FontSize: 10.0,
|
||||||
|
Font: f,
|
||||||
|
}
|
||||||
|
|
||||||
|
box := as.Measure(r, cb, xrange, yrange, sd)
|
||||||
|
assert.False(box.IsZero())
|
||||||
|
assert.Equal(-5.0, box.Top)
|
||||||
|
assert.Equal(5.0, box.Left)
|
||||||
|
assert.Equal(139.0, box.Right) //the top,left annotation sticks up 5px and out ~44px.
|
||||||
|
assert.Equal(115.0, box.Bottom)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAnnotationSeriesRender(t *testing.T) {
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
as := AnnotationSeries{
|
||||||
|
Style: Style{
|
||||||
|
Show: true,
|
||||||
|
FillColor: drawing.ColorWhite,
|
||||||
|
StrokeColor: drawing.ColorBlack,
|
||||||
|
},
|
||||||
|
Annotations: []Annotation{
|
||||||
|
Annotation{X: 1.0, Y: 1.0, Label: "1.0"},
|
||||||
|
Annotation{X: 2.0, Y: 2.0, Label: "2.0"},
|
||||||
|
Annotation{X: 3.0, Y: 3.0, Label: "3.0"},
|
||||||
|
Annotation{X: 4.0, Y: 4.0, Label: "4.0"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := PNG(110, 110)
|
||||||
|
assert.Nil(err)
|
||||||
|
|
||||||
|
f, err := GetDefaultFont()
|
||||||
|
assert.Nil(err)
|
||||||
|
|
||||||
|
xrange := Range{
|
||||||
|
Min: 1.0,
|
||||||
|
Max: 4.0,
|
||||||
|
Domain: 100,
|
||||||
|
}
|
||||||
|
yrange := Range{
|
||||||
|
Min: 1.0,
|
||||||
|
Max: 4.0,
|
||||||
|
Domain: 100,
|
||||||
|
}
|
||||||
|
|
||||||
|
cb := Box{
|
||||||
|
Top: 5,
|
||||||
|
Left: 5,
|
||||||
|
Right: 105,
|
||||||
|
Bottom: 105,
|
||||||
|
Height: 100,
|
||||||
|
Width: 100,
|
||||||
|
}
|
||||||
|
sd := Style{
|
||||||
|
FontSize: 10.0,
|
||||||
|
Font: f,
|
||||||
|
}
|
||||||
|
|
||||||
|
as.Render(r, cb, xrange, yrange, sd)
|
||||||
|
|
||||||
|
rr, isRaster := r.(*rasterRenderer)
|
||||||
|
assert.True(isRaster)
|
||||||
|
assert.NotNil(rr)
|
||||||
|
|
||||||
|
c := rr.i.At(39, 70)
|
||||||
|
converted, isRGBA := color.RGBAModel.Convert(c).(color.RGBA)
|
||||||
|
assert.True(isRGBA)
|
||||||
|
assert.Equal(3, converted.R)
|
||||||
|
assert.Equal(3, converted.G)
|
||||||
|
assert.Equal(3, converted.B)
|
||||||
|
}
|
Loading…
Reference in a new issue