Newer
Older
pixi.js / packages / core / test / VideoResource.js
const { resources } = require('../');
const { VideoResource } = resources;
const path = require('path');

describe('PIXI.resources.VideoResource', function ()
{
    before(function ()
    {
        this.videoUrl = path.resolve(__dirname, 'resources', 'small.mp4');
    });

    it('should create new resource', function ()
    {
        const resource = new VideoResource(this.videoUrl, { autoLoad: false });

        expect(resource.width).to.equal(0);
        expect(resource.height).to.equal(0);
        expect(resource.valid).to.be.false;
        expect(resource.source).to.be.instanceof(HTMLVideoElement);

        resource.destroy();
    });

    it('should load new resource', function ()
    {
        const resource = new VideoResource(this.videoUrl, {
            autoLoad: false,
            autoPlay: false,
        });

        return resource.load().then((res) =>
        {
            expect(res).to.equal(resource);
            expect(res.width).to.equal(560);
            expect(res.height).to.equal(320);
            expect(res.valid).to.be.true;
            resource.destroy();
        });
    });

    it('should find correct video extension from Url', function ()
    {
        const resource = new VideoResource('https://example.org/video.webm', {
            autoLoad: false,
            autoPlay: false,
        });

        expect(resource.source.firstChild.type).to.be.equals('video/webm');

        resource.destroy();
    });

    it('should get video extension without being thrown by query string', function ()
    {
        const resource = new VideoResource('/test.mp4?123...', {
            autoLoad: false,
            autoPlay: false,
        });

        expect(resource.source.firstChild.type).to.be.equals('video/mp4');

        resource.destroy();
    });

    it('should respect the updateFPS settings property and getter / setter', function ()
    {
        const resource = new VideoResource(this.videoUrl, {
            autoLoad: false,
            autoPlay: false,
            updateFPS: 30,
        });

        return resource.load().then((res) =>
        {
            expect(res).to.equal(resource);
            expect(res.updateFPS).to.equal(30);
            res.updateFPS = 20;
            expect(res.updateFPS).to.equal(20);
            resource.destroy();
        });
    });
});