1
2
3
4
5 package vgsvg_test
6
7 import (
8 "bytes"
9 "os"
10 "testing"
11
12 "gonum.org/v1/plot"
13 "gonum.org/v1/plot/cmpimg"
14 "gonum.org/v1/plot/plotter"
15 "gonum.org/v1/plot/vg"
16 "gonum.org/v1/plot/vg/draw"
17 "gonum.org/v1/plot/vg/vgsvg"
18 )
19
20 func TestSVG(t *testing.T) {
21 cmpimg.CheckPlot(Example, t, "scatter.svg")
22 }
23
24 func TestEmbedFonts(t *testing.T) {
25 fnt := plot.DefaultFont
26 defer func() {
27 plot.DefaultFont = fnt
28 }()
29
30 cmpimg.CheckPlot(Example_embedFonts, t, "embed_fonts.svg")
31 }
32
33 func TestStandardFonts(t *testing.T) {
34 fnt := plot.DefaultFont
35 defer func() {
36 plot.DefaultFont = fnt
37 }()
38
39 cmpimg.CheckPlot(Example_standardFonts, t, "standard_fonts.svg")
40 }
41
42 func TestNewWith(t *testing.T) {
43 p := plot.New()
44 p.Title.Text = "Scatter plot"
45 p.X.Label.Text = "X"
46 p.Y.Label.Text = "Y"
47
48 scatter, err := plotter.NewScatter(plotter.XYs{{X: 1, Y: 1}, {X: 0, Y: 1}, {X: 0, Y: 0}})
49 if err != nil {
50 t.Fatalf("could not create scatter: %v", err)
51 }
52 p.Add(scatter)
53
54 c := vgsvg.NewWith(vgsvg.UseWH(5*vg.Centimeter, 5*vg.Centimeter))
55 p.Draw(draw.New(c))
56
57 b := new(bytes.Buffer)
58 if _, err = c.WriteTo(b); err != nil {
59 t.Fatal(err)
60 }
61
62 want, err := os.ReadFile("testdata/scatter_golden.svg")
63 if err != nil {
64 t.Fatal(err)
65 }
66
67 ok, err := cmpimg.Equal("svg", b.Bytes(), want)
68 if err != nil {
69 t.Fatalf("could not compare images: %v", err)
70 }
71 if !ok {
72 t.Fatalf("images differ:\ngot:\n%s\nwant:\n%s\n", b.Bytes(), want)
73 }
74 }
75
76 func TestHtmlEscape(t *testing.T) {
77 p := plot.New()
78 p.Title.Text = "Scatter & line plot"
79 p.X.Label.Text = "X"
80 p.Y.Label.Text = "Y"
81
82 scatter, err := plotter.NewScatter(plotter.XYs{{X: 1, Y: 1}, {X: 0, Y: 1}, {X: 0, Y: 0}})
83 if err != nil {
84 t.Fatalf("could not create scatter: %v", err)
85 }
86 p.Add(scatter)
87
88 line, err := plotter.NewLine(plotter.XYs{{X: 1, Y: 1}, {X: 0, Y: 1}, {X: 0, Y: 0}})
89 if err != nil {
90 t.Fatalf("could not create scatter: %v", err)
91 }
92 line.Width = 0.5
93 p.Add(line)
94
95 c := vgsvg.NewWith(vgsvg.UseWH(5*vg.Centimeter, 5*vg.Centimeter))
96 p.Draw(draw.New(c))
97
98 b := new(bytes.Buffer)
99 if _, err = c.WriteTo(b); err != nil {
100 t.Fatal(err)
101 }
102
103 if *cmpimg.GenerateTestData {
104
105 err = os.WriteFile("testdata/scatter_line_golden.svg", b.Bytes(), 0o644)
106 if err != nil {
107 t.Fatal(err)
108 }
109 return
110 }
111
112 want, err := os.ReadFile("testdata/scatter_line_golden.svg")
113 if err != nil {
114 t.Fatal(err)
115 }
116
117 ok, err := cmpimg.Equal("svg", b.Bytes(), want)
118 if err != nil {
119 t.Fatalf("could not compare images: %v", err)
120 }
121 if !ok {
122 t.Fatalf("images differ:\ngot:\n%s\nwant:\n%s\n", b.Bytes(), want)
123 }
124 }
125
View as plain text