package chart import ( "bytes" "image" _ "image/png" "testing" "ukrrs.com/mopac/pdf/internal/markdown" ) func TestBarPNG(t *testing.T) { c := &markdown.Chart{ Type: "bar", Title: "Revenue", Unit: "$K", Labels: []string{"Q1", "Q2", "Q3"}, Values: []float64{10, 20, 15}, } png, err := Bar(c) if err != nil { t.Fatalf("render: %v", err) } if !bytes.HasPrefix(png, []byte{0x89, 'P', 'N', 'G'}) { t.Fatalf("not a PNG: % x", png[:4]) } img, _, err := image.Decode(bytes.NewReader(png)) if err != nil { t.Fatalf("decode: %v", err) } b := img.Bounds() if b.Dx() < 300 || b.Dy() < 200 { t.Fatalf("unexpected dimensions %dx%d", b.Dx(), b.Dy()) } } func TestBarRejectsUnknownType(t *testing.T) { c := &markdown.Chart{Type: "pie", Labels: []string{"a"}, Values: []float64{1}} if _, err := Bar(c); err == nil { t.Fatal("pie must be rejected in v0") } } func TestBarRejectsEmpty(t *testing.T) { if _, err := Bar(nil); err == nil { t.Fatal("nil chart must be rejected") } c := &markdown.Chart{Type: "bar"} if _, err := Bar(c); err == nil { t.Fatal("chart without data must be rejected") } }