From 63d4b0e2290fb0814a864805f9a39ef810e9365c Mon Sep 17 00:00:00 2001 From: vicanso Date: Sat, 12 Feb 2022 14:04:08 +0800 Subject: [PATCH] test: add test for mark line --- mark_line.go | 2 +- mark_line_test.go | 99 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 mark_line_test.go diff --git a/mark_line.go b/mark_line.go index e895131..18f7366 100644 --- a/mark_line.go +++ b/mark_line.go @@ -85,7 +85,7 @@ func markLineRender(opt *markLineRenderOption) { width := d.Box.Width() text := commafWithDigits(value) textBox := r.MeasureText(text) - d.makeLine(0, y, width) + d.makeLine(0, y, width-2) d.text(text, width, y+textBox.Height()>>1-2) } diff --git a/mark_line_test.go b/mark_line_test.go new file mode 100644 index 0000000..750ed6f --- /dev/null +++ b/mark_line_test.go @@ -0,0 +1,99 @@ +// 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 TestNewMarkLine(t *testing.T) { + assert := assert.New(t) + + markLine := NewMarkLine( + SeriesMarkDataTypeMax, + SeriesMarkDataTypeMin, + SeriesMarkDataTypeAverage, + ) + + assert.Equal(SeriesMarkLine{ + Data: []SeriesMarkLineData{ + { + Type: SeriesMarkDataTypeMax, + }, + { + Type: SeriesMarkDataTypeMin, + }, + { + Type: SeriesMarkDataTypeAverage, + }, + }, + }, markLine) +} + +func TestMarkLineRender(t *testing.T) { + assert := assert.New(t) + + d, err := NewDraw(DrawOption{ + Width: 400, + Height: 300, + }, PaddingOption(chart.Box{ + Left: 20, + Right: 20, + })) + assert.Nil(err) + f, _ := chart.GetDefaultFont() + + markLineRender(&markLineRenderOption{ + Draw: d, + FillColor: drawing.ColorBlack, + FontColor: drawing.ColorBlack, + StrokeColor: drawing.ColorBlack, + Font: f, + Series: &Series{ + MarkLine: NewMarkLine( + SeriesMarkDataTypeMax, + SeriesMarkDataTypeMin, + SeriesMarkDataTypeAverage, + ), + Data: NewSeriesDataFromValues([]float64{ + 1, + 3, + 5, + 7, + 9, + }), + }, + Range: &Range{ + Min: 0, + Max: 10, + Size: 200, + }, + }) + data, err := d.Bytes() + assert.Nil(err) + assert.Equal("\\n915", string(data)) +}