From 196620183fd20ca42b363c5f947af1dc979f888f Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Sat, 19 Aug 2023 17:46:59 -0700 Subject: Fixes #172 (#4220) Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> --- test/js/third_party/resvg/bbox.test.js | 53 ++++++++++++++++++++++++++++++++++ test/js/third_party/resvg/package.json | 6 ++++ 2 files changed, 59 insertions(+) create mode 100644 test/js/third_party/resvg/bbox.test.js create mode 100644 test/js/third_party/resvg/package.json (limited to 'test/js') diff --git a/test/js/third_party/resvg/bbox.test.js b/test/js/third_party/resvg/bbox.test.js new file mode 100644 index 000000000..d80e99cdd --- /dev/null +++ b/test/js/third_party/resvg/bbox.test.js @@ -0,0 +1,53 @@ +import { test, expect } from "bun:test"; +import { Resvg } from "@resvg/resvg-js"; + +const svg = ` + + + + +`; +for (let Class of [ + Resvg, + // Test that subclasses work as well. + class ResvgSubclass extends Resvg { + constructor(...args) { + super(...args); + } + iShouldExist() { + return true; + } + }, +]) { + test(`bbox ${Class.name}`, () => { + const opts = { + fitTo: { + mode: "width", + value: 500, + }, + font: { + loadSystemFonts: false, + }, + }; + + const resvg = new Class(svg, opts); + const bbox = resvg.getBBox(); + + expect(resvg.width).toBe(180); + expect(resvg.height).toBe(260); + + if (bbox) resvg.cropByBBox(bbox); + const pngData = resvg.render(); + + expect(bbox.width).toBe(112.20712208389321); + expect(bbox.height).toBe(81); + + expect(pngData.width).toBe(500); + expect(pngData.height).toBe(362); + + if (Class !== Resvg) { + expect(resvg).toHaveProperty("iShouldExist"); + expect(resvg.iShouldExist()).toBeTrue(); + } + }); +} diff --git a/test/js/third_party/resvg/package.json b/test/js/third_party/resvg/package.json new file mode 100644 index 000000000..932f36221 --- /dev/null +++ b/test/js/third_party/resvg/package.json @@ -0,0 +1,6 @@ +{ + "name": "bun-integration-test-resvg", + "dependencies": { + "@resvg/resvg-js": "2.4.1" + } +} -- cgit v1.2.3