| package scrap |
| |
| import ( |
| "bytes" |
| "testing" |
| |
| "github.com/stretchr/testify/require" |
| "go.skia.org/infra/go/testutils/unittest" |
| ) |
| |
| func TestTemplateExpand_SVGToCPP_Success(t *testing.T) { |
| unittest.SmallTest(t) |
| tmplMap, err := loadTemplates() |
| require.NoError(t, err) |
| var b bytes.Buffer |
| body := ScrapBody{ |
| Type: SVG, |
| Body: "<svg> \n</svg>", |
| } |
| err = tmplMap[CPP][SVG].Execute(&b, body) |
| require.NoError(t, err) |
| expected := `void draw(SkCanvas* canvas) { |
| const char * svg = |
| "<svg> \n" |
| "</svg>"; |
| |
| sk_sp<SkData> data(SkData::MakeWithoutCopy(svg, strlen(svg))); |
| if (!data) { |
| SkDebugf("Failed to load SVG."); |
| return; |
| } |
| |
| SkMemoryStream stream(std::move(data)); |
| sk_sp<SkSVGDOM> svgDom = SkSVGDOM::MakeFromStream(stream); |
| if (!svgDom) { |
| SkDebugf("Failed to parse SVG."); |
| return; |
| } |
| |
| // Use the intrinsic SVG size if available, otherwise fall back to a default value. |
| static const SkSize kDefaultContainerSize = SkSize::Make(128, 128); |
| if (svgDom->containerSize().isEmpty()) { |
| svgDom->setContainerSize(kDefaultContainerSize); |
| } |
| |
| svgDom->render(canvas); |
| }` |
| require.Equal(t, expected, b.String()) |
| } |