Newer
Older
pixi.js / test / core / WebGLRenderer.js
@Sergei Chipiga Sergei Chipiga on 24 May 2018 2 KB Add tests for WebGLRenderer (#4748)
'use strict';

const withGL = require('../withGL');

describe('PIXI.WebGLRenderer', function ()
{
    describe('instance', function ()
    {
        if (withGL())
        {
            afterEach(function ()
            {
                this.renderer.destroy();
            });

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

        it('setting option legacy should disable VAOs and SPRITE_MAX_TEXTURES', withGL(function ()
        {
            this.renderer = new PIXI.WebGLRenderer(1, 1, { legacy: true });

            expect(PIXI.glCore.VertexArrayObject.FORCE_NATIVE).to.equal(true);
            expect(this.renderer.plugins.sprite.MAX_TEXTURES).to.equal(1);
        }));

        it('should allow clear() to work despite no containers added to the renderer', withGL(function ()
        {
            this.renderer = new PIXI.WebGLRenderer(1, 1);
            this.renderer.clear();
        }));
    });

    describe('.setObjectRenderer()', function ()
    {
        if (withGL())
        {
            before(function ()
            {
                this.renderer = new PIXI.WebGLRenderer();
            });

            beforeEach(function ()
            {
                this.curRenderer = {
                    start: sinon.spy(),
                    stop: sinon.spy(),
                };
                this.objRenderer = {
                    start: sinon.spy(),
                    stop: sinon.spy(),
                };
                this.renderer.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', withGL(function ()
        {
            this.renderer.setObjectRenderer(this.objRenderer);
            expect(this.curRenderer.stop).to.be.calledOnce;
            expect(this.renderer.currentRenderer).to.be.equal(this.objRenderer);
            expect(this.objRenderer.start).to.be.calledOnce;
        }));

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