const { TickerPlugin, UPDATE_PRIORITY, Ticker } = require('../');
describe('PIXI.TickerPlugin', function ()
{
it('should not start application before calling start method if options.autoStart is false', function (done)
{
const app = {};
TickerPlugin.init.call(app, { autoStart: false });
expect(app.ticker).to.be.instanceof(Ticker);
expect(app.ticker.started).to.be.false;
app.start();
app.ticker.addOnce(() =>
{
TickerPlugin.destroy.call(app);
done();
});
});
describe('set ticker', function ()
{
before(function ()
{
this.app = {
render()
{
// do nothing
},
};
TickerPlugin.init.call(this.app);
/* remove default listener to prevent uncaught exception */
this.app._ticker.remove(this.app.render, this.app);
});
after(function ()
{
TickerPlugin.destroy.call(this.app);
});
it('should assign ticker object', function ()
{
const ticker = { add: sinon.spy() };
const _ticker = { remove: sinon.spy() };
this.app._ticker = _ticker;
this.app.ticker = ticker;
expect(_ticker.remove).to.be.calledOnce;
expect(_ticker.remove.args[0][0]).to.be.equal(this.app.render);
expect(_ticker.remove.args[0][1]).to.be.equal(this.app);
expect(this.app._ticker).to.be.equal(ticker);
expect(ticker.add).to.be.calledOnce;
expect(ticker.add.args[0][0]).to.be.equal(this.app.render);
expect(ticker.add.args[0][1]).to.be.equal(this.app);
expect(ticker.add.args[0][2]).to.be.equal(UPDATE_PRIORITY.LOW);
});
it('should assign ticker if no ticker', function ()
{
const ticker = { add: sinon.spy() };
this.app._ticker = null;
this.app.ticker = ticker;
expect(this.app._ticker).to.be.equal(ticker);
expect(ticker.add).to.be.calledOnce;
expect(ticker.add.args[0][0]).to.be.equal(this.app.render);
expect(ticker.add.args[0][1]).to.be.equal(this.app);
expect(ticker.add.args[0][2]).to.be.equal(UPDATE_PRIORITY.LOW);
});
it('should assign null ticker', function ()
{
const _ticker = { remove: sinon.spy() };
this.app._ticker = _ticker;
this.app.ticker = null;
expect(_ticker.remove).to.be.calledOnce;
expect(_ticker.remove.args[0][0]).to.be.equal(this.app.render);
expect(_ticker.remove.args[0][1]).to.be.equal(this.app);
expect(this.app._ticker).to.be.null;
});
});
});