diff --git a/bar_chart_test.go b/bar_chart_test.go index bca69d0..2351e1a 100644 --- a/bar_chart_test.go +++ b/bar_chart_test.go @@ -23,6 +23,7 @@ package charts import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -43,6 +44,8 @@ func TestBarChartRender(t *testing.T) { result := basicRenderResult{ xRange: &Range{ + Min: 0, + Max: 4, divideCount: 4, Size: width, Boundary: true, @@ -59,7 +62,7 @@ func TestBarChartRender(t *testing.T) { } f, _ := chart.GetDefaultFont() - barChartRender(barChartOption{ + markPointOptions, err := barChartRender(barChartOption{ Font: f, SeriesList: SeriesList{ { @@ -67,6 +70,9 @@ func TestBarChartRender(t *testing.T) { Show: true, Color: drawing.ColorBlue, }, + MarkLine: NewMarkLine( + SeriesMarkDataTypeMin, + ), Data: []SeriesData{ { Value: 20, @@ -89,8 +95,39 @@ func TestBarChartRender(t *testing.T) { }), }, }, &result) + assert.Nil(err) + assert.Equal(2, len(markPointOptions)) + assert.Equal([]Point{ + { + X: 28, + Y: 240, + }, + { + X: 128, + Y: 120, + }, + { + X: 228, + Y: 30, + }, + }, markPointOptions[0].Points) + assert.Equal([]Point{ + { + X: 70, + Y: 60, + }, + { + X: 170, + Y: 210, + }, + { + X: 270, + Y: 90, + }, + }, markPointOptions[1].Points) data, err := d.Bytes() assert.Nil(err) - assert.Equal("\\n206090", string(data)) + fmt.Println(string(data)) + assert.Equal("\\n20206090", string(data)) } diff --git a/line_chart_test.go b/line_chart_test.go new file mode 100644 index 0000000..62d0a40 --- /dev/null +++ b/line_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 TestLineChartRender(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{ + Min: 0, + Max: 4, + divideCount: 4, + Size: width, + Boundary: true, + }, + yRangeList: []*Range{ + { + divideCount: 6, + Max: 100, + Min: 0, + Size: height, + }, + }, + d: d, + } + f, _ := chart.GetDefaultFont() + lineChartRender(lineChartOption{ + Font: f, + SeriesList: SeriesList{ + { + Label: SeriesLabel{ + Show: true, + Color: drawing.ColorBlue, + }, + MarkLine: NewMarkLine( + SeriesMarkDataTypeAverage, + ), + Data: []SeriesData{ + { + Value: 20, + }, + { + Value: 60, + }, + { + Value: 90, + }, + }, + }, + NewSeriesFromValues([]float64{ + 40, + 60, + 70, + }), + }, + }, &result) + data, err := d.Bytes() + assert.Nil(err) + assert.Equal("\\n56.66206090", string(data)) +}