1 package d2cli
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestOutputFormat(t *testing.T) {
10 type testCase struct {
11 outputPath string
12 extension exportExtension
13 supportsDarkTheme bool
14 supportsAnimation bool
15 requiresAnimationInterval bool
16 requiresPngRender bool
17 }
18 testCases := []testCase{
19 {
20 outputPath: "/out.svg",
21 extension: SVG,
22 supportsDarkTheme: true,
23 supportsAnimation: true,
24 requiresAnimationInterval: false,
25 requiresPngRender: false,
26 },
27 {
28
29 outputPath: "/out",
30 extension: SVG,
31 supportsDarkTheme: true,
32 supportsAnimation: true,
33 requiresAnimationInterval: false,
34 requiresPngRender: false,
35 },
36 {
37 outputPath: "-",
38 extension: SVG,
39 supportsDarkTheme: true,
40 supportsAnimation: true,
41 requiresAnimationInterval: false,
42 requiresPngRender: false,
43 },
44 {
45 outputPath: "/out.png",
46 extension: PNG,
47 supportsDarkTheme: false,
48 supportsAnimation: false,
49 requiresAnimationInterval: false,
50 requiresPngRender: true,
51 },
52 {
53 outputPath: "/out.pptx",
54 extension: PPTX,
55 supportsDarkTheme: false,
56 supportsAnimation: false,
57 requiresAnimationInterval: false,
58 requiresPngRender: true,
59 },
60 {
61 outputPath: "/out.pdf",
62 extension: PDF,
63 supportsDarkTheme: false,
64 supportsAnimation: false,
65 requiresAnimationInterval: false,
66 requiresPngRender: true,
67 },
68 {
69 outputPath: "/out.gif",
70 extension: GIF,
71 supportsDarkTheme: false,
72 supportsAnimation: true,
73 requiresAnimationInterval: true,
74 requiresPngRender: true,
75 },
76 }
77
78 for _, tc := range testCases {
79 tc := tc
80 t.Run(tc.outputPath, func(t *testing.T) {
81 extension := getExportExtension(tc.outputPath)
82 assert.Equal(t, tc.extension, extension)
83 assert.Equal(t, tc.supportsAnimation, extension.supportsAnimation())
84 assert.Equal(t, tc.supportsDarkTheme, extension.supportsDarkTheme())
85 assert.Equal(t, tc.requiresPngRender, extension.requiresPNGRenderer())
86 })
87 }
88 }
89
View as plain text