Newer
Older
pixi.js / packages / core / test / Renderer.js
@Matt Karl Matt Karl on 9 Jan 2019 2 KB Enables WebGL test on Travis (#5344)
const { Renderer } = require('../');
const { settings } = require('@pixi/settings');
const { ENV } = require('@pixi/constants');
const { skipHello } = require('@pixi/utils');

skipHello();

describe('PIXI.Renderer', function ()
{
    it('setting option legacy should disable VAOs and SPRITE_MAX_TEXTURES', function ()
    {
        settings.PREFER_ENV = ENV.WEBGL_LEGACY;
        const renderer = new Renderer(1, 1);

        try
        {
            expect(renderer.geometry.hasVao).to.equal(false);
            // expect(renderer.plugins.sprite.MAX_TEXTURES).to.equal(1);
        }
        finally
        {
            renderer.destroy();
        }
        settings.PREFER_ENV = ENV.WEBGL2;
    });

    it('should allow clear() to work despite no containers added to the renderer', function ()
    {
        const renderer = new Renderer(1, 1);

        try
        {
            renderer.clear();
        }
        finally
        {
            renderer.destroy();
        }
    });

    describe('.setObjectRenderer()', function ()
    {
        before(function ()
        {
            this.renderer = new Renderer();
        });

        beforeEach(function ()
        {
            this.curRenderer = {
                start: sinon.spy(),
                stop: sinon.spy(),
            };
            this.objRenderer = {
                start: sinon.spy(),
                stop: sinon.spy(),
            };
            this.renderer.batch.currentRenderer = this.curRenderer;
        });

        after(function ()
        {
            this.renderer.destroy();
            this.renderer = null;
            this.curRenderer = null;
            this.objRenderer = null;
        });

        it('should set objectRenderer as new current renderer', function ()
        {
            this.renderer.batch.setObjectRenderer(this.objRenderer);
            expect(this.curRenderer.stop).to.be.calledOnce;
            expect(this.renderer.batch.currentRenderer).to.be.equal(this.objRenderer);
            expect(this.objRenderer.start).to.be.calledOnce;
        });

        it('should do nothing if objectRenderer is already used as current', function ()
        {
            this.renderer.batch.setObjectRenderer(this.curRenderer);
            expect(this.renderer.batch.currentRenderer).to.be.equal(this.curRenderer);
            expect(this.curRenderer.stop).to.not.be.called;
            expect(this.curRenderer.start).to.not.be.called;
        });
    });
});