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);
});
});
});