const { resources } = require('../'); const { SVGResource } = resources; const fs = require('fs'); const path = require('path'); describe('PIXI.resources.SVGResource', function () { before(function () { this.resources = path.join(__dirname, 'resources'); }); describe('constructor', function () { it('should create new resource from data-uri', function (done) { const url = path.join(this.resources, 'svg-base64.txt'); const buffer = fs.readFileSync(url, 'utf8'); const resource = new SVGResource(buffer, { autoLoad: false }); resource.load().then(function () { expect(resource.width).to.equal(100); expect(resource.height).to.equal(100); done(); }); }); it('should create resource from SVG URL', function (done) { const resource = new SVGResource( path.join(this.resources, 'heart.svg'), { autoLoad: false } ); resource.load().then(function () { expect(resource.width).to.equal(100); expect(resource.height).to.equal(100); done(); }); }); it('should create resource from inline SVG', function (done) { const url = path.join(this.resources, 'heart.svg'); const buffer = fs.readFileSync(url, 'utf8'); const resource = new SVGResource(buffer, { autoLoad: false }); resource.load().then(function () { expect(resource.width).to.equal(100); expect(resource.height).to.equal(100); done(); }); }); }); describe('getSize', function () { it('should exist', function () { expect(SVGResource.getSize) .to.be.a('function'); }); it('should return a size object with width and height from an SVG string', function () { const svgSize = SVGResource.getSize('<svg height="32" width="64"></svg>'); expect(svgSize) .to.be.an('object'); expect(svgSize.width) .to.equal(64); expect(svgSize.height) .to.equal(32); }); it('should return a size object from an SVG string with inverted quotes', function () { const svgSize = SVGResource.getSize("<svg height='32' width='64'></svg>"); // eslint-disable-line quotes expect(svgSize) .to.be.an('object'); expect(svgSize.width) .to.equal(64); expect(svgSize.height) .to.equal(32); }); it('should work with px values', function () { const svgSize = SVGResource.getSize('<svg height="32px" width="64px"></svg>'); expect(svgSize) .to.be.an('object'); expect(svgSize.width) .to.equal(64); expect(svgSize.height) .to.equal(32); }); it('should return an empty object when width and/or height is missing', function () { const svgSize = SVGResource.getSize('<svg width="64"></svg>'); expect(Object.keys(svgSize).length) .to.equal(0); }); }); });