...

Source file src/oss.terrastruct.com/d2/d2cli/export_test.go

Documentation: oss.terrastruct.com/d2/d2cli

     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  			// assumes SVG by default
    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