2016-07-07 03:54:00 +02:00
|
|
|
package chart
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/blendlabs/go-assert"
|
|
|
|
)
|
|
|
|
|
2016-07-13 05:34:59 +02:00
|
|
|
func TestChartGetDPI(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
unset := Chart{}
|
|
|
|
assert.Equal(DefaultDPI, unset.GetDPI())
|
|
|
|
assert.Equal(192, unset.GetDPI(192))
|
|
|
|
|
|
|
|
set := Chart{DPI: 128}
|
|
|
|
assert.Equal(128, set.GetDPI())
|
|
|
|
assert.Equal(128, set.GetDPI(192))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestChartGetFont(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
f, err := GetDefaultFont()
|
|
|
|
assert.Nil(err)
|
|
|
|
|
|
|
|
unset := Chart{}
|
|
|
|
assert.Nil(unset.GetFont())
|
|
|
|
|
|
|
|
set := Chart{Font: f}
|
|
|
|
assert.NotNil(set.GetFont())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestChartGetWidth(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
unset := Chart{}
|
|
|
|
assert.Equal(DefaultChartWidth, unset.GetWidth())
|
|
|
|
|
|
|
|
set := Chart{Width: DefaultChartWidth + 10}
|
|
|
|
assert.Equal(DefaultChartWidth+10, set.GetWidth())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestChartGetHeight(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
unset := Chart{}
|
|
|
|
assert.Equal(DefaultChartHeight, unset.GetHeight())
|
|
|
|
|
|
|
|
set := Chart{Height: DefaultChartHeight + 10}
|
|
|
|
assert.Equal(DefaultChartHeight+10, set.GetHeight())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestChartGetRanges(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
c := Chart{
|
|
|
|
Series: []Series{
|
|
|
|
ContinuousSeries{
|
|
|
|
XValues: []float64{-2.0, -1.0, 0, 1.0, 2.0},
|
|
|
|
YValues: []float64{1.0, 2.0, 3.0, 4.0, 4.5},
|
|
|
|
},
|
|
|
|
ContinuousSeries{
|
|
|
|
XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
|
|
|
|
YValues: []float64{-2.1, -1.0, 0, 1.0, 2.0},
|
|
|
|
},
|
|
|
|
ContinuousSeries{
|
|
|
|
YAxis: YAxisSecondary,
|
|
|
|
XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
|
|
|
|
YValues: []float64{10.0, 11.0, 12.0, 13.0, 14.0},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
xrange, yrange, yrangeAlt := c.getRanges()
|
|
|
|
assert.Equal(-2.0, xrange.Min)
|
|
|
|
assert.Equal(5.0, xrange.Max)
|
|
|
|
|
|
|
|
assert.Equal(-2.1, yrange.Min)
|
|
|
|
assert.Equal(4.5, yrange.Max)
|
|
|
|
|
|
|
|
assert.Equal(10.0, yrangeAlt.Min)
|
|
|
|
assert.Equal(14.0, yrangeAlt.Max)
|
|
|
|
|
|
|
|
cSet := Chart{
|
|
|
|
XAxis: XAxis{
|
|
|
|
Range: Range{Min: 9.8, Max: 19.8},
|
|
|
|
},
|
|
|
|
YAxis: YAxis{
|
|
|
|
Range: Range{Min: 9.9, Max: 19.9},
|
|
|
|
},
|
|
|
|
YAxisSecondary: YAxis{
|
|
|
|
Range: Range{Min: 9.7, Max: 19.7},
|
|
|
|
},
|
|
|
|
Series: []Series{
|
|
|
|
ContinuousSeries{
|
|
|
|
XValues: []float64{-2.0, -1.0, 0, 1.0, 2.0},
|
|
|
|
YValues: []float64{1.0, 2.0, 3.0, 4.0, 4.5},
|
|
|
|
},
|
|
|
|
ContinuousSeries{
|
|
|
|
XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
|
|
|
|
YValues: []float64{-2.1, -1.0, 0, 1.0, 2.0},
|
|
|
|
},
|
|
|
|
ContinuousSeries{
|
|
|
|
YAxis: YAxisSecondary,
|
|
|
|
XValues: []float64{1.0, 2.0, 3.0, 4.0, 5.0},
|
|
|
|
YValues: []float64{10.0, 11.0, 12.0, 13.0, 14.0},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
xr2, yr2, yra2 := cSet.getRanges()
|
|
|
|
assert.Equal(9.8, xr2.Min)
|
|
|
|
assert.Equal(19.8, xr2.Max)
|
|
|
|
|
|
|
|
assert.Equal(9.9, yr2.Min)
|
|
|
|
assert.Equal(19.9, yr2.Max)
|
|
|
|
|
|
|
|
assert.Equal(9.7, yra2.Min)
|
|
|
|
assert.Equal(19.7, yra2.Max)
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestChartSingleSeries is more of a sanity check than anything.
|
2016-07-07 03:54:00 +02:00
|
|
|
func TestChartSingleSeries(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
now := time.Now()
|
|
|
|
c := Chart{
|
|
|
|
Title: "Hello!",
|
|
|
|
Width: 1024,
|
|
|
|
Height: 400,
|
2016-07-10 20:27:12 +02:00
|
|
|
YAxis: YAxis{
|
|
|
|
Range: Range{
|
|
|
|
Min: 0.0,
|
|
|
|
Max: 4.0,
|
|
|
|
},
|
2016-07-07 23:44:03 +02:00
|
|
|
},
|
2016-07-07 03:54:00 +02:00
|
|
|
Series: []Series{
|
|
|
|
TimeSeries{
|
2016-07-07 23:44:03 +02:00
|
|
|
Name: "goog",
|
2016-07-07 03:54:00 +02:00
|
|
|
XValues: []time.Time{now.AddDate(0, 0, -3), now.AddDate(0, 0, -2), now.AddDate(0, 0, -1)},
|
|
|
|
YValues: []float64{1.0, 2.0, 3.0},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
buffer := bytes.NewBuffer([]byte{})
|
|
|
|
c.Render(PNG, buffer)
|
|
|
|
assert.NotEmpty(buffer.Bytes())
|
|
|
|
}
|