From da5e9505653d2242e1cbaa6332956a884156a74f Mon Sep 17 00:00:00 2001 From: vicanso Date: Sat, 12 Feb 2022 14:35:27 +0800 Subject: [PATCH] test: add test for bar chart --- bar_chart.go | 8 ++-- bar_chart_test.go | 96 ++++++++++++++++++++++++++++++++++++++++++++++ chart.go | 2 +- line_chart.go | 8 ++-- mark_line.go | 2 +- mark_line_test.go | 2 +- mark_point.go | 2 +- mark_point_test.go | 2 +- 8 files changed, 109 insertions(+), 13 deletions(-) create mode 100644 bar_chart_test.go diff --git a/bar_chart.go b/bar_chart.go index 6809a26..ac5a0a9 100644 --- a/bar_chart.go +++ b/bar_chart.go @@ -33,7 +33,7 @@ type barChartOption struct { Font *truetype.Font } -func barChartRender(opt barChartOption, result *basicRenderResult) ([]*markPointRenderOption, error) { +func barChartRender(opt barChartOption, result *basicRenderResult) ([]markPointRenderOption, error) { d, err := NewDraw(DrawOption{ Parent: result.d, @@ -67,7 +67,7 @@ func barChartRender(opt barChartOption, result *basicRenderResult) ([]*markPoint r := d.Render - markPointRenderOptions := make([]*markPointRenderOption, 0) + markPointRenderOptions := make([]markPointRenderOption, 0) for i, s := range opt.SeriesList { // 由于series是for range,为同一个数据,因此需要clone @@ -81,7 +81,7 @@ func barChartRender(opt barChartOption, result *basicRenderResult) ([]*markPoint } seriesColor := theme.GetSeriesColor(index) // mark line - markLineRender(&markLineRenderOption{ + markLineRender(markLineRenderOption{ Draw: d, FillColor: seriesColor, FontColor: theme.GetTextColor(), @@ -135,7 +135,7 @@ func barChartRender(opt barChartOption, result *basicRenderResult) ([]*markPoint d.text(text, x+(barWidth-textBox.Width())>>1, barMaxHeight-h-5) } - markPointRenderOptions = append(markPointRenderOptions, &markPointRenderOption{ + markPointRenderOptions = append(markPointRenderOptions, markPointRenderOption{ Draw: d, FillColor: seriesColor, Font: opt.Font, diff --git a/bar_chart_test.go b/bar_chart_test.go new file mode 100644 index 0000000..bca69d0 --- /dev/null +++ b/bar_chart_test.go @@ -0,0 +1,96 @@ +// MIT License + +// Copyright (c) 2022 Tree Xie + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package charts + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/wcharczuk/go-chart/v2" + "github.com/wcharczuk/go-chart/v2/drawing" +) + +func TestBarChartRender(t *testing.T) { + assert := assert.New(t) + + width := 400 + height := 300 + d, err := NewDraw(DrawOption{ + Width: width, + Height: height, + }) + assert.Nil(err) + + result := basicRenderResult{ + xRange: &Range{ + divideCount: 4, + Size: width, + Boundary: true, + }, + yRangeList: []*Range{ + { + divideCount: 6, + Max: 100, + Min: 0, + Size: height, + }, + }, + d: d, + } + f, _ := chart.GetDefaultFont() + + barChartRender(barChartOption{ + Font: f, + SeriesList: SeriesList{ + { + Label: SeriesLabel{ + Show: true, + Color: drawing.ColorBlue, + }, + Data: []SeriesData{ + { + Value: 20, + }, + { + Value: 60, + Style: chart.Style{ + FillColor: drawing.ColorRed, + }, + }, + { + Value: 90, + }, + }, + }, + NewSeriesFromValues([]float64{ + 80, + 30, + 70, + }), + }, + }, &result) + + data, err := d.Bytes() + assert.Nil(err) + assert.Equal("\\n206090", string(data)) +} diff --git a/chart.go b/chart.go index 91c9cae..1f31252 100644 --- a/chart.go +++ b/chart.go @@ -259,7 +259,7 @@ func Render(opt ChartOption) (*Draw, error) { if err != nil { return nil, err } - markPointRenderOptions := make([]*markPointRenderOption, 0) + markPointRenderOptions := make([]markPointRenderOption, 0) fns := []func() error{ // pie render func() error { diff --git a/line_chart.go b/line_chart.go index 53fde07..d2eb5e2 100644 --- a/line_chart.go +++ b/line_chart.go @@ -34,7 +34,7 @@ type lineChartOption struct { Font *truetype.Font } -func lineChartRender(opt lineChartOption, result *basicRenderResult) ([]*markPointRenderOption, error) { +func lineChartRender(opt lineChartOption, result *basicRenderResult) ([]markPointRenderOption, error) { theme := NewTheme(opt.Theme) @@ -51,7 +51,7 @@ func lineChartRender(opt lineChartOption, result *basicRenderResult) ([]*markPoi r := d.Render xRange := result.xRange - markPointRenderOptions := make([]*markPointRenderOption, 0) + markPointRenderOptions := make([]markPointRenderOption, 0) for i, s := range opt.SeriesList { // 由于series是for range,为同一个数据,因此需要clone // 后续需要使用,如mark point @@ -65,7 +65,7 @@ func lineChartRender(opt lineChartOption, result *basicRenderResult) ([]*markPoi yRange := result.getYRange(series.YAxisIndex) points := make([]Point, len(series.Data)) // mark line - markLineRender(&markLineRenderOption{ + markLineRender(markLineRenderOption{ Draw: d, FillColor: seriesColor, FontColor: theme.GetTextColor(), @@ -111,7 +111,7 @@ func lineChartRender(opt lineChartOption, result *basicRenderResult) ([]*markPoi DotFillColor: dotFillColor, }) // draw mark point - markPointRenderOptions = append(markPointRenderOptions, &markPointRenderOption{ + markPointRenderOptions = append(markPointRenderOptions, markPointRenderOption{ Draw: d, FillColor: seriesColor, Font: opt.Font, diff --git a/mark_line.go b/mark_line.go index b03df39..464fe71 100644 --- a/mark_line.go +++ b/mark_line.go @@ -50,7 +50,7 @@ type markLineRenderOption struct { Range *Range } -func markLineRender(opt *markLineRenderOption) { +func markLineRender(opt markLineRenderOption) { d := opt.Draw s := opt.Series if len(s.MarkLine.Data) == 0 { diff --git a/mark_line_test.go b/mark_line_test.go index 4930842..abb3308 100644 --- a/mark_line_test.go +++ b/mark_line_test.go @@ -67,7 +67,7 @@ func TestMarkLineRender(t *testing.T) { assert.Nil(err) f, _ := chart.GetDefaultFont() - markLineRender(&markLineRenderOption{ + markLineRender(markLineRenderOption{ Draw: d, FillColor: drawing.ColorBlack, FontColor: drawing.ColorBlack, diff --git a/mark_point.go b/mark_point.go index acecdd5..5fd34c4 100644 --- a/mark_point.go +++ b/mark_point.go @@ -48,7 +48,7 @@ type markPointRenderOption struct { Points []Point } -func markPointRender(opt *markPointRenderOption) { +func markPointRender(opt markPointRenderOption) { d := opt.Draw s := opt.Series if len(s.MarkPoint.Data) == 0 { diff --git a/mark_point_test.go b/mark_point_test.go index b2ea72f..2092bcf 100644 --- a/mark_point_test.go +++ b/mark_point_test.go @@ -68,7 +68,7 @@ func TestMarkPointRender(t *testing.T) { assert.Nil(err) f, _ := chart.GetDefaultFont() - markPointRender(&markPointRenderOption{ + markPointRender(markPointRenderOption{ Draw: d, FillColor: drawing.ColorBlack, Font: f,