handle zero values with error.

This commit is contained in:
Will Charczuk 2017-01-13 14:07:42 -08:00
parent 7163f89845
commit 7ae42ee2e1
3 changed files with 63 additions and 10 deletions

View file

@ -2,6 +2,7 @@ package chart
import (
"errors"
"fmt"
"io"
"github.com/golang/freetype/truetype"
@ -88,7 +89,10 @@ func (pc PieChart) Render(rp RendererProvider, w io.Writer) error {
pc.drawBackground(r)
pc.drawCanvas(r, canvasBox)
finalValues := pc.finalizeValues(pc.Values)
finalValues, err := pc.finalizeValues(pc.Values)
if err != nil {
return err
}
pc.drawSlices(r, canvasBox, finalValues)
pc.drawTitle(r)
for _, a := range pc.Elements {
@ -158,8 +162,12 @@ func (pc PieChart) drawSlices(r Renderer, canvasBox Box, values []Value) {
}
}
func (pc PieChart) finalizeValues(values []Value) []Value {
return Values(values).Normalize()
func (pc PieChart) finalizeValues(values []Value) ([]Value, error) {
finalValues := Values(values).Normalize()
if len(finalValues) == 0 {
return nil, fmt.Errorf("pie chart must contain at least (1) non-zero value")
}
return finalValues, nil
}
func (pc PieChart) getDefaultCanvasBox() Box {