// 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 ( "fmt" "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{ 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() markPointOptions, err := barChartRender(barChartOption{ Font: f, SeriesList: SeriesList{ { Label: SeriesLabel{ Show: true, Color: drawing.ColorBlue, }, MarkLine: NewMarkLine( SeriesMarkDataTypeMin, ), Data: []SeriesData{ { Value: 20, }, { Value: 60, Style: chart.Style{ FillColor: drawing.ColorRed, }, }, { Value: 90, }, }, }, NewSeriesFromValues([]float64{ 80, 30, 70, }), }, }, &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) fmt.Println(string(data)) assert.Equal("\\n20206090", string(data)) }